作者:飞松安步当车9_U | 来源:互联网 | 2023-02-10 15:26
我有从Firebase存储下载文件的基本工作代码.
String key = "gs://.../test.jpg";
File file = new File(getCacheDir() + File.separator + "test.jpg");
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference gsRef = storage.getReferenceFromUrl(key);
gsRef.getFile(file)
.addOnSuccessListener(new OnSuccessListener()
{
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot)
{
Log.d("APP", "onSuccess");
}
}).addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception exception)
{
Log.d("APP", "onFailure: ", exception);
}
});
但是,如果在设备未连接到Internet时执行上述代码,则onFailure
最终触发事件前需要大约10分钟.在此期间,日志填满了重复的重试:
02-27 21:41:07.203 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <> ]
02-27 21:41:08.244 12954-13288/com.example.test W/ExponenentialBackoff: network unavailable, sleeping.
02-27 21:41:08.294 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <> ]
02-27 21:41:09.405 12954-13288/com.example.test W/ExponenentialBackoff: network unavailable, sleeping.
02-27 21:41:09.485 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <> ]
有没有办法可以缩短(自定义)重试周期并onFailure
更快地触发事件?
1> Mike McDonal..:
是的,您可以使用以下setMaximum{OPERATION}RetryTimeMillis()
方法配置上载,下载和其他操作的超时:
FirebaseStorage storage = FirebaseStorage.getInstance();
storage.setMaxDownloadRetryTimeMillis(60000); // wait 1 min for downloads
storage.setMaxOperationRetryTimeMillis(10000); // wait 10s for normal ops
storage.setMaxUploadRetryTimeMillis(120000); // wait 2 mins for uploads
有关更多信息,请参阅参考文档,