如何观察广播接收机内的实时数据

时间:2019-06-04 17:39:36

标签: android broadcastreceiver android-livedata

我的应用每天早上都应该做些事情。所以我正在使用广播接收器。触发广播接收器后,我需要连接到我的room-db。获取一些数据并对其进行处理。通常我为此使用AndroidViewModel和LiveData。但是我无法在BroadcastReceiver中启动AndroidViewModel。取而代之的是,我启动存储库并发送读取请求并将其分配给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
        }
    });
}

所以它给了我一个编译错误,说广播接收者不是生命周期所有者

所以我尝试了这个:

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

有人可以告诉我去这里的正确方向吗?

0 个答案:

没有答案