Android中为何须要服务?

在解释这个问题以前, 先来看一个Android系统中进程的优先级(从高到低)android

  1. 前台进程(foreground process ):  一个应用程序启动, 而且能够直接相应用户的点击,触摸事件.那么这样 进程就是前台进程, 它的优先级的最高的. 
  2. 可视进程(visible process) :  一个应用程序也启动了, 原本是直接处于前台,能够直接相应用户的触摸, 点击事件的,可是 如今一个其余的的应用程序盖住了它,可是还看得见. 那么这种进程称之为 可视进程.
  3. 服务进程(service process ): 一个应用程序 若是正常的退出了,可是这个应用程序启动的时候, 有一个服务启动了, 一直在后台运行, 那么这种进程就是属于 服务进程.
  4. 后台进程(background process): 一个应用程序 启动了(可是这个应用程序中没有 服务在运行了),  这个时候 点击了 home键(小房子), 那么这种进程就是属于 后台进程
  5. 空进程(empty process) : 一个应用程序,如今正常的退出了,没有任何组件在继续运行着, 那么这种进程称之为 空进程. 

因而可知, Service对于android系统来讲,杀死的优先级别是比较低的,通常不会杀死service, 这就保证了Service能够长期在后台运行.线程

 

另外, Service是没有界面的, 也是运行在主线程中的,因此若是要在Service中执行耗时的操做,须要新建一条线程.对象

 

服务分为两种:

1.本地服务(Local Service):用于应用程序内部

功能:用于实现应用程序本身的一些耗时任务,好比查询升级信息,并不占用应用程序好比Activity所属线程,而是单开线程后台执行,这样用户体验比较好。接口

 

使用:在Service能够调用Context.startService()启动,调用Context.stopService()结束。在内部能够调用Service.stopSelf() 或 Service.stopSelfResult()来本身中止。不管调用了多少次startService(),都只需调用一次stopService()来中止。进程

 

2.远程服务(Remote Sercie):用于android系统内部的应用程序之间

 

功能:可被其余应用程序复用,好比天气预报服务,其余应用程序不须要再写这样的服务,调用已有的便可。事件

 

使用:能够定义接口并把接口暴露出来,以便其余应用进行操做。客户端创建到服务对象的链接,并经过那个链接来调用服务。调用Context.bindService()方法创建链接,并启动,以调用 Context.unbindService()关闭链接。多个客户端能够绑定至同一个服务。若是服务此时尚未加载,bindService()会先加载它。ci

相关文章
相关标签/搜索