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