IntentService是否是Handler + Looper实现?
唯一的区别是IntentService是由Intents
触发的IntentService http://developer.android.com/reference/android/app/IntentService.html
Handler + Looper http://developer.android.com/reference/android/os/Looper.html
答案 0 :(得分:3)
Looper是事件循环的抽象(无限循环,它使事件排入队列),而Handler是将事件放入/移出事件的队列(由Looper排空)并在处理这些事件时对其进行处理的抽象。
Looper是一个为某些线程运行消息循环的类。在Java中,我们有线程,我们可以在其中做一些有用的工作。最初,线程没有事件循环功能,但是我们可以通过将Looper附加到它们来添加此功能。
Looper有两种主要方法:准备和循环。第一种方法prepare —初始化线程并将Looper附加到该线程。第二个方法循环启动事件循环。
Handler是一个类,它允许您从线程的MessageQueue发送和处理Messages和Runnables。 基本上,它的工作方式如下: 客户端初始化Handler和Looper(因此现在可以使用整个基础结构了) 客户端向处理程序发送消息 处理程序将消息发布到Looper的MessageQueue Looper处理MessageQueue中的消息 当准备好处理消息时,Looper将其发送回Handler,后者可以处理消息。 因此,我们看到Handler做了两件事:1)将消息发布到队列中,2)在Looper处理消息时对其进行处理。
参考 https://proandroiddev.com/decoding-handler-and-looper-in-android-d4f3f2449513
答案 1 :(得分:0)
查看IntentService source code,确实使用Handler + Looper作为其内部逻辑。