Комментарии 9
Может, конечно, велосипед (Андроид и Java не основной мой стек), но я для изменения View из AsyncTask поступал по другому.
Начнём с того, что я манипулировал фрагментами в одной активности.
Есть синглтон (пусть) FragmentListenerRegister. Каждый фрагмент в обработчике onCreateView подписывает себя на оповещение в это синглтоне, соответственно в onDestroyView — отписывается.
Есть несколько тасков, выполняющих определённую задачу и наследующих абстрактный общий наследник AsyncTask. В этом абстрактном классе-наследнике при выполнении onProgressUpdate и onPostExecute вызывается метод информирования фрагментов, подписанных в FragmentListenerRegister об окончании работы или изменении прогресса.
Вся работа с моделью данных производится внутри этих тасков.
Общий принцип такой:
Создался фрагмент, подписался на события.
Вызвали таск, он работает, как-то видоизменяет модель (если всё идёт хорошо). По окончании работы (или изменении прогресса) производится информирование фрагмента, который производит обновление представления.
Начнём с того, что я манипулировал фрагментами в одной активности.
Есть синглтон (пусть) FragmentListenerRegister. Каждый фрагмент в обработчике onCreateView подписывает себя на оповещение в это синглтоне, соответственно в onDestroyView — отписывается.
Есть несколько тасков, выполняющих определённую задачу и наследующих абстрактный общий наследник AsyncTask. В этом абстрактном классе-наследнике при выполнении onProgressUpdate и onPostExecute вызывается метод информирования фрагментов, подписанных в FragmentListenerRegister об окончании работы или изменении прогресса.
Вся работа с моделью данных производится внутри этих тасков.
Общий принцип такой:
Создался фрагмент, подписался на события.
Вызвали таск, он работает, как-то видоизменяет модель (если всё идёт хорошо). По окончании работы (или изменении прогресса) производится информирование фрагмента, который производит обновление представления.
Спасибо за перевод, но скрывайте, пожалуйста, гифки под спойлер.
А почему три примера кода в описании загрузчиков приведены не на Java?
Вопрос, который тревожит меня давно: если приложение пишется только под вертикальную ориентацию, т.е. жестко в манифесте это указывается, так ли уже надо заморачиваться уничтожением Activity? Конечно, я пониманию, что Activity может быть уничтожена и просто из-за нехватки ресурсов системы и пересоздана заново, но для современного железа эта ситуация все больше становится маловероятной.
Реальность такова, что 80% времени смартфоном пользуются в вертикальном положении.
Конечно, нужно стремиться к совершенству, никто не спорит, интересует лишь список возможных проблем для приложений с вертикальной ориентацией.
Реальность такова, что 80% времени смартфоном пользуются в вертикальном положении.
Конечно, нужно стремиться к совершенству, никто не спорит, интересует лишь список возможных проблем для приложений с вертикальной ориентацией.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Руководство по фоновой работе в Android. Часть 2: Loaders