0

Я пытаюсь добавить некоторое время сна в свою Asynctask, потому что прямо сейчас мой ProgressDialog слишком быстр, когда загружается не так много данных.Ошибка при использовании Thread.sleep в Asynctask

Я попытался это:

@Override 
protected Boolean doInBackground(Void... params) { 
    try { 
     progressDialog.setMessage("Loading first thing..."); 
     firstThing(); 
     progressDialog.incrementProgressBy(1); 
     Thread.sleep(500); 
     //...repeat above four lines a few times for second, third, fourth thing, etc 
     return true; 
    } 
    catch (Exception e) { 
     Log.e("MyClassName", "There was an error: " + e); 
     return false; 
    } 
} 

Я получаю сообщение об ошибке «Только оригинальный поток, созданный вид может коснуться его точки зрения.»

+0

Вы обновляете пользовательский интерфейс вне основной темы Android. DoInBackground запускается в другом потоке, поэтому вы не можете обновлять представления. Итак, если вы хотите обновить представление, вы должны использовать onPreExectute, onPostExecture или onProgressUpdate. Проверьте https://developer.android.com/reference/android/os/AsyncTask.html – AndroidRuntimeException

+0

У меня есть переопределенные, да, я просто не публиковал их здесь – KaliMa

ответ

2

Вам необходимо переопределить onProgressUpdate(), а также doInBackground().

  // do this before asynctask.execute(); 
      progressDialog.setMessage("Loading first thing..."); 


@Override 
protected Boolean doInBackground(Void... params) { 
    try { 
     firstThing(); 
     Thread.sleep(500); 
     // this method invokes onProgressUpdate on the UI thread 
     publishProgress(); 
     return true; 
    } 
    catch (Exception e) { 
     Log.e("MyClassName", "There was an error: " + e); 
     return false; 
    } 
} 

@Override 
protected void onProgressUpdate(Void... params) { 
    progressDialog.incrementProgressBy(1); 
} 
+0

, вы также можете рассмотреть размер загруженного размера в процентах , publishProgress (в процентах); и pDialog.incrementProgressBy (params [0]); – uguboz

+0

Что должно выглядеть публикацияProgress()? – KaliMa

+0

Nevermind, по-видимому, это встроенная функция. В любом случае после внесения этого изменения я все равно получаю ту же ошибку. Или, может быть, это потому, что я устанавливаю сообщение в фоновом потоке. Как изменить сообщение в зависимости от того, где я в процессе загрузки? – KaliMa