2011-12-31 3 views
1

Когда я загружаю файл, я хочу, чтобы progressbar синхронизировался с этим. но нет, мой код:Progressbar не обновляется в потоке android

Thread thread = new Thread() { 
      public void run() { 
       try { 
        while ((bufferLength = inputStream.read(buffer)) > 0) { 
         //add the data in the buffer to the file in the file output stream (the file on the sd card 
         fileOutput.write(buffer, 0, bufferLength); 
         //add up the size so we know how much is downloaded 
         downloadedSize += bufferLength; 
         pbar.setProgress((downloadedSize/totalSize)*100); 
         pbar.refreshDrawableState(); 

         Log.d("CURRENT:", "" + (downloadedSize/totalSize)*100); 
        } 
       } catch (Exception ex) { 

       } 
      } 
     }; 
     thread.start(); 

Также мой файл catlog не обновляется. Любая помощь, пожалуйста ....

ответ

1

Вы не можете обновить пользовательский интерфейс от фонового потока, используйте AsyncTask, потому что Androiders называют его painless threading

Here is a nice Tutorial для использования ProgressBar с помощью AsyncTask

1

Нет необходимости в AsyncTask, в вашей теме использование MyActivity.this.runOnUiThread(). Выполнял бы ту же работу, что и AsyncTask, но это сокращает время перекодирования всего материала. :) Приветствия