我想显示一个下载进度条,向用户显示在我的应用继续下一个活动之前剩余的字节数(而不是只显示黑屏)。我尝试使用此代码:
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();
}
});
但总字节数仅返回-1。我做错了什么?
编辑:文件肯定存在,因为它被正确下载并稍后在应用程序中使用。
编辑2:&#34;任务&#34;是FileDownloadTask类型。
答案 0 :(得分:1)
第一次调用下载onProgress()
的{{1}}时onProgressListener
和getBytesTransferred() == 0
。在后续调用中,总字节数是正确的。我不知道这是一个错误还是仅仅是一个未记录的API细节。您可以向Firebase Support举报,以获得他们的反馈。