我想显示一个下载进度条,以显示用户在我的应用程序继续下一个活动之前还需要下载多少字节(而不是只显示一个黑色屏幕)。我尝试过使用以下代码:
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:“任务”是FileDownloadTask类型的。
发布于 2017-04-05 15:22:32
当下载的onProgress() onProgressListener第一次被调用时,getBytesTransferred() == 0和getTotalByteCount() == -1。在随后的调用中,总字节数是正确的。我不知道这是一个bug,还是仅仅是API的一个未记录的细节。你可以向火力支援报告以获得他们的反馈。
https://stackoverflow.com/questions/43217582
复制相似问题