Android 如何在广播接收机内观察实时数据
我的应用程序每天早上都应该做一些事情。所以我用的是广播接收机。当广播接收器被触发时,我需要连接到我的房间db。获取一些数据并处理它们。通常我使用AndroidViewModel和LiveData来实现这一点。但我无法在BroadcastReceiver内启动AndroidViewModel。相反,我正在启动我的存储库,发送一个读取请求,并将它们分配给LiveData 问题是我需要观察实时数据。但广播接收器不是生命周期所有者Android 如何在广播接收机内观察实时数据,android,broadcastreceiver,android-livedata,Android,Broadcastreceiver,Android Livedata,我的应用程序每天早上都应该做一些事情。所以我用的是广播接收机。当广播接收器被触发时,我需要连接到我的房间db。获取一些数据并处理它们。通常我使用AndroidViewModel和LiveData来实现这一点。但我无法在BroadcastReceiver内启动AndroidViewModel。相反,我正在启动我的存储库,发送一个读取请求,并将它们分配给LiveData 问题是我需要观察实时数据。但广播接收器不是生命周期所有者 private void getData(){ HomeRepo
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
}
});
}
它已编译,但在运行时出错
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.lifecycle.Lifecycle$State androidx.lifecycle.Lifecycle.getCurrentState()' on a null object reference
有人能告诉我到这里的正确方向吗?让接受者把这项工作委托给
工作经理
,工作意向服务
,或前台意向服务
。然后,让您的存储库公开后台工作可以调用的同步API。使用workmanager执行定期请求,不要在数据库中使用livedata,只需返回您需要的任何数据
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.lifecycle.Lifecycle$State androidx.lifecycle.Lifecycle.getCurrentState()' on a null object reference