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

Android 如何在广播接收机内观察实时数据,android,broadcastreceiver,android-livedata,Android,Broadcastreceiver,Android Livedata,我的应用程序每天早上都应该做一些事情。所以我用的是广播接收机。当广播接收器被触发时,我需要连接到我的房间db。获取一些数据并处理它们。通常我使用AndroidViewModel和LiveData来实现这一点。但我无法在BroadcastReceiver内启动AndroidViewModel。相反,我正在启动我的存储库,发送一个读取请求,并将它们分配给LiveData 问题是我需要观察实时数据。但广播接收器不是生命周期所有者 private void getData(){ HomeRepo

我的应用程序每天早上都应该做一些事情。所以我用的是广播接收机。当广播接收器被触发时,我需要连接到我的房间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
        }
    });
}
它已编译,但在运行时出错

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