Android 进度条和多次下载

Android 进度条和多次下载,android,android-asynctask,progress-bar,Android,Android Asynctask,Progress Bar,我想在一个进度条中下载多个文件(目前为2个)(无需重置进度条) 为此,我检索所有文件的总长度,以便在发布进度方法中使用它 byte[] buffer = new byte[1024]; int bufferLength = 0; int total=0; while ((bufferLength = inputStream.read(buffer)) != -1) { total += bufferL

我想在一个进度条中下载多个文件(目前为2个)(无需重置进度条)

为此,我检索所有文件的总长度,以便在发布进度方法中使用它

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);

            }
问题是我的进度条在达到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);

            }

非常感谢

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

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

这意味着还必须修改
publishProgress()
onProgressUpdate()
方法,以处理
增量
,而不是
进度
。并且,增量是您的
缓冲区长度

asynch.publishProgress(bufferLength);

您还必须使用
ProgressBar.setMax()
将两次下载的总字节数初始化
ProgressBar
,因为变量
total
也会重置为零,所以您的
ProgressBar
在两次下载之间重置为零

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

这意味着还必须修改
publishProgress()
onProgressUpdate()
方法,以处理
增量
,而不是
进度
。并且,增量是您的
缓冲区长度

asynch.publishProgress(bufferLength);

您还必须使用
ProgressBar.setMax()

Hello以两次下载的总字节数初始化
ProgressBar
。感谢您的帮助,但如果我尝试incrementProgressBy,现在我的进度条会立即填充,而不会出现块,但每次下载之间OnProgressUpdate的进度变量会重置为0。使用
setMax()
以总字节数初始化
ProgressBar
(请参见编辑)。无论您在
OnProgressUpdate()
Progress
参数上添加了什么,都没有关系。它可以是实际进度、增量,甚至只是指示一个步骤。只需获取该值并将其视为增量,然后将其发送到
incrementProgressBy()
。谢谢。我更新了我的代码,但我现在甚至看不到进度条的增加。您好。感谢您的帮助,但如果我尝试incrementProgressBy,现在我的进度条会立即填充,而不会出现块,但每次下载之间OnProgressUpdate的进度变量会重置为0。使用
setMax()
以总字节数初始化
ProgressBar
(请参见编辑)。无论您在
OnProgressUpdate()
Progress
参数上添加了什么,都没有关系。它可以是实际进度、增量,甚至只是指示一个步骤。只需获取该值并将其视为增量,然后将其发送到
incrementProgressBy()
。谢谢。我更新了我的代码,但我现在甚至看不到进度条的增加。