firebase ストレージを使用して大きなファイルをダウンロードする必要があります。ユーザーがダウンロード中にネットワークの中断に直面する可能性があり、このダウンロード タスクを再開できるようにしたいと考えています。
FileDownloadTask downloadTask = firebaseStorage.getReferenceFromUrl(url).getFile(localFile);
downloadTask.addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.v(TAG, "progress" + taskSnapshot.getBytesTransferred());;
}
});
downloadTask.addOnFailureListener(e -> {
CustomLogger.v(TAG, "downloadTask, on Failed: " + courseId);
deleteFilesAfterError(courseId);
});
downloadTask.addOnPausedListener(taskSnapshot
-> CustomLogger.v(TAG, "downloadTask, on paused: " + courseId));
最後の 2 つのリスナーは呼び出されません。完全なリスナーをセットアップすると:
downloadTask.addOnCompleteListener()
アプリがクラッシュします。
セットアップしても:
firebaseStorage.setMaxDownloadRetryTimeMillis(2000);
ダウンロードの途中でネットワークをオフにすると、downloadTask 失敗リスナーがトリガーされません。タスクはまだ「進行中」のようですが、データはダウンロードされていません。この機能に関するドキュメントは貧弱です。どのように実装すればよいですか?
- 失敗リスナーが壊れているようです
- completeListener を追加するとアプリがクラッシュする
- firebaseStorage.setMaxDownloadRetryTimeMillis は効果がないようです
ファイルダウンロードの再開機能に取り組む方法について何か考えはありますか?