Казалось бы, что тут сложного, следуй рекомендациям гугла и усё, но есть моменты, на которые я хотел бы найти ответ. Прошу всех, кто обладает какими-либо шишками, либо информацией, поделиться ею тут.
Общение фрагментов с фрагментами или активностями возможно через:
1. Слушатели (Listeners)
Это то, что советует гугл. Что в этом я вижу плохого:
1.1 Так это то, что если мы делаем один инфтерфейс (так сказать универсальный), к примеру на 30 методов, и если нам понадобилась активность новая, а в ней всего 5 методов надо, то либо новый интерфейс, либо реализовывать все 30 методов. Можно конечно помучиться с паттеранми, типа фабрики если не ошибаюсь, но это не то.
1.2 Слышал что слушатели регистрируются в очереди, либо в массиве и бывают проблемы в многопоточном приложении.
2. Прямая ссылка
Передавать прямую ссылку на активность очень удобно, но есть минусы:
2.1 привязка к одной активности
2.2 невозможность использования флага setRetainInstance (если правильно пишу - сохранение фрагмента). При сохранении фрагмента, ссылка на активность наверняка сохранится старая.
3. BroadcastReceiver.
И тут мы уже решаем первый минус слушателей. Шлем с нужного места бродкасты и ловим их в ПРОИЗВОЛЬНОМ количестве в ЛЮБЫХ местах приложения
Из минусов вижу только одно:
3.1 сообщения шлются во всю систему.
4. LocalBroadcastManager
И вот то, что по мне идеально. В документации сказано
Другими словами, у нас локальный бродкаст на наш процесс.Helper to register for and send broadcasts of Intents to local objects within your process.
Мы наследуем все плюсы бродкастов, а при этом еще и лишаемся единственного минуса.
Вот такой расклад я вижу на данный момент. Просьба отписаться тех, кто что-либо знает по данному вопросу, а также пр грабли. И просьба по возможности прикладывать кусочки кода. И про нагрузку тоже можно пару слов чиркануть