我有一些代码使用单个HandlerThread和Handler向它发送消息。有没有办法用协程来做到这一点?我不想每次都创建新的协同程序,我只想在HandlerThread上执行代码块。请帮忙
答案 0 :(得分:1)
如果您希望在主Android线程中执行一段代码,那么您可以使用UI
模块中的kotlinx-coroutines-android
上下文,如下所示:
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的方法:创建新的Android Handler
,使用Handler.asCoroutineDispatcher()
扩展名将其转换为coroutines上下文扩展。然后,您就可以使用launch
发送代码块以供执行。