Firebase Android:暂停/恢复上载任务导致文件未完全上载

Firebase Android:暂停/恢复上载任务导致文件未完全上载,android,firebase,file,uri,firebase-storage,Android,Firebase,File,Uri,Firebase Storage,我有一个简单的UploadTask对象,它使用Firebase存储,允许我将照片/视频上传到此存储 根据文档,我添加了一个pause()+resume()逻辑,效果很好。 我正在从OnProgressListener()保存会话URI 当我使用pause()/resume()方法(通过单击简单ImageView中的元素)进行“播放”测试时,有时会导致上载成功,并且文件在Firebase存储中没有达到其完整大小,如下所示: 但是上传成功了! 有什么办法解决这个问题吗 编辑: 以下是处理会话URI

我有一个简单的
UploadTask
对象,它使用Firebase存储,允许我将照片/视频上传到此存储

根据文档,我添加了一个pause()+resume()逻辑,效果很好。 我正在从
OnProgressListener()
保存会话URI

当我使用pause()/resume()方法(通过单击简单ImageView中的元素)进行“播放”测试时,有时会导致上载成功,并且文件在Firebase存储中没有达到其完整大小,如下所示:

但是上传成功了! 有什么办法解决这个问题吗

编辑:

以下是处理
会话URI
保存的代码:

private void saveUriSession(UploadTask.TaskSnapshot taskSnapshot, Post post) {
        if (taskSnapshot.getUploadSessionUri() != null && !isSessionUriRegistered(post.getPostID())) {
            Log.d(TAG, "saveUriSession: saving session.");
            saveSharedPreference.setUriSession(taskSnapshot.getUploadSessionUri().toString(), post);
        }
    }

    public Boolean isSessionUriRegistered(String uid) {
        Log.d(TAG, "isSessionUriRegistered: " + saveSharedPreference.getUriSession(uid));
        return !saveSharedPreference.getUriSession(uid).toString().equals("");
    }
这是用于恢复/暂停上载的代码:

// Current upload task
private UploadTask uploadTask;

private UploadTask uploadImage(Post post) {
        Log.d(TAG, "uploadImage: compressing image...");
        byte[] bytes = imageManagerBitmap.getBytesFromBitmap(post.getFile(), 100);
        uploadTask = firebaseAPI.updatePostImage(post.getPostID(), bytes);
        return uploadTask;
    }

public void uploadFileToDB(Post post) {
  uploadImage(post).addOnProgressListener(taskSnapshot -> {
                    // If the session is not already saved we save it
                    saveUriSession(taskSnapshot, post);
                    if (taskSnapshot.getTotalByteCount() != 0) {
                        long progressCount = 100 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount();
                        //progressBytes.setValue(progressCount);
                    }
                });
}

public Boolean pauseUpload() {
        if (uploadTask != null) {
            return uploadTask.pause();
        }
        return false;
    }

public Boolean resumeUpload() {
        if (uploadTask != null) {
            return uploadTask.resume();
        }
        return false;
    }

ImageView
onClickListener()
方法上调用了
resumeUpload()
pauseUpload()
方法,该方法使用一个处理开关的布尔值。

请编辑问题以显示未按预期方式工作的代码。代码很好,我只是怀疑Firebase终止上载会话,因为调用
resume()
方法时
字节数错误。
SessionUri
仅在用户销毁应用程序并重新启动应用程序时使用,这没有问题。请编辑问题以显示未按预期方式工作的代码。代码很好,我只是怀疑Firebase终止上载会话,因为调用
resume()
方法时
字节数错误。
SessionUri
仅在用户销毁应用程序并重新启动时使用,这没有问题。