localbroadcastmanager устарел, вместо этого используйте реализации наблюдаемого шаблона.
androidx.localbroadcastmanager
устарела в версии 1.1.0
причина
LocalBroadcastManager
- шина событий всего приложения, охватывающая нарушения уровней в вашем приложении; любой компонент может прослушивать события от любого другого компонента. Он наследует ненужные ограничения варианта использования системы BroadcastManager; разработчики должны использовать Intent, даже если объекты живут только в одном процессе и никогда не покидают его. По этой же причине он не соответствует функциональности BroadcastManager.
Это добавляет запутанный опыт разработчика.
замена
Вы можете заменить использование LocalBroadcastManager
других реализаций наблюдаемого шаблона. В зависимости от вашего варианта использования, подходящими вариантами могут быть LiveData
или реактивные потоки.
Преимущество LiveData
Вы можете расширить LiveData
объект, используя шаблон синглтона, чтобы обернуть системные службы, чтобы они могли быть использованы в вашем приложении. В LiveData
объекте подключается к системной службе один раз, а затем любому наблюдателю , который нуждается ресурс может просто наблюдать за LiveData
объект.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
observe()
Метод передает фрагмент, который является экземпляром LifecycleOwner
, в качестве первого аргумента. Это означает, что этот наблюдатель привязан к Lifecycle
объекту, связанному с владельцем, что означает:
Если объект жизненного цикла не находится в активном состоянии, то наблюдатель не вызывается, даже если значение изменяется.
После уничтожения объекта жизненного цикла наблюдатель автоматически удаляется
Тот факт, что LiveData
объекты учитывают жизненный цикл, означает, что вы можете делиться ими между несколькими действиями, фрагментами и службами.