android中的service,intentService有什么区别?

时间:2015-07-16 10:18:04

标签: android android-asynctask android-service intentservice

Android中的ServiceIntentService有什么区别?

Android中的AsyncTaskIntentService有什么区别?

2 个答案:

答案 0 :(得分:35)

<强> 1。服务和IntentService之间的区别

服务:它是Android服务的基类,您可以扩展以创建任何服务。 由于服务在UI线程内运行,因此需要您创建一个工作线程来执行其工作。

IntentService :它是Service的子类,可以简化您的工作。它已经在一个工作线程中工作,并且可以接收异步请求。因此,您不需要手动创建它,也不用担心同步。您可以简单地扩展它并覆盖方法:

onHandleIntent(Intent intent)

您可以在其中管理所有传入的请求。

看一下documentation,您可以详细了解IntentService为您做的事情:

  • 创建一个默认工作线程,该线程执行与应用程序主线程分开的所有传递到onStartCommand()的意图。
  • 创建一个工作队列,一次将一个意图传递给onHandleIntent()实现,因此您永远不必担心多线程。
  • 处理完所有启动请求后停止服务,因此您无需致电stopSelf()
  • 提供返回null的onBind()的默认实现。
  • 提供onStartCommand()的默认实施,将意图发送到工作队列,然后发送到onHandleIntent()实施。

因此,如果您需要更多控制权,可以使用Service类,但通常对于简单服务,最佳解决方案是IntentService

<强> 2。 AsyncTask和Service之间的区别

它们是两个不同的概念。

服务可以作为没有界面的活动。它适用于长期运行。

AsyncTask:是一个特定的类,它包装一个工作线程(执行后台操作),促进与UI线程的交互,而无需直接管理线程或处理程序。

答案 1 :(得分:0)

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

来自文档:

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

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

Service vs IntentService

What is the difference between an IntentService and a Service?