Как наблюдать живые данные внутри приемника вещания - PullRequest
0 голосов
/ 04 июня 2019

Мое приложение должно делать вещи каждое утро. Поэтому я использую вещательный приемник. Когда вещательный приемник запущен, мне нужно подключиться к моей комнате-дБ. Получить некоторые данные и делать вещи с ними. Обычно я использую 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

Может кто-нибудь, пожалуйста, покажите мне правильное направление, чтобы идти сюда?

...