服务,Android中的intentService有什么区别?

Android和IntentService在Android中有什么区别?

Android中的AsyncTaskIntentService什么区别?

1.服务和IntentService的区别

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

IntentService :它是Service一个子类,它简化了你的工作。 它已经在工作线程中工作,并可以接收asynchronous请求。 所以,你不需要手动创build它,或者担心同步。 您可以简单地扩展它并覆盖该方法:

 onHandleIntent(Intent intent) 

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

看一下文档 ,你可以详细的看到IntentService为你做什么:

  • 创build一个默认的工作线程,执行所有传递给onStartCommand()意图,而onStartCommand()从应用程序的主线程中分离出来。
  • 创build一个将一个意图一次传递给你的onHandleIntent()实现的工作队列,所以你不必担心multithreading。
  • 在处理完所有启动请求后停止服务,因此您不必调用stopSelf()
  • 提供返回null的onBind()默认实现。
  • 提供onStartCommand()的默认实现, onStartCommand()意图发送到工作队列,然后发送到onHandleIntent()实现。

所以,如果你需要更多的控制,你可以使用Service类,但是对于一个简单的服务来说,最好的解决scheme就是IntentService

2. AsyncTask和服务的区别

他们是两个不同的概念。

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

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

简而言之,Service是开发人员设置后台操作的一个更广泛的实现,而IntentService对于“fire and forget”操作是有用的,可以处理后台线程的创build和清理。

从文档:

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

IntentService IntentService是一个服务的基类,用于按需处理asynchronous请求(表示为Intents)。 客户通过startService(Intent)调用发送请求; 该服务将根据需要启动,使用工作线程处理每个Intent,并在工作不成功时自行停止。

服务vs IntentService

IntentService和服务之间有什么区别?