问题标签 [coroutinescope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 从 ViewModel 的 onCleared 中取消所有待处理的 Kotlin 作业
使用 Kotlin 1.3 可以启动作业,GlobalScope.launch
但我似乎无法弄清楚的一件事是如何跟踪Job
“GlobalScope.launch”返回并取消所有挂起的作业(如果它们处于活动状态)。
在旧版本中,launch
可以指定parent = parentJob
并且可以简单地取消 parentJob。但是,当使用GlobalScope.launch
如何取消所有待处理的作业时(很容易),所以从 ViewModel 的 onCleared 来看,可以取消所有待处理的东西。
android - 协程中的范围混淆
我有一个用例,我想使用协程,但有点困惑如何实现它。
具有范围并绑定到 UI 生命周期并从存储库调用 API 的 ViewModel:
存储库使用协程构建网络调用,如下所示:
用例是,一旦从 ViewModel 调用 API,就需要始终完全执行存储库功能,因为我们需要捕获来自服务器的所有网络响应。
如何确保始终执行存储库中的协程,但一旦清除视图模型,将取消 ViewModel 协程以避免内存泄漏?
android - Kotlin 协程返回字符串
我正在尝试将方法从 java 转换为 kotlin 并替换AsyncTask
为协程,但我不知道如何从协程返回值
这是我的方法
返回 outputFile的行编译出错,谁能帮忙,这是我第一次使用协程
编辑
这是使用挂起后的方法,但是现在我不知道如果发生任何问题我该如何返回值
编辑 2
你的意思是这样
并称它为
android - 挂起函数“callGetApi”只能从协程或另一个挂起函数中调用
我正在从 onCreate(...) 调用挂起函数
和暂停的功能是: -
但是错误显示暂停函数'callGetApi'应该只从协程或另一个暂停函数中调用
android - 非生命周期类中的 Kotlin 协程范围和作业取消
如何在没有生命周期的类(如存储库)中使用新的 Kotlin v1.3 协程?我有一个类,我检查缓存是否过期,然后决定是从远程 API 还是本地数据库中获取数据。我需要从launch
那里开始async
。但是那我怎么取消工作呢?
示例代码:
}
android - Dispatchers.IO 协程的线程
我正在学习 Android 中的协程。我有以下代码:
我预计userDataSource.saveApiToken(token)
将从单独的线程中调用它,但它在主线程上运行(Looper.myLooper() == Looper.getMainLooper() 在方法内返回 true)。可能是什么原因?[我的错]
我正在使用 Kotlin 插件版本:1.3.11-release-Studio3.2-1 和以下依赖项:kotlinx-coroutines-core:1.0.1 和 kotlinx-coroutines-android:1.0.1
multithreading - 如何将协程直接分派到 JVM 上的主线程?
我正在为 jvm 建立一个基于 kotlin 协程的网络框架。Client 和 Server 类实现 CoroutineScope,coroutinecontext 的覆盖是 Dispatchers.IO,因为我很确定这是用于这种情况的正确 Dispatcher。但是,我希望在主线程上处理读取数据包,或者至少提供该选项。在没有阅读文档的情况下,我使用了 Dispatchers.Main,我现在意识到它是用于 android UI 线程的。有没有我可以用来让协程在主线程上运行的调度程序?如果没有,我将如何制作一个?
我查看了有关如何基于单个线程创建调度程序的 kotlin 文档,但除了创建新线程的 newSingleThreadContext 之外我找不到任何东西。我还发现可以从 java Executor 创建调度程序,但我仍然不确定如何将其限制为已经存在的线程。
因此,使用 Dispatchers.Main 由于缺少 android 组件,我得到了 IllegalStateException。有没有办法创建一个调度程序来阻止主线程直到它完成(就像 runBlocking 一样?)谢谢!
android - cant launch coroutine builder
I just created a new project and added a simple empty coroutine just to check if things were fine .
I get this crash
My build.gradle
You guys can attempt to the same. Just create a new empty project and add the empty coroutine
kotlin - kotlin coroutine - 在协程内部调用时如何确保某些命令在 UI 主线程上运行?
我有一个非常简单的协程,它只是做一些延迟,然后我想要它做的是将命令发布到 UI 消息队列。所以在 UI 线程上运行最后两行。这是协程:
我希望最后两个方法 doSomething() 和 doAnotherThing() 在 UI 线程上运行?如何才能做到这一点 ?从我读过的内容来看,延迟(5000)将自动异步运行,但如何让其余部分在 UI 线程上运行?非常清楚,我是从一个从主线程启动的对象中执行此操作的。