IntentService和Handler + Looper

时间:2013-09-07 20:30:06

标签: android intentservice

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

2 个答案:

答案 0 :(得分:3)

Looper是事件循环的抽象(无限循环,它使事件排入队列),而Handler是将事件放入/移出事件的队列(由Looper排空)并在处理这些事件时对其进行处理的抽象。Handler and 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作为其内部逻辑。