0

在我的应用程序中,很少有带有while-on-volatile-boolean循环和BlockingQueues 的线程用于它们处理的非常简单的对象消息(流水线架构)。

最近我遇到android.os.Looper了和它的朋友一起上课,这似乎做同样的工作,但是它们被放置在 API 中,那么使用它们而不是带有显式队列的手写循环有什么好处(尤其是性能)?还是只是某种“API 糖”?

4

1 回答 1

2

ALooper只是一个普通的 Java 线程,它等待消息发布到它。LooperHandler类和Message类一起使用。处理程序在 Looper 线程上发布消息。Looper 线程保持线程处于活动状态并循环通过 Handler 发布的消息。

在性能方面,据我所知,不会有任何优势。它只是保持线程活跃并向这些线程发布消息。从 API 的角度来看,使用 Handler 可能更容易。您可以创建多个共享同一个 Looper 的 Handler。让他们以线程安全的方式发布到 Looper。还有方便的计时消息,例如Handler#postDelayed. 因此,只需担心更少的代码。

缺点是它们是仅限 Android 的 API,因此您仅限于该环境。

于 2017-01-12T22:40:53.913 回答