8

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 は効果がないようです

ファイルダウンロードの再開機能に取り組む方法について何か考えはありますか?

4

1 に答える 1