Мне нужно загрузить большой файл с помощью хранилища 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));
два последних слушателя никогда не вызываются. когда я настроил полный слушатель:
downloadTask.addOnCompleteListener()
мое приложение вылетает.
даже когда я настроил:
firebaseStorage.setMaxDownloadRetryTimeMillis(2000);
затем выключите мою сеть в середине загрузки, прослушиватель сбоев downloadTask не срабатывает. Кажется, что задача все еще выполняется, но данные не загружаются. Документация по этой функции плохая. как я должен это реализовать?
- прослушиватель сбоев кажется сломанным
- когда я добавляю completeListener, это приводит к сбою моего приложения
- firebaseStorage.setMaxDownloadRetryTimeMillis, похоже, не имеет никакого эффекта
Любая идея о том, как решить функцию возобновления загрузки файла?