0

IntentService 是 Handler+Looper 的实现吗?

唯一的区别是 IntentService 是由 Intents 触发的

IntentService http://developer.android.com/reference/android/app/IntentService.html

处理程序+Looper http://developer.android.com/reference/android/os/Looper.html

4

2 回答 2

3

Looper 是对事件循环的抽象(无限循环,它用事件排空队列),而 Handler 是一个抽象,用于将事件放入/删除事件队列(由 Looper 排出)并在处理这些事件时处理这些事件。处理程序和循环器

Looper 是一个为某个线程运行消息循环的类。在 Java 中,我们有线程,我们可以在其中做一些有用的工作。最初线程没有事件循环功能,但我们可以通过将 Looper 附加到它们来添加此功能。

Looper 主要有两种方法:prepare 和 loop。第一个方法 prepare - 初始化线程并将 Looper 附加到它。第二个方法循环启动事件循环。

Handler 是一个类,它允许您从线程的 MessageQueue 发送和处理 Messages 和 Runnables。基本上它的工作方式如下: 客户端初始化 Handler 和 Looper(因此整个基础设施现在可以使用) 客户端向 Handler 发送消息 Handler 将消息发布到 Looper 的 MessageQueue Looper 在 MessageQueue 中处理消息 当消息准备好被处理时,Looper 发送它回到Handler,它可以处理消息。因此,我们看到 Handler 做了两件事:1) 将消息发布到队列中,2) 在 Looper 处理消息时处理它们。

参考 https://proandroiddev.com/decoding-handler-and-looper-in-android-d4f3f2449513

于 2020-02-28T05:54:50.743 回答
2

查看IntentService 源代码,它的内部逻辑确实使用了 Handler+Looper。

于 2013-09-07T20:36:00.957 回答