Асинхронный просмотр манипуляции с Android - PullRequest
0 голосов
/ 02 сентября 2011

У меня небольшая проблема, я сейчас провожу много времени. Я надеюсь, что вы можете мне помочь. Ну, у меня есть активность, которая загружает контент из базы данных в фоновом режиме. Он возвращает асинхронность и изменяет мою модель данных. Теперь я ищу хороший способ сообщить контроллеру об обновлении представления. Я использую метод notifyDataChanged, но получил исключение.

Android не позволяет изменять вид из другого потока. На мой взгляд, это базовый функционал. Таким образом, должен быть способ реализовать такую ​​функциональность.

Можете ли вы дать мне подсказку.

Я также смотрю класс обозревателя контента. Но я не думаю, что это правильно.

Спасибо

1 Ответ

0 голосов
/ 02 сентября 2011

Пожалуйста, предоставьте некоторые фрагменты кода из вашего Activity.Если вы используете AsynkTask, который является лучшим способом для фоновой обработки данных, вы должны использовать метод onPostExecute() для обновления вашего пользовательского интерфейса, потому что doInBackground() работает в фоновом потоке, а не в UIThread.

В качестве обходного пути можно объявить Handler в вашем Activity и опубликовать новый Runnable в этом Handler, когда вы хотите получить доступ к пользовательскому интерфейсу, что-то вроде этого:

    mHandler.post(new Runnable() {
        @Override
        public void run() {
            mAdapter.notifyDataSetChanged();
        }
    }); 

Но это как-то "взлом", и я бы не рекомендовал его использовать.Лучше всего использовать AsyncTask.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...