android 处理程序或启动协程作业以在主线程中执行某些操作

k4emjkb1  于 2023-06-04  发布在  Android
关注(0)|答案(1)|浏览(235)

我一直在想,使用HandlerLooper.getMainLooper())或启动一个新的协程作业来在主线程上做一些小事情(如更新视图)是否是一种更好的方法。
经办人:

val uiHandler = Handler(Looper.getMainLooper())

fun foo() {
    uiHandler.post { 
        someView.update()
    }
}

协同程序

fun foo() {
    lifecycleScope.launch {
        someView.update()
    }
}

我真的不知道,也无法在互联网上找到任何相关的东西,但我很想获得这些知识。

vhipe2zx

vhipe2zx1#

你可以同时做这两件事,但我认为通常的做法是使用协程。我不认为处理程序在默认情况下是生命周期感知的,但是如果视图或活动被破坏,协程将被取消。很多库都使用了suspend函数,所以你必须使用协程。
基于this,协程将任务添加到事件循环中,就像处理程序一样。我想知道协程在内部是如何工作的,并发现了一篇使用mainHandler.post { continuation.resume(value) }来调度协程的this文章,所以我怀疑性能上会有很大的差异。

相关问题