浏览 SDKs · Android
SDKsAndroid

跟踪文件上传进度

使用 Android SDK 的 OnPutFileListener 跟踪单次文件上传任务。

复制

Android SDK 不设置全局文件上传 listener。每次调用 uploadFile() 时传入一个 OnPutFileListener,由该 listener 接收当前上传任务的进度、分片状态和完成信息。

OnPutFileListener uploadListener = new OnPutFileListener() {
    @Override
    public void open(long size) {
        initializeUploadProgress(uploadTaskID, size);
    }

    @Override
    public void uploadID(String id) {
        bindSdkUploadID(uploadTaskID, id);
    }

    @Override
    public void uploadComplete(long fileSize, long uploadedSize, long storageSize) {
        updateUploadProgress(uploadTaskID, uploadedSize, fileSize);
    }

    @Override
    public void uploadPartComplete(long partNumber, long partSize, String partHash) {
        markPartComplete(uploadTaskID, partNumber, partSize, partHash);
    }

    @Override
    public void complete(long size, String url, long type) {
        completeUpload(uploadTaskID, size, url, type);
    }
};

OpenIMClient.getInstance().uploadFile(resultCallback, uploadListener, putArgs);

open() 可用于初始化总大小,uploadID() 返回 SDK 上传任务标识,uploadComplete() 提供上传过程数据,uploadPartComplete() 表示一个分片已经完成,complete() 返回最终大小、远端 URL 和资源类型。只有业务需要展示分片细节时才处理分片回调;普通进度条通常只需要过程回调和最终完成回调。

业务层仍应生成自己的稳定 uploadTaskID,并在 listener 闭包中关联界面状态。SDK 上传 ID、文件名和数组位置都不应代替业务任务主键。每个上传任务使用独立 listener;页面或账号状态销毁后应停止向旧状态分发回调。

完整的参数构造和错误处理见上传文件