在 broadcastReceiver 中访问 ViewModel 生成的数据
Accessing data made by ViewModel in a broadcastReceiver
我希望能够访问我通过 AlarmViewModel 设置的警报,因为它们需要在启动时重新制作。然而,我似乎无法弄清楚如何访问同一个存储库(我通过存储库进行所有数据库访问)。
在我的 OnReceive(Context context, Intent intent) 中我有:
public void onReceive(Context context, Intent intent) {
if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())){
AlarmRepository alarmRepository = new AlarmRepository((Application)context.getApplicationContext());
}
}
视图模型的构造函数是这样的:
public AlarmViewModel(Application application){
super(application);
repository = new AlarmRepository(application);
allAlarms = repository.getAlarms();
}
我的片段通过以下方式获取视图模型:
alarmViewModel = ViewModelProviders.of(requireActivity()).get(AlarmViewModel.class);
我的项目遵循这个整体数据库架构 - 它只是基于单个 activity 和片段。
https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0
错误实际上不是我没有得到正确的 alarmRepository,而是一个 LiveData 对象只是懒惰地填充,因此在我添加一个监听器之前它是空的。
我希望能够访问我通过 AlarmViewModel 设置的警报,因为它们需要在启动时重新制作。然而,我似乎无法弄清楚如何访问同一个存储库(我通过存储库进行所有数据库访问)。
在我的 OnReceive(Context context, Intent intent) 中我有:
public void onReceive(Context context, Intent intent) {
if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())){
AlarmRepository alarmRepository = new AlarmRepository((Application)context.getApplicationContext());
}
}
视图模型的构造函数是这样的:
public AlarmViewModel(Application application){
super(application);
repository = new AlarmRepository(application);
allAlarms = repository.getAlarms();
}
我的片段通过以下方式获取视图模型:
alarmViewModel = ViewModelProviders.of(requireActivity()).get(AlarmViewModel.class);
我的项目遵循这个整体数据库架构 - 它只是基于单个 activity 和片段。 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0
错误实际上不是我没有得到正确的 alarmRepository,而是一个 LiveData 对象只是懒惰地填充,因此在我添加一个监听器之前它是空的。