Мое приложение должно делать вещи каждое утро. Поэтому я использую вещательный приемник. Когда вещательный приемник запущен, мне нужно подключиться к моей комнате-дБ. Получить некоторые данные и делать вещи с ними. Обычно я использую AndroidViewModel и LiveData для этого. Но я не могу запустить AndroidViewModel внутри BroadcastReceiver. Вместо этого я инициирую свой репозиторий, отправляю запрос на чтение и назначаю их для LiveData.
Проблема в том, что мне нужно наблюдать за живыми данными. Но широковещательный приемник не является владельцем жизненного цикла.
private void getData(){
HomeRepository repository = HomeRepository.getInstance(context);
alarms = repository.getAllAlarms();
alarms.observe(this, new Observer<List<Alarm>>() {
@Override
public void onChanged(List<Alarm> alarmList) {
//Do Stuff
}
});
}
Так что это дает мне ошибку компиляции, говоря, что Broadcast Reciever не является владельцем жизненного цикла
Итак, я попробовал это:
public class MyBroadcastReceiver extends BroadcastReceiver implements LifecycleOwner
Компилируется, но выдает ошибку во время выполнения
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.lifecycle.Lifecycle$State androidx.lifecycle.Lifecycle.getCurrentState()' on a null object reference
Может кто-нибудь, пожалуйста, покажите мне правильное направление, чтобы идти сюда?