何时使用HandlerThread以及何时设置新的Looper

时间:2014-07-21 20:20:00

标签: java android multithreading android-handler

我正在学习Android,我在理解Threads-Handlers时遇到的问题很少。

我看到了在工作线程中声明处理程序的示例,该处理程序与Looper的{​​{1}}一起使用 - 对我来说很清楚。

此外,我看到了您创建工作mainThread并声明自己的Thread的示例,如下所示:

Looper

据我所知,它创建了一个带有自己的public void run() { Looper.prepare(); handler = new Handler(); Looper.loop(); } 和私有消息队列的线程但是这个的目的是什么以及为什么要使用它? 它是一个可以在Looper这样的应用程序UI上工作的消息队列吗?是否比mainThread更快地处理用户界面的速度问题?

还有一件事......我看到了一个课程mainThread,如果我理解正确,那就像创建一个新的主题并设置为新的HandlerThread一样在上面的例子中显示?如果不是,我有兴趣知道有什么区别以及在哪里使用它?

1 个答案:

答案 0 :(得分:0)

为什么要这样做可能有很多原因。例如,如果处理消息需要花费大量时间,您可能希望在另一个线程上执行此操作以防止UI线程冻结。它无法直接操作UI线程,但您可以随时执行runOnUiThread将消息传递回UI线程。

HandlerThread基本上完全符合上面的要求。它封装了你需要做的一个奇怪的调用来制作一个looper,但它会让你使用一些奇怪的代码来为该线程创建实际的处理程序。使用它没有任何问题,但它不会为你节省很多精力。