0
다운로드 진행률 표시 줄을 표시하여 내 앱이 다음 활동을 계속하기 전에 (검정색 화면 만 표시하는 대신) 다운로드 할 바이트 수를 표시하려고합니다. 이 코드로 시도했습니다 :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();
}
});
하지만 총 바이트 수는 -1 만 반환합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
EDIT : 파일이 제대로 다운로드되어 나중에 응용 프로그램에서 사용되므로 확실히 존재합니다.
EDIT 2 : "task"유형은 FileDownloadTask입니다.
다운로드 할 때 사용하는'getXXX()'메소드 ('getFile()','getBytes()','getStream()')는 무엇입니까? –
getFile()을 사용 중입니다 – Jonathan
의도적 인 동작과 여분의'totalbytecount'를 저장하기위한 키로'Code.TOTAL_BYTES_TO_TRANSFER' 문자열을 사용하고 있습니다. 그게 당신이 의도 한 것입니까? –