Android 协程中的handler螺纹更换
我有一些代码,它使用单HandlerThread和处理程序向它发送消息。有什么方法可以通过协同程序实现这一点吗?我不想每次都创建新的协程,我只想在HandlerThread上执行代码块。请帮助如果您希望在Android主线程中执行一段代码,那么您可以使用Android 协程中的handler螺纹更换,android,kotlin,kotlinx.coroutines,Android,Kotlin,Kotlinx.coroutines,我有一些代码,它使用单HandlerThread和处理程序向它发送消息。有什么方法可以通过协同程序实现这一点吗?我不想每次都创建新的协程,我只想在HandlerThread上执行代码块。请帮助如果您希望在Android主线程中执行一段代码,那么您可以使用UI上下文,从kotlinx coroutines Android模块如下所示: launch(UI) { ... // this block of code will be executed in main thread } val
UI
上下文,从kotlinx coroutines Android
模块如下所示:
launch(UI) {
... // this block of code will be executed in main thread
}
val ctx = newSingleThreadedContext() // define your context
launch(ctx) { ... } // use it to submit your code there
上面的代码段向主处理程序发送一条消息以执行代码
如果您正在寻找用于后台工作的自定义处理程序线程,那么可以通过以下两种方法之一创建单线程上下文
通用方法:像这样使用newSingleThreadedContext()
:
launch(UI) {
... // this block of code will be executed in main thread
}
val ctx = newSingleThreadedContext() // define your context
launch(ctx) { ... } // use it to submit your code there
特定于Android的方法:创建新的Android
处理程序
,使用处理程序.ascoroutinedpatcher()
扩展将其转换为协同程序上下文扩展。然后,您将能够使用launch
发送代码块以供执行。是的,我知道这是可能的,但如果每次我想在该线程上运行代码时都创建一个新的协程(并可运行),是否会导致开销?现在,我使用HandlerThread和handler将消息发送给handler,后者在HandlerThread上处理这些消息。例如,每2秒创建一个新的协同路由可以吗?每2秒创建一个新的协同路由可以。协同路由非常非常轻量级。谢谢,我只是不确定它是否会导致开销,因为作为调度器在处理程序上启动的每个代码块也会创建一个新的可运行的。我接受了你的回答。