Android存在3大类service, 处于android系统的不同框架层,具体解读如下:


1) init.rc中的service

//关键词“service" name 二进制可执行程序路径

service servicemanager /system/bin/servicemanager

class core

user system

group system

critical

onrestart restart healthd

onrestart restart zygote

onrestart restart media

onrestart restartsurfaceflinger

onrestart restart drm

其实这类service就是为了定义开启启动的程序,该类service的对象是一个可以执行的binary程序。把它定义为一种service是为了更好的描述该binary运行的属性,比如运行用户,组,启动一次(oneshot)还是不停启动(程序死掉后会再次启动)。更重要的是它还能描述各个程序之间的关系。比如onrestart restart drm,这个描述的意思是当drm程序重启时,该程序也要主动重启。

同时通过如下命令还可以运行时动态启动或者关闭某一service,当然要有root权限

property_set("ctl.start", "servicemanager");property_set("ctl.stop", "servicemanager");

adb shell setpropctl.start servicemanager;adb shell setpropctl.stop servicemanager


2) 系统层service


该类service和我们通常理解的service很接近,就是系统中提供服务的,该类service定义出服务接口,其他模块通过该接口即能使用该服务。该类服务的执行体可以是二进制代码,也可以是java代码。比如:

c++类型的service:

SurfaceFlinger,CameraManagerService, MediaPlayerService

java类型的service:

ActivityManagerService,WindowManagerService,NetworkManagerService

实现机制是该类service向上面提到的servicemanager注册它的服务,其他模块通过名字从servicemanager拿到service的接口。在shell通过命令 "service list"能列出系统中所有的该类service。

c++类型service相关接口:

sp<IServiceManager> sm = defaultServiceManager();sm.addService(name, xx)/sm.getService(name)

java类型service相关接口:

ServiceManager.getService(name)/addService(name,xx)

3) SDK层的service


不像前面两类service,他们是一类对象的总称,而该类service是开发者经常接触的一个很具体的java类android.app.Service.java。它是android sdk暴露给第三方应用使用的。 它是和Activity对等的,是android 四大组件之一(Activity,Service, Provider, BroadcastReceiver)。


总结:

第一类service: 系统集成工程师负责

第二类service: framework系统工程师负责

第三类service:芸芸众生的android应用程序开发者每日亲密接触

更多相关文章

  1. 关于Android(安卓)studio混淆遇到的问题
  2. 两个星期的Android开发
  3. android中客服端和服务器端的链接
  4. Android(安卓)init 启动过程分析(2)
  5. Android(安卓)开机自启动应用
  6. Android发送数据到web服务器4种方式
  7. Android4.4 Activity启动流程
  8. Android(安卓)GPS架构分析
  9. 【Android笔记】探究活动②使用Intent在活动之间穿梭

随机推荐

  1. Android笔记-自定义适配器
  2. 在android使用OPENGL总结
  3. Timed out Device -- Vibrator
  4. Android ApiDemos示例解析(90):OS->Senso
  5. android异步任务学习笔记
  6. 《深入理解Android(安卓)卷1》读书笔记 (
  7. 第一章 Android体系与系统架构
  8. android:EditText属性/去边框
  9. 如何通过迅雷加速下载Android SDK
  10. android activity 实现半透明Translucent