【问题标题】:Accessing data made by ViewModel in a broadcastReceiver在广播接收器中访问 ViewModel 生成的数据
【发布时间】:2019-11-16 13:26:57
【问题描述】:

我希望能够访问我通过 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);

我的项目遵循这个整体数据库架构 - 它只是基于单个活动和片段。 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0

【问题讨论】:

    标签: android android-fragments broadcastreceiver android-room android-viewmodel


    【解决方案1】:

    错误实际上不是我没有得到正确的alarmRepository,而是LiveData对象只是懒惰地填充,因此在我添加监听器之前它是空的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多