Service和IntentService有什么区别?

时间:2016-03-31 10:19:46

标签: android

你能用例子解释我吗?

  

何时使用服务以及何时在应用程序开发过程中使用IntentServices。

2 个答案:

答案 0 :(得分:3)

服务是服务实现的基类。服务类在应用程序的主线程中运行,这可能会降低应用程序性能。因此, IntentService ,它是Service的直接子类,可以使事情变得更容易。 IntentService用于在后台执行某项任务。完成后,IntentService实例会自动终止自身。其用法示例是从Internet下载某些资源。

<强>差异

服务类使用应用程序的主线程,而IntentService创建工作线程并使用该线程来运行服务。

IntentService 创建一个队列,一次将一个意图传递给onHandleIntent()。因此,应该通过直接扩展Service类来实现多线程。服务类需要使用stopSelf()手动停止。同时,当队列中没有意图时,IntentService会自动停止。

IntentService实现返回null的onBind()。这意味着默认情况下不能绑定IntentService。

IntentService实现onStartCommand(),它将Intent发送到队列和onHandleIntent()。简而言之,使用IntentService只需要做两件事。首先,实现构造函数。其次,实现onHandleIntent()。对于其他回调方法,需要调用super以便可以正确跟踪它。

简而言之 服务是开发人员设置后台操作的更广泛的实现,而IntentService对于“即发即弃”操作非常有用,负责后台线程的创建和清理。

来自文档:

服务服务是一个应用程序组件,表示应用程序希望在不与用户交互的情况下执行较长时间运行的操作,或者为其他应用程序提供要使用的功能。

IntentService IntentService是服务的基类,可根据需要处理异步请求(表示为Intents)。客户端通过startService(Intent)调用发送请求;服务根据需要启动,使用工作线程依次处理每个Intent,并在工作失败时自行停止。

取自http://www.coderzheaven.com/2013/07/12/main-differences-service-intent-service/

答案 1 :(得分:1)

服务是Android服务的基类,可以扩展以创建任何服务。直接扩展Service的类在主线程上运行,因此它将阻止UI(如果有的话),因此应该只用于短任务,或者应该使用其他线程来执行更长的任务。

IntentService是Service的子类,可根据需要处理异步请求(表示为“Intents”)。客户端通过startService(Intent)调用发送请求。该服务根据需要启动,使用工作线程依次处理每个Intent,并在工作失败时自行停止。编写IntentService非常简单;只需扩展IntentService类并覆盖onHandleIntent(Intent intent)方法,您可以在其中管理所有传入请求。