【问题标题】:Insert Room data from WorkManager Worker?从 WorkManager Worker 插入房间数据?
【发布时间】:2021-03-18 22:47:35
【问题描述】:

我正在关注 Android 房间教程.. 但与它的要求略有不同。我想在后台运行一项工作..并在那里插入一个数据库项目,而不是像他们拥有的那样使用按钮或启动时。我找不到办法吗?

override fun doWork(): Result {
    try {
  
      val appContext = applicationContext

  ......
      
      val newDataItem = DataItem(param1 = "Title", iso_datetime_msg_received = "RIGHTNOW", alert_message = "HI!!!", uuid = 1231)

    
      // THE LINE BELOW IS WHAT I WANT BUT GET AN ERROR 
      // Suspend function 'insert' should be called only from a coroutine or another suspend function

    CustomRoomDatabase.getDatabase(myContext).dataItemDao().insert(newDataItem)
      return Result.success(result)
    } catch(error: Throwable) {
        Log.i(TAG, "RetrieveDataItemWorker got error:" + error)
        return Result.retry()
    }
}

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    您的 WorkManager 类需要实现 :CoroutineWorker(context, workerParams)

    然后将您的 doWork 函数设为挂起函数

    【讨论】:

    • 有链接怎么实现的吗?对 kotlin android 还是有点陌生​​。谢谢
    • 您的链接有一些将 WorkManager 添加到示例中的业务。我放弃了它。在我的上下文引用中摆弄了一下,它起作用了!谢谢!!
    • @tyczj 确实在 java worker 类中实现了这个
    猜你喜欢
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多