协程中的 HandlerThread 替换
HandlerThread replacement in Coroutines
我有一些代码使用单个 HandlerThread 和 Handler 向它发送消息。有没有办法用协程来做到这一点?我不想每次都创建新的协程,我只想在 HandlerThread 上执行代码块。请帮助
如果您希望在主 Android 线程中执行代码块,那么您可以使用 kotlinx-coroutines-android
模块中的 UI
上下文,如下所示:
launch(UI) {
... // this block of code will be executed in main thread
}
以上代码片段向主处理程序发送一条消息以执行您的代码。
如果您正在寻找用于后台工作的自定义处理程序线程,则可以通过以下两种方式之一创建单线程上下文。
通用方法:像这样使用newSingleThreadedContext()
:
val ctx = newSingleThreadedContext() // define your context
launch(ctx) { ... } // use it to submit your code there
Android-specific approach: Create new Android Handler
, use Handler.asCoroutineDispatcher()
extension to convert it to the coroutines上下文扩展。然后您就可以使用 launch
发送您的代码块以供执行。
我有一些代码使用单个 HandlerThread 和 Handler 向它发送消息。有没有办法用协程来做到这一点?我不想每次都创建新的协程,我只想在 HandlerThread 上执行代码块。请帮助
如果您希望在主 Android 线程中执行代码块,那么您可以使用 kotlinx-coroutines-android
模块中的 UI
上下文,如下所示:
launch(UI) {
... // this block of code will be executed in main thread
}
以上代码片段向主处理程序发送一条消息以执行您的代码。
如果您正在寻找用于后台工作的自定义处理程序线程,则可以通过以下两种方式之一创建单线程上下文。
通用方法:像这样使用newSingleThreadedContext()
:
val ctx = newSingleThreadedContext() // define your context
launch(ctx) { ... } // use it to submit your code there
Android-specific approach: Create new Android Handler
, use Handler.asCoroutineDispatcher()
extension to convert it to the coroutines上下文扩展。然后您就可以使用 launch
发送您的代码块以供执行。