我们所有人在日常生活中都会遇到各种后台运行的移动应用程序。此外,在许多应用中,此类任务是在不使用用户界面的情况下完成的,即任务是在上下文中完成的。例如,我们的移动设备的“音乐”应用程序或任何其他“音乐”应用程序在后台运行,使您可以在使用“音乐”应用程序时使用任何其他应用程序。因此,可以使用Service或IntentService强制执行此功能。
服务
您可能将Service视为一个Android组件,用于在后台运行长时间运行的操作,例如在Music应用程序中,在该应用程序中,我们在后台运行该应用程序,同时使用其他移动应用程序。最好的事情是,您不必为后台操作提供任何用户界面。您也可以使用Service运行某些进程间通信(IPC)。由于任何应用程序组件都可以启动服务并在后台运行,因此您可以在服务的帮助下执行多项操作。使用服务的三种方式是:
- 前景:前景服务是一种将背景中发生的事情告知消费者的服务。例如,在“音乐”应用中,用户将在计算机上看到最新歌曲作为通知。因此,在这种情况下,必须显示该消息。
- 背景:在这种情况下,消费者永远不会知道应用程序上下文中发生了什么。例如,通过WhatsApp发送图像时,WhatsApp会压缩图像文件以使其更小。该任务是在后台执行的,并且消费者不知道发生了什么。但是,当使用API级别21或更高级别的后台服务时,Android系统会施加某些限制。因此,在使用后台服务之前,请确保您了解这些限制。
- 绑定:当一个或多个应用程序组件使用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. |