Выполнение задачи пользовательского интерфейса в doinbackground() в Android
Есть ли способ сделать задачу пользовательского интерфейса в doinbackground() AsyncTask. Я хорошо знаю, что лучше сделать это в методе onPostExecute. Но в моем случае, так как мне нужно использовать многократно используемое оповещение, возможность доступа к пользовательскому интерфейсу в моем doinbackground сэкономит мне много времени. То есть мне нужно настроить код в 46 местах, но для того, чтобы сделать это в фоновом режиме, потребуется внести изменения только в одном месте.
заранее спасибо
3 ответа
Надеюсь, что это решит вашу проблему
onPreExecute() {
// some code #1
}
doInBackground() {
runOnUiThread(new Runnable() {
public void run() {
// some code #3 (Write your code here to run in UI thread)
}
});
}
onPostExecute() {
// some code #3
}
Кроме обновления пользовательского интерфейса из onPostExecute()
Есть 2 способа обновить пользовательский интерфейс:
- От
doInBackground()
осуществляяrunOnUiThread()
- От
onProgressUpdate()
FYI,
onProgressUpdate()
- всякий раз, когда вы хотите обновить что-либо из doInBackground()
, Вам просто нужно использовать publishProgress(Progress...)
чтобы опубликовать одну или несколько единиц прогресса, он будет пинговать onProgressUpdate()
обновить в потоке пользовательского интерфейса.