【问题标题】:How to delete data from room database inside a broadcast Receiver如何从广播接收器内的房间数据库中删除数据
【发布时间】:2021-04-10 11:13:50
【问题描述】:

在我的应用程序中,我有一个发送通知的广播接收器。发送通知后,我想从数据库中删除特定对象。在我的活动中,我使用了 viewModel 实例来删除数据,但无法在广播接收器或工作管理器中创建 viewModel 实例。在使用房间数据库时,有什么办法可以从广播接收器中删除数据。

这就是我在我的活动中创建 viewModel 实例的方式:

private val taskViewModel: TaskViewModel by viewModels {
    TaskViewModelFactory((application as TaskApplication).repository)
}

当我尝试在接收器或 workManager 中创建类似的 viewModel 实例时遇到语法错误。

【问题讨论】:

    标签: android kotlin broadcastreceiver android-room android-database


    【解决方案1】:

    尝试使用没有 ViewModel 的线程从 DAO 中删除对象

    class Receiver : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            val id = intent!!.getIntExtra("id_key", 0)
            Thread {
                AppDatabase.getInstance(context).appDao().deleteObject(id)
            }.start()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多