Я разрабатываю социальное приложение. Предположим, что у меня есть стек действий A -> B -> C -> D
.
D находится на переднем плане, и пользователь нажимает кнопку "like" на что-то там (сообщение, комментарий, пользователь и т.д.). Каков наилучший способ уведомить обо всех других действиях об этом действии, чтобы обновить их данные? Здесь я вижу 3 варианта:
- Используйте локальную базу данных и некоторые загрузчики для автоматического обновления данных. Однако для этого требуется много кода, если у нас есть разные модели данных с общими данными (например,
BasicUserInfo
,UserInfo
,DetailedUserInfo
). - Используйте EventBus с липкими событиями (продюсерами Отто). В этом случае я должен уведомлять ТОЛЬКО операции backstack и игнорировать те, которые будут созданы. Также мне нужно управлять переопределением событий.
- Используйте простой шаблон наблюдателя с помощью WeakReferences для операций backstack. Но тогда у меня есть проблема с убитыми действиями, которые будут повторно создаваться.
Реальный пример:
В Instagram: я открываю какой-то конкретный профиль пользователя (A), там я открываю какую-то конкретную запись (B), снова профиль (A) и т.д. A → B → A → B → A..., Поэтому он загружает данные из Интернета каждый раз. На шаге "n + 1" появляется новый комментарий к сообщению. Если я начну возвращаться через свою заднюю часть, я увижу, что instagram отправил этот "новый" комментарий ко всем видам B без перезагрузки любых данных из Интернета. Поэтому мне интересно, как они это делают.