Android Firebase存储在下载过程中处理网络中断
我正在尝试从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
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”