#android #android-emulator
#Android #android-эмулятор
Вопрос:
привет, я использую AsyncTask для загрузки файлов Xml, изображений с URL, после загрузки XML-файлов я собираюсь проанализировать и отобразить данные в ListView из ImageView и TextView. я знаю, как обновить пользовательский интерфейс в
onPreExecute() onPostExecute(Void result)
если, например, я загружаю 100 xml-файлов методом doInBackground (), я хочу обновлять представление списка для каждых 10 завершенных загрузок xml, я использую обработчик для обновления представления списка путем отправки сообщения. он будет принудительно закрыт из-за обработчиков, кто-нибудь может подсказать мне, как это сделать…Может ли кто-нибудь сказать мне, как решить мою проблему…
Комментарии:
1. Покажите нам свой код. Покажите, как и где вы создаете свой
Handler
и как вы используете его вAsyncTask
Ответ №1:
Я бы не стал использовать обработчик, если вы используете AsyncTask, поскольку у него уже есть встроенный механизм для обновления потока пользовательского интерфейса из фонового потока.
Вы можете передавать обновления в поток пользовательского интерфейса, используя метод onProgressUpdate(). Как onPostExecute () и onPreExecute (), он также выполняется в потоке пользовательского интерфейса. Чтобы передать объект в поток пользовательского интерфейса, вы должны вызвать publishProgress() в doInBackground().
Комментарии:
1. вы правы, но я использую Mvc, поэтому я загружаю данные в класс модели, как я могу использовать publishProgress () для обновления пользовательского интерфейса. пожалуйста, скажите мне
2. Если ваша AsyncTask является внутренним классом вашего действия, тогда вы можете получить доступ к методам действия. Таким образом, вы можете реализовать метод в activity, который обновляет представление путем извлечения данных из модели. Этот метод должен быть вызван из onProgressUpdate(), который, в свою очередь, уведомляется после вызова publishProcess() в doInBackground(). Конечно, необходимо обновить модель перед вызовом publishProcess().