📜  Android中Service和IntentService之间的区别

📅  最后修改于: 2021-05-08 20:40:02             🧑  作者: Mango

我们所有人在日常生活中都会遇到各种后台运行的移动应用程序。此外,在许多应用中,此类任务是在不使用用户界面的情况下完成的,即任务是在上下文中完成的。例如,我们的移动设备的“音乐”应用程序或任何其他“音乐”应用程序在后台运行,使您可以在使用“音乐”应用程序时使用任何其他应用程序。因此,可以使用Service或IntentService强制执行此功能。

服务

您可能将Service视为一个Android组件,用于在后台运行长时间运行的操作,例如在Music应用程序中,在该应用程序中,我们在后台运行该应用程序,同时使用其他移动应用程序。最好的事情是,您不必为后台操作提供任何用户界面。您也可以使用Service运行某些进程间通信(IPC)。由于任何应用程序组件都可以启动服务并在后台运行,因此您可以在服务的帮助下执行多项操作。使用服务的三种方式是:

  1. 前景:前景服务是一种将背景中发生的事情告知消费者的服务。例如,在“音乐”应用中,用户将在计算机上看到最新歌曲作为通知。因此,在这种情况下,必须显示该消息。
  2. 背景:在这种情况下,消费者永远不会知道应用程序上下文中发生了什么。例如,通过WhatsApp发送图像时,WhatsApp会压缩图像文件以使其更小。该任务是在后台执行的,并且消费者不知道发生了什么。但是,当使用API级别21或更高级别的后台服务时,Android系统会施加某些限制。因此,在使用后台服务之前,请确保您了解这些限制。
  3. 绑定:当一个或多个应用程序组件使用bindService()方法绑定服务时,将使用绑定服务。如果应用程序取消绑定服务,则该服务将被破坏。

意向服务

IntentService基类是Operation。本质上,它采用“作业队列操作”,其中IntentService管理客户的按需请求(表示为Intent)。结果,每当客户端发送请求时,该服务就会启动,并且在解决每个目的之后,它将停止。客户端可以使用Context.startService(intent)提交启动服务(Intent)的请求。在此生成一个工作线程,并且所有请求均由该工作线程处理,但一次仅处理一个请求。要使用IntentService,您必须对其进行扩展并实施onHandleIntent(android.content.Intent)

Service和IntentService之间的区别

Service

Intent Service

If the task doesn’t require any and also not a very long task you can use service. If the Background task is to be performed for a long time we can use the intent service.
we use the method onStartService()  to start the service we use the method  Context.startService(Intent) to start the intent service
Service will always run on the main thread. intent service always runs on the worker thread triggered from the main thread.
There is a chance of blocking the main thread. tasks will be performed on a queue basis i.e, first come first serve basis.
To stop service we have to use stopService() or stopSelf() No need to stop the service, it will stop automatically.
Easy to interact with the UI of the application. Difficult to interact with the UI of the application.
想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!