Android: что означает "не разрешено обновлять пользовательский интерфейс из не-пользовательского потока"?
Это работает:
private class MyAsyncTask extends AsyncTask<....>{
protected void onPostExecute(){
// img is an ImageView
img.setImageBitmap(bitmap);
}
}
Извините, ребята, я думаю, что мой вопрос должен быть более точным, если я спрашиваю "почему img.setImageBitmap(bitmap)
уже запущен в потоке пользовательского интерфейса. Я думал, что это обновление View в пользовательском интерфейсе из AsyncTask
нить.
1 ответ
Решение
why img.setImageBitmap(bitmap) is already run on UI thread
Потому что вы написали это в onPostExecute()
метод AsyncTask. В AsyncTask
, методы, такие как onPreExecute()
а также onPostExecute()
всегда выполняется в вашем основном потоке пользовательского интерфейса, в то время как только doInBackground() работает в отдельном потоке...