我的应用每天早上都应该做些事情。所以我正在使用广播接收器。触发广播接收器后,我需要连接到我的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
有人可以告诉我去这里的正确方向吗?