2013-03-30 5 views
1

я хочу, чтобы загрузить несколько файлов (2 на данный момент) в одном прогрессе бара (без сброса прогресса бара)прогресс бара и несколько загрузок

Для того, чтобы сделать это, я получить общую длину всех файлов в для того, чтобы использовать его в методе публиковать прогресс

проблема заключается в том, что мой прогресс бар сбрасывается в 0, когда достиг 50%, то не увеличивать, пока еще 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

Ваш ProgressBar обнуляется между загрузки, так как переменная total также сбрасывается в ноль.

Чтобы отслеживать текущий прогресс, индикатор выполнения должен будет увеличиваться с progressBar.incrementProgressBy() вместо значения progressBar.setProgress().

Это означает, что методы publishProgress() и onProgressUpdate() также должны быть изменены для обработки increment вместо progress. И, прирост ваш bufferLength:

asynch.publishProgress(bufferLength); 

Вы также должны инициализировать ProgressBar с общим количеством байтов на сумму обоих загрузок с progressBar.setMax().

+0

Здравствуйте. Спасибо за вашу помощь, но если я попробую incrementProgressBy, теперь мой индикатор выполнения заполняется сразу без кусков. – user2177823

+0

Но действительно переменная прогресса OnProgressUpdate сбрасывается до 0 между каждой загрузкой. – user2177823

+0

Используйте 'setMax()' для инициализации 'ProgressBar' с общим количеством байтов (см. Редактирование). –