- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个Room数据库的简单Dao界面,在其中我具有挂起函数以从表中插入和获取数据。
在我的DBHelper
类中,我尝试使用launch - CoroutineScope
插入数据,但似乎不在启动内,并且启动内的功能未执行。
关于我可能做错了什么的任何建议,请
OfflineDataDao
@Dao
interface OfflineDataDao {
@Query("SELECT * FROM offlineDatax")
suspend fun getOfflineData(): List<OfflineDatax>
@Insert
suspend fun insertOfflineData(offlineData: OfflineDatax): Long
}
@Entity
data class OfflineDatax (
@PrimaryKey val uid: Int,
@ColumnInfo(name = "requestJSON") val requestJSON: String?,
@ColumnInfo(name = "requestCode") val requestCode: String?
)
class DBHelper @Inject constructor(
private val userDao: UserDao,
private val offlineDataDao: OfflineDataDao
) : CoroutineScope {
private var job: Job = Job()
override val coroutineContext: CoroutineContext
get() = Dispatchers.Main + job
fun accessDBFunction() {
var offlineDatax = OfflineDatax(1, "rjson", "rCode")
addOfflineData(offlineDatax)
getOfflineData()
}
fun addOfflineData(offlineDatax: OfflineDatax): Long {
var lng: Long = 0L
launch {
lng = offlineDataDao.insertOfflineData(offlineDatax) // IS NOT CALLED, DOES NOT GET INTO LAUNCH
}
return lng
}
fun getOfflineData (): List<OfflineDatax> {
var offlineData = emptyList<OfflineDatax>()
launch {
offlineData = offlineDataDao.getOfflineData(); // IS NOT CALLED, DOES NOT GET INTO LAUNCH
}
Timber.d("offlinedata " + offlineData.toString())
return offlineData
}
}
最佳答案
只需通过suspend
修饰符使函数挂起并直接从它们返回,它们就会将自身挂起到Room库中定义的自己的调度程序中。
suspend fun addOfflineData(offlineDatax: OfflineDatax): Long =
offlineDataDao.insertOfflineData(offlineDatax)
suspend fun getOfflineData (): List<OfflineDatax> =
offlineDataDao.getOfflineData().also { Timber.d("offlinedata " + it.toString()) }
关于android - 无法从CoroutineScope启动访问暂停Dao功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62128500/
任何人都可以明确功能之间的关系CoroutineScope()和 coroutineScope() ? 当我试图检查源代码时,我发现它们都是CoroutineScope.kt的函数。 .此外,coro
2019年5月7日,androidx.Life Cycle:*:2.2.0-alpha01发布,宣布:。在文档中提到,我可以获得LifecycleScope:。但是我好像一个也找不到。我目前的依赖关系
val scope = CoroutineScope( Job() + Dispatchers.Main ) scope.launch { beforeExecute()
我完全理解 suspendCoroutine 与 suspendCancellableCoroutine 在我的示例中的工作方式。但我想知道为什么 println("I finished") (第 1
我想知道coroutineScope工作完成后会自动取消。假设我创建了一个 coroutineScope在自定义类中 而不是 ViewModel类(class)或 Fragment / Activit
看完CoroutineScope的介绍和javadoc我仍然有点困惑 CoroutineScope 背后的想法是什么。 文档的第一句话“定义新协程的范围”。我不清楚:为什么我的协程需要范围? 另外,为
我需要下载多张图片,并在所有下载完成后(在主线程之外),在 Activity 中执行其他操作。 我目前使用Glide下载如下: ImageDownloader.kt class ImageDownlo
我有一个 kotlin 多平台项目,并在公共(public)模块中实现了一个简单的存储库类来进行 API 调用。我将协程范围作为参数传入,以便能够使用 viewModelScope并将其默认为通用代码
我正在重构一些目前在 GlobalScope 上启动协同程序的 Kotlin 代码到结构化的基于并发的方法。我需要在 JVM 退出之前加入在我的代码中启动的所有作业。我的类可以分解为以下界面: int
我正在尝试使用 CoroutineScope 的扩展功能启动一些异步工作。 我不知道如何从我的主类调用这个方法,见下文: class MyService { fun CoroutineScope
我正在使用协程编写一个应用程序(下面的代码已大大简化)。最近看了Coroutines in Practice说话有点糊涂了。原来我不知道什么时候使用 CoroutineScope 的扩展函数,什么时候
在 Kotlin Coroutines 中,想为当前线程创建一个引用并在以后使用它。 fun myFuncion(){ //save current Thread CoroutineScope
我正在试验协程,但不确定是否将 coroutineScope 传递给普通的 Kotlin 用例。这种方法会造成内存泄漏吗? 假设我们在 VM 中初始化我们的 UseCase 并尝试传递 viewMod
关于这个话题我有两个问题。我将在 android 中将它们与用例类一起使用,并尝试实现类似于此 https://www.youtube.com/watch?v=Sy6ZdgqrQp0 的架构但我需要一
从 CoroutineScope 检测取消 我正在尝试从 CoroutineScope 检测取消,但是当我尝试在 CoroutineScope 中调用 cancel 方法时,isCancelled 属
有人可以解释一下这两者之间到底有什么区别吗? 你什么时候用一个? 提前致谢。 最佳答案 解释差异的最好方法是解释coroutineScope的机制。 .考虑这个代码: suspend fun main
我习惯使用 AsyncTask并且由于它的简单性而很好地理解它。但是Coroutines让我很困惑。您能否以简单的方式向我解释以下各项的区别和目的是什么? GlobalScope.launch(Dis
假设 CoroutineScope 是由一些生命周期感知组件实现的,比如 Presenter。什么时候使用 GlobalScope.produce 与 CoroutineScope.produce 比
我正在阅读 Coroutine Basics试图理解和学习它。 这里有一段代码: fun main() = runBlocking { // this: CoroutineScope laun
我有一个重试策略,它接受一个 lambda,启动一个 CoroutineScope ,增加重试计数器,检查是否达到最大重试次数,计算 waitTime根据重试次数,延迟这次的作用域,最后调用 lamb
我是一名优秀的程序员,十分优秀!