进度条和多个下载

时间:2013-03-30 22:41:54

标签: android android-asynctask progress-bar

我想在一个进度条中下载多个文件(目前为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);

            }

非常感谢

1 个答案:

答案 0 :(得分:1)

您的ProgressBar在下载之间重置为零,因为变量total也会重置为零。

为了跟踪当前进度,进度条必须以progressBar.incrementProgressBy()递增,而不是使用progressBar.setProgress()设置值。

这意味着还必须修改publishProgress()onProgressUpdate()方法以处理increment而不是progress。而且,增量是您的bufferLength

asynch.publishProgress(bufferLength);

您还需要使用ProgressBar的两次下载总和的初始化progressBar.setMax()初始化。