[Android] Как обновить ui из asynctask


Answers

Вы можете использовать AsycTask и list ui обновлений list ui для задачи, завершенной в onPostExecute .

    new AsyncTask<String, String, String>() {
        /**
         * Before starting background do some work.
         * */
        @Override
        protected void onPreExecute() {
        }

        @Override
        protected String doInBackground(String... params) {
            // TODO fetch url data do bg process.
            return null;
        }

        /**
         * Update list ui after process finished.
         */
        protected void onPostExecute(String result) {
               // NO NEED to use activity.runOnUiThread(), code execute here under UI thread. 

                 // Updating parsed JSON data into ListView
                 final List data = new Gson().fromJson(result);
                // updating listview
                ((ListActivity) activity).updateUI(data);
        }

    };
}

Обновление Нет необходимости использовать runOnUiThread внутри onPostExecute , потому что он уже вызван, и его тело выполняется под UIThread .

Question

Я видел много примеров того, как это сделать, но я могу понять, как реализовать его в моем коде.

Я использую этот код .
Я обновил URL-адрес, поэтому он получит json с динамическими данными. То, что я пытаюсь сделать, - это автоматически обновлять список каждые 30 секунд с помощью этого кода.

Handler handler = new Handler();
    Runnable refresh = new Runnable() {
        public void run() {
            new GetContacts().execute();
            handler.postDelayed(refresh, 30000); 
        }
    };

Он обновляется и вызывает URL-адрес и получает данные, но пользовательский интерфейс не обновляется.

Спасибо за любые подсказки, которые помогают мне в правильном направлении.

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/




Links