您能帮我理解IntentService
和Service
之间的区别吗?
答案 0 :(得分:114)
简而言之,服务是开发人员设置后台操作的更广泛的实现,而IntentService对于“即发即弃”操作非常有用,负责后台线程的创建和清理。
来自文档:
<强>服务强> 服务是一个应用程序组件,表示应用程序希望在不与用户交互的情况下执行较长时间运行的操作,或者为其他应用程序提供要使用的功能。
<强> IntentService 强>
Service是IntentService 服务的基类,可根据需要处理异步请求 (表示为Intents)。客户端通过startService(Intent)
电话发送请求;服务根据需要启动,使用工作线程依次处理每个Intent,并在工作失败时自行停止。
请参阅此文档 - http://developer.android.com/reference/android/app/IntentService.html
答案 1 :(得分:105)
Service
是服务实现的基类。 Service
在应用程序的主线程上运行,这可能会降低应用程序性能。因此,IntentService
是服务的直接子类,可以使事情变得更容易。
IntentService
用于在后台执行某项任务。完成后,IntentService
的实例会自动终止。其用法示例是从Internet下载某种资源。
<强>差异强>
Service
类使用应用程序的主线程,而IntentService
创建工作线程并使用该线程来运行服务。IntentService
创建一个队列,一次将一个意图传递给onHandleIntent()
。因此,应该通过直接扩展Service
类来实现多线程。
Service
类需要使用stopSelf()
手动停止。同时,IntentService
在完成执行时自动停止。 IntentService
实现onBind()
,返回null
。这意味着默认情况下不能绑定IntentService
。IntentService
实现了onStartCommand()
,它将Intent发送到队列并发送到onHandleIntent()
。简而言之,使用IntentService
只需要做两件事。首先,实现构造函数。其次,要实施onHandleIntent()
。对于其他回调方法,需要调用super以便可以正确跟踪它。
答案 2 :(得分:65)
服务:它在您系统的后台运行。例如,
后台流程:厨师制作汤
IntentService: - 它是连续的服务..(即)当您一次向服务器订购许多食品时,服务器逐个递送这些商品而不是一次性递送所有商品。
答案 3 :(得分:42)
请参阅Tejas Lagvankar关于此主题的post。 以下是Service和IntentService以及其他组件之间的一些主要区别。
答案 4 :(得分:12)
Service
实际上在您应用的同一个主题中运行;扩展Service时,必须手动生成新线程以运行CPU阻塞操作。
VS
IntentService
是Service
的子类,它从那里生成一个线程来执行后台工作(不需要创建新线程来执行CPU阻塞操作)。
答案 5 :(得分:11)
<强>服务强>
onStartService()
main(UI
)主题<强> IntentService 强>
答案 6 :(得分:5)
Service
:在主线程中工作,这样几秒钟后就会导致 ANR (Android Not Responding)。
IntentService
:Service
与另一个后台线程分开工作,无需与主线程交互。
答案 7 :(得分:1)
意图服务是服务的孩子
IntentService:如果您想在打开应用程序时下载一堆图像。这是一次性过程,一旦下载完所有内容就可以自我清理。
服务:一种服务,它将不断用于通过Web API调用在您的应用和后端之间进行通信。即使它已完成当前任务,您仍然希望它在几分钟之后,以进行更多沟通