Выполнение задачи пользовательского интерфейса в 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 способа обновить пользовательский интерфейс:

  1. От doInBackground() осуществляя runOnUiThread()
  2. От onProgressUpdate()

FYI,

onProgressUpdate() - всякий раз, когда вы хотите обновить что-либо из doInBackground(), Вам просто нужно использовать publishProgress(Progress...) чтобы опубликовать одну или несколько единиц прогресса, он будет пинговать onProgressUpdate() обновить в потоке пользовательского интерфейса.

Вы могли бы использовать onProgressUpdate скорее

Документы

Другие вопросы по тегам