Индикатор загрузки загрузки Firebase
Я хочу показать индикатор выполнения загрузки, чтобы показать пользователю, сколько байтов осталось загрузить до того, как мое приложение перейдет к следующему действию (вместо того, чтобы показывать только черный экран). Я попытался это с этим кодом:
task.addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
private float previouslyTransferedBytes = 0;
private boolean firstProgress = true;
@Override
@SuppressWarnings("VisibleForTests")
public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
//update total bytes to download
if(firstProgress){
Intent totalBytesToDownloadIntent = new Intent(Code.TOTAL_BYTES_TO_TRANSFER);
float totalbytecount = taskSnapshot.getTotalByteCount();
totalBytesToDownloadIntent.putExtra(Code.TOTAL_BYTES_TO_TRANSFER,totalbytecount);
GlobalVars.applicationContext.sendBroadcast(totalBytesToDownloadIntent);
firstProgress = false;
}
float newlyTransfered = taskSnapshot.getBytesTransferred()-previouslyTransferedBytes;
Intent downloadProgress = new Intent(Code.DOWNLOAD_PROGRESS);
downloadProgress.putExtra(Code.BYTES_TRANSFERED,newlyTransfered);
GlobalVars.applicationContext.sendBroadcast(downloadProgress);
previouslyTransferedBytes = taskSnapshot.getBytesTransferred();
}
});
но итоговое bytecount возвращает только -1. Что я делаю неправильно?
РЕДАКТИРОВАТЬ: файл определенно существует, поскольку он правильно загружается и используется позже в приложении.
РЕДАКТИРОВАТЬ 2: "задача" имеет тип FileDownloadTask.
1 ответ
Когда onProgress()
из onProgressListener
для загрузки называется первый раз, getBytesTransferred() == 0
а также getTotalByteCount() == -1
, При последующих вызовах общее количество байтов является правильным. Я не знаю, является ли это ошибкой или просто недокументированной деталью API. Вы можете сообщить в службу поддержки Firebase, чтобы получить их отзывы.