我想在一个进度条中下载多个文件(目前为2个)(无需重置进度条)
为了做到这一点,我检索所有文件的总长度,以便在发布进度方法中使用它
问题是我的进度条一旦达到50%就会重置为0,然后再次递增,直到另一个50%
这是我的代码
@Override
protected Void doInBackground(Void... params) {
int totalSizeFile;
totalSizeFile=cm.getLength(url[0]);
totalSizeFile+=cm.getLength(url[1]);
progressBar.setMax(totalSizeFile);
cm.downloadMp3(url[0], "test.mp3", totalTailleFic);
cm.downloadMp3(url[1], "test2.mp3", totalTailleFic);
return null;
}
@Override
protected void onProgressUpdate(Integer... progress) {
textview.setText(String.valueOf(progress[0])+"%");
progressBar.incrementProgressBy(progress[0]);
}
我的下载函数的代码,我调用了publishprogress方法
byte[] buffer = new byte[1024];
int bufferLength = 0;
int total=0;
while ((bufferLength = inputStream.read(buffer)) != -1) {
total += bufferLength;
fileOutput.write(buffer, 0, bufferLength);
asynch.publishProgress(bufferLength);
}
非常感谢
答案 0 :(得分:1)
您的ProgressBar
在下载之间重置为零,因为变量total
也会重置为零。
为了跟踪当前进度,进度条必须以progressBar.incrementProgressBy()
递增,而不是使用progressBar.setProgress()
设置值。
这意味着还必须修改publishProgress()
和onProgressUpdate()
方法以处理increment
而不是progress
。而且,增量是您的bufferLength
:
asynch.publishProgress(bufferLength);
您还需要使用ProgressBar
的两次下载总和的初始化progressBar.setMax()
初始化。