android - 协程中的 HandlerThread 替换

标签 android kotlin kotlinx.coroutines

我有一些代码使用单个 HandlerThread 和 Handler 向它发送消息。有没有办法用协程来做到这一点?我不想每次都创建新的协程,我只想在 HandlerThread 上执行代码块。请帮忙

最佳答案

如果您希望在 Android 主线程中执行一段代码,那么您可以使用 kotlinx-coroutines-android 模块中的 UI 上下文,如下所示:

launch(UI) { 
    ... // this block of code will be executed in main thread
}

上面的代码 fragment 向主处理程序发送一条消息以执行您的代码。

如果您正在寻找用于后台工作的自定义处理程序线程,则可以通过以下两种方式之一创建单线程上下文。

通用方法:像这样使用 newSingleThreadedContext():

val ctx = newSingleThreadedContext() // define your context

launch(ctx) { ... } // use it to submit your code there

Android 专用方法:创建新的 Android Handler,使用 Handler.asCoroutineDispatcher() 扩展将其转换为协程上下文扩展。然后您将能够使用 launch 发送您的代码块以供执行。

关于android - 协程中的 HandlerThread 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49830523/

相关文章:

android - 在 kotlin 中调用父类中的内部类不起作用

android-studio - Android/Kotlin:显示已配对的蓝牙设备的列表

kotlin - 如何最好地等到 Actor 在 kotlinx.coroutines 0.20 中停止?

java - 我可以在纯 Java 项目中使用使用 Kotlin 协程构建的库吗?

android - 无法在 Mapbox 中创建自定义标记图标

java - 如何正确使用 ItemTouchHelper

android - AWS MobileHub : Rename Android/iOS sample project

Android Studio Image Asset Launcher 图标背景颜色

spring-mvc - 使用 Spring MVC 测试框架测试安全的 REST 端点

kotlin - 应使用 CoroutineScope 的扩展函数或挂起函数