And*_*dda 4 multithreading android
我正在尝试了解 Looper...
这次我有点困惑,因为我只使用(直到现在)while(true) 条件来保持线程处于无限循环中。
我只想知道使用 Looper 还是 while(true) 条件更好。
我在互联网上搜索了我的问题的可能答案,但我对找到同时使用 Looper 和 while(true) 的代码感到非常失望。
可能我没有明白使用 Looper 的意义,但是,你知道,我们是来学习的……不是吗?
Looper是一种保持线程打开以处理通过Handler发送给它的消息的机制。从这个意义上说,它们类似于Thread 永远保持打开状态(或者在这种情况下,直到您明确告诉它关闭)。但是,与 不同的是,您可以从另一个线程向其发送消息。每次创建 时,它都会将自身绑定到创建它的线程。然后,每次向该 发布消息时,它都会在创建它的线程上处理该消息。while(true)while(true)HandlerLooperHandler
LooperAndroid 中最常见、最知名的线程是主 UI 线程。这个线程一直在运行。它运行发布到它的代码。最常见的绘制操作,但如果您查看并调用View#post,它将在下一个绘制周期中运行代码。这是因为所有View对象都有一个Handler构建在主 UI Looper 线程上。
该UI尺蠖其实可以参考Looper.getMainLooper()方法,你可以创建一个Handler该消息发布到这个线程像这样:new Handler(Looper.getMainLooper());。
不过,如果需要,您可以创建自己的Looper线程,充当 UI 线程的并行线程。您不能对其进行绘图操作,但可以将其用作其他操作的工作线程。这样你就不会在每次需要做一些密集的事情时创建一个新线程的开销。