Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase存储在下载过程中处理网络中断_Android_Download_Firebase_Interruption_Firebase Storage - Fatal编程技术网

Android Firebase存储在下载过程中处理网络中断

Android Firebase存储在下载过程中处理网络中断,android,download,firebase,interruption,firebase-storage,Android,Download,Firebase,Interruption,Firebase Storage,我正在尝试从firebase存储下载一些文件。当有稳定的互联网连接时,它工作得很好。但是,如果在下载内容的中途失去了互联网连接,它只会继续尝试下载内容。如何检测是否没有下载内容 我已经实现了StorageReference的onprogeslistener。但是,我不知道如何利用它来检测下载是否没有进展 new OnProgressListener<FileDownloadTask.TaskSnapshot>() { @Override public void onP

我正在尝试从firebase存储下载一些文件。当有稳定的互联网连接时,它工作得很好。但是,如果在下载内容的中途失去了互联网连接,它只会继续尝试下载内容。如何检测是否没有下载内容

我已经实现了
StorageReference
onprogeslistener
。但是,我不知道如何利用它来检测下载是否没有进展

new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
    @Override
    public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
        //What to do with the taskSnapshot to detect if there are no progress in the download?
    }
};
new-OnProgressListener(){
@凌驾
public void onProgress(FileDownloadTask.TaskSnapshot TaskSnapshot){
//如何处理taskSnapshot以检测下载过程中是否没有进展?
}
};

上载、下载和其他操作旨在自动重试,并保护您免受临时中断。 有一个可配置的超时,如果在此时间内无法传输数据包,则该超时将结束(失败)操作。 您可以使用以下设置:

//if we get interrupted for more than 2 seconds, fail the operation.
FirebaseStorage.getInstance().setMaxUploadRetryTimeMillis(2000);
上载、下载和其他操作有不同的超时

使用上载,即使上载被中断,也可以尝试从停止的位置(如果源文件是文件)恢复上载。为此,您需要从上载任务中获取“上载会话uri”

task.addOnFailureListener(new OnFailureListener {
  @Override
  public void OnFailure(Exception error) {
     Uri uploadsession = task.getSnapshot().getUploadSessionUri();
     //if you want to retry later, feed this uri as the last parameter
     // to putFile(uri, metadata, uri)
  }
}

默认超时时间为上传/下载10分钟,其他操作(如getDownloadUrl)2分钟。对于2017年偶然发现这一点的任何人,以下几点对我很有用:myRef.storage.maxDownloadRetryTime=2在addOnFailureListenr中显示空会话Uri。尝试从onProgress listener@ajaydhadhal获取“uploadSessionUri”