我正在学习Android,我在理解Threads-Handlers
时遇到的问题很少。
我看到了在工作线程中声明处理程序的示例,该处理程序与Looper
的{{1}}一起使用 - 对我来说很清楚。
此外,我看到了您创建工作mainThread
并声明自己的Thread
的示例,如下所示:
Looper
据我所知,它创建了一个带有自己的public void run() {
Looper.prepare();
handler = new Handler();
Looper.loop();
}
和私有消息队列的线程但是这个的目的是什么以及为什么要使用它?
它是一个可以在Looper
这样的应用程序UI上工作的消息队列吗?是否比mainThread
更快地处理用户界面的速度问题?
还有一件事......我看到了一个课程mainThread
,如果我理解正确,那就像创建一个新的主题并设置为新的HandlerThread
一样在上面的例子中显示?如果不是,我有兴趣知道有什么区别以及在哪里使用它?
答案 0 :(得分:0)
为什么要这样做可能有很多原因。例如,如果处理消息需要花费大量时间,您可能希望在另一个线程上执行此操作以防止UI线程冻结。它无法直接操作UI线程,但您可以随时执行runOnUiThread将消息传递回UI线程。
HandlerThread基本上完全符合上面的要求。它封装了你需要做的一个奇怪的调用来制作一个looper,但它会让你使用一些奇怪的代码来为该线程创建实际的处理程序。使用它没有任何问题,但它不会为你节省很多精力。