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объекты учитывают жизненный цикл, означает, что вы можете делиться ими между несколькими действиями, фрагментами и службами.