localbroadcastmanager застарілий, замість цього використовуйте реалізації шаблону, що спостерігається.
androidx.localbroadcastmanager застаріла у версії 1.1.0
Причина
LocalBroadcastManager- шина подій на всьому додатку та охоплює порушення рівня шару у вашій програмі; будь-який компонент може слухати події з будь-якого іншого компонента. Він успадковує непотрібні обмеження у випадку використання системи BroadcastManager; розробникам доводиться використовувати наміри, навіть якщо об'єкти живуть лише в одному процесі і ніколи не залишають його. З цієї ж причини він не дотримується функцій 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об'єкти усвідомлюють життєвий цикл, означає, що ви можете ділитися ними між різними видами діяльності, фрагментами та службами.