IntentService和Handler + Looper

问题描述 投票:0回答:2

IntentService是否是Handler + Looper实现?

唯一的区别是IntentService由Intent触发

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

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

android intentservice
2个回答
2
投票

Looper是事件循环的抽象(无限循环,它使事件排入队列),而Handler是将事件放入/移出事件的队列(由Looper排空)并在处理这些事件时对其进行处理的抽象。 Handler and Looper

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

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

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

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


1
投票

看着IntentService source code,实际上它的内部逻辑确实使用了Handler + Looper。

© www.soinside.com 2019 - 2024. All rights reserved.