Использует библиотеку событий, такую ​​как Otto или EventBus, рекомендуемый способ обработки отношений между действиями, фрагментами и фоновыми потоками

В большинстве случаев при рассмотрении дела

  • Пользовательский поток ( AsyncTask ) для выполнения фоновой обработки
  • Возвратить полученный результат обратно в Activity или Fragment
  • Повторное создание Activity или Fragment может произойти до того, как пользовательский поток завершит свою фоновую обработку

До сих пор из многих надежных источников я вижу, что рекомендуемый способ заключается в использовании сохраненного фрагмента

источники

  • Лучшая практика: AsyncTask во время изменения ориентации
  • http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html
  • http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

Время от времени я слышал, что библиотеки журналов событий хороши для обработки отношений между действиями, фрагментами и фоновыми потоками. (См. Https://github.com/greenrobot/EventBus . В нем указано, что он хорошо работает с действиями, фрагментами и фоновыми потоками )

Я столкнулся с некоторыми действительно популярными библиотеками автобусов событий

  • EventBus
  • эфирное масло

Мне было интересно, когда приходит дело с отношениями между действиями, фрагментами и фоновыми потоками, как подход к шине событий отличается от подхода « Сохраненный фрагмент» ?

Какие способы рекомендуется?

Solutions Collecting From Web of "Использует библиотеку событий, такую ​​как Otto или EventBus, рекомендуемый способ обработки отношений между действиями, фрагментами и фоновыми потоками"

Автобус событий и Отто не являются «рекомендуемыми способами» руководства разработчика Android, в первую очередь потому, что они являются сторонними библиотеками, чтобы упростить задачу. И я считаю, что Отто является довольно новым, поэтому старые руководители явно не используют его.

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

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

Мне было интересно, когда приходит дело с отношениями между действиями, фрагментами и фоновыми потоками, как подход к шине событий отличается от подхода «Сохраненный фрагмент»?

Какие способы рекомендуется?

Я думаю, вы неправильно поняли два понятия:

1) предотвращение создания задачи снова и снова при повороте устройства

2) отправка сообщений из потока в действие или из службы в фрагмент или …

Когда мы помещаем задачу внутри фрагмента, мы просто не хотим запускать ее снова, если мы вращаемся. Также мы хотим получить результат от него, например, мы хотим обновить imageView, но если вы передадите imageView в asynctask, а затем вращаете свое устройство, если вы храните imageView в качестве слабой ссылки, тогда ваше изображение будет равно null после того, как действие Уничтожается, и если вы храните его в качестве сильной ссылки, то вы пропустите активность. Поэтому лучшая идея заключается в том, чтобы поместить его внутрь фрагмента и сохранить представление как слабую ссылку, и если действие onCreate называется обновлением этой ссылки.

EventBus и Otto – очень хорошие библиотеки для отправки сообщений между любыми компонентами или потоками. Вы можете использовать эти или собственные решения для Android, такие как создание интерфейса или localBroadcastManager или обработчик.

Как подход к шине событий отличается от подхода с сохранением фрагмента?

Я не изучал исходный код этих, но я думаю, что они создали объект очереди singleton и хранят ваши сообщения внутри него и деактивируют его, чтобы передать ваши сообщения своим слушателям.