图解Android - System Service 概论 和 Android GUI 系统
通过 图解Android - Binder 和 Service 一文中,我们已经分析了Binder 和 Service的工作原理。接下来,我们来简要分析Android 系统里面都有哪些重要的Service, 它们分别完成什么样的功能。
Android 大部分的系统Services 都运行在 System Server 这个进程里,用一个简单的方法来看看都有哪些重要的Service, “ps -t | grep <system_server pid>"
system 1078 938 780164 51232 ffffffff 00000000 S system_server
system 1083 1078 780164 51232 ffffffff 00000000 S GC
system 1084 1078 780164 51232 ffffffff 00000000 S Signal Catcher
system 1085 1078 780164 51232 ffffffff 00000000 S JDWP
system 1086 1078 780164 51232 ffffffff 00000000 S ReferenceQueueD
system 1087 1078 780164 51232 ffffffff 00000000 S FinalizerDaemon
system 1088 1078 780164 51232 ffffffff 00000000 S FinalizerWatchd
system 1089 1078 780164 51232 ffffffff 00000000 S Binder_1
system 1090 1078 780164 51232 ffffffff 00000000 S Binder_2
system 1093 1078 780164 51232 ffffffff 00000000 S SurfaceFlinger
system 1095 1078 780164 51232 ffffffff 00000000 S VSyncThread
system 1096 1078 780164 51232 ffffffff 00000000 S ConsoleManagerT
system 1097 1078 780164 51232 ffffffff 00000000 S EventThread
system 1185 1078 780164 51232 ffffffff 00000000 S SensorService
system 1186 1078 780164 51232 ffffffff 00000000 S er.ServerThread
system 1187 1078 780164 51232 ffffffff 00000000 S UI
system 1188 1078 780164 51232 ffffffff 00000000 S WindowManager
system 1189 1078 780164 51232 ffffffff 00000000 S ActivityManager
system 1191 1078 780164 51232 ffffffff 00000000 S ProcessStats
system 1192 1078 780164 51232 ffffffff 00000000 S PackageManager
system 1193 1078 780164 51232 ffffffff 00000000 S FileObserver
system 1196 1078 780164 51232 ffffffff 00000000 S AccountManagerS
system 1198 1078 780164 51232 ffffffff 00000000 S PackageMonitor
system 1199 1078 780164 51232 ffffffff 00000000 S UEventObserver
system 1200 1078 780164 51232 ffffffff 00000000 S BatteryUpdateTi
system 1201 1078 780164 51232 ffffffff 00000000 S PowerManagerSer
system 1202 1078 780164 51232 ffffffff 00000000 S AlarmManager
system 1203 1078 780164 51232 ffffffff 00000000 S SoundPool
system 1204 1078 780164 51232 ffffffff 00000000 S SoundPoolThread
system 1205 1078 780164 51232 ffffffff 00000000 S er$SensorThread
system 1208 1078 780164 51232 ffffffff 00000000 S InputDispatcher
system 1209 1078 780164 51232 ffffffff 00000000 S InputReader
system 1210 1078 780164 51232 ffffffff 00000000 S BluetoothManage
system 1220 1078 780164 51232 ffffffff 00000000 S MountService
system 1221 1078 780164 51232 ffffffff 00000000 S VoldConnector
system 1222 1078 780164 51232 ffffffff 00000000 S NetdConnector
system 1223 1078 780164 51232 ffffffff 00000000 S CallbackHandler
system 1224 1078 780164 51232 ffffffff 00000000 S CallbackHandler
system 1226 1078 780164 51232 ffffffff 00000000 S NetworkStats
system 1227 1078 780164 51232 ffffffff 00000000 S NetworkPolicy
system 1228 1078 780164 51232 ffffffff 00000000 S WifiP2pService
system 1229 1078 780164 51232 ffffffff 00000000 S WifiStateMachin
system 1230 1078 780164 51232 ffffffff 00000000 S WifiService
system 1231 1078 780164 51232 ffffffff 00000000 S ConnectivitySer
system 1235 1078 780164 51232 ffffffff 00000000 S WifiManager
system 1236 1078 780164 51232 ffffffff 00000000 S Tethering
system 1237 1078 780164 51232 ffffffff 00000000 S CaptivePortalTr
system 1239 1078 780164 51232 ffffffff 00000000 S WifiWatchdogSta
system 1240 1078 780164 51232 ffffffff 00000000 S NsdService
system 1241 1078 780164 51232 ffffffff 00000000 S mDnsConnector
system 1242 1078 780164 51232 ffffffff 00000000 S CallbackHandler
system 1249 1078 780164 51232 ffffffff 00000000 S SyncHandlerThre
system 1250 1078 780164 51232 ffffffff 00000000 S AudioService
system 1251 1078 780164 51232 ffffffff 00000000 S backup
system 1256 1078 780164 51232 ffffffff 00000000 S AppWidgetServic
system 1259 1078 780164 51232 ffffffff 00000000 S AsyncTask #1
system 1331 1078 780164 51232 ffffffff 00000000 S UsbService host
system 1332 1078 780164 51232 ffffffff 00000000 S watchdog
system 1338 1078 780164 51232 ffffffff 00000000 S LocationManager
system 1340 1078 780164 51232 ffffffff 00000000 S CountryDetector
system 1341 1078 780164 51232 ffffffff 00000000 S ThrottleService
system 1344 1078 780164 51232 ffffffff 00000000 S NetworkTimeUpda
看看,System_Server进程有多繁重,里面有这么多的线程,图中黄色高亮的是各个service的主服务线程,每个service都会有一个服务主线程和若干个后台线程,实际运行中数量会动态增长,因为应用程序对Service 接口的远程调用会运行在专门的Binder线程(关于Binder 和 Service 请参考 图解Android - Binder 和 Service)。
在这些服务中,下面几个最为重要,因为他们关系到应用程序如何启动,响应用户输入,并最终将图像输出显示。因此被广泛的讨论和学习,他们是
* Window Manager Service.
* Activity Manager Service.
* Surface Flinger
* Input Manager Service.
本文将通过一张大图描述这些Service之间的关系,让读者对上述的过程有个大致的了解,每个Service内部运行的细节将在独立的章节进行学习。
原始大图可以在 (https://github.com/samchen2009/android_uml) 下载
神奇吧,通过一张图我们就可以将几十万行代码进行了一个高度的概括。要想图中每个方块箭头代表什么意思?请参考文章 (http://www.cnblogs.com/samchen2009/p/3315999.html)。这里,我们用不同的颜色来标识了不同的模块,其中一些颜色较深的代表最核心的部分,也是我们学习Android frameowk的入口。
OK, 让我们跳转到 Android GUI 系统 (1) - 概论, 开始Android Framewok之旅吧。
图解Android - System Service 概论 和 Android GUI 系统的更多相关文章
- Android Intent Service
Android Intent Service 学习自 Android 官方文档 https://blog.csdn.net/iromkoear/article/details/63252665 Ove ...
- Android application testing with the Android test framework
目录(?)[-] Android automated testing 1 How to test Android applications Tip 2 Unit tests vs functional ...
- 图解Android - Android GUI 系统 (1) - 概论
Android的GUI系统是Android最重要也最复杂的系统之一.它包括以下部分: 窗口和图形系统 - Window and View Manager System. 显示合成系统 - Surfac ...
- 图解Android - Android GUI 系统 (5) - Android的Event Input System
Android的用户输入处理 Android的用户输入系统获取用户按键(或模拟按键)输入,分发给特定的模块(Framework或应用程序)进行处理,它涉及到以下一些模块: Input Reader: ...
- 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)
Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...
- Android GUI系统
图解Android - Android GUI 系统 (1) - 概论 图解Android - Android GUI 系统 (2) - 窗口管理系统 图解Android - Android GUI ...
- Android服务(Service)研究
Service是android四大组件之一,没有用户界面,一直在后台运行. 为什么使用Service启动新线程执行耗时任务,而不直接在Activity中启动一个子线程处理? 1.Activity会被用 ...
- Android总结篇系列:Android Service
Service通常总是称之为“后台服务”,其中“后台”一词是相对于前台而言的,具体是指其本身的运行并不依赖于用户可视的UI界面,因此,从实际业务需求上来理解,Service的适用场景应该具备以下条件: ...
- Android中Service(服务)详解
http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...
随机推荐
- 转: CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法
from: http://www.linuxde.net/2014/05/15576.html CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法 2014/05/ ...
- 使用CuteSlider做网站炫酷的幻灯片
cuteSlider 1.预览 官网:http://www.cuteslider.com/ 应用:http://www.dutphonelab.org/ 2.资料 文档:http://pan.baid ...
- 分享一例脚本发版和tomcat重启脚本
线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat.tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下 ...
- 关联:objc_getAssociatedObject和objc_setAssociatedObject使用
为UIButton的category添加属性 UIButton+subTitle.h #import <UIKit/UIKit.h> #import <objc/runtime.h& ...
- WPF Extended WPF Toolkit
1.VS 2013 通过NUGet获取Extended WPF Toolkit 我自己的项目已安装 2.在自己页面引用Extended WPF Toolkit xmlns:xctk="htt ...
- 003医疗项目-关于<context:property-placeholder location="classpath:db.properties"/>的问题
项目结构如下:
- usb驱动开发4之总线设备驱动模型
在上文说usb_init函数,却给我们留下了很多岔路口.这次就来好好聊聊关于总线设备驱动模型.这节只讲理论,不讲其中的函数方法,关于函数方法使用参考其他资料. 总线.设备.驱动对应内核结构体分别为bu ...
- C++ c++初识
//c++初识 #include<iostream> //包含c++标准头文件 //<iostream>和<iostream.h>格式不一样,前者没有后缀,实际上, ...
- REST签名认证
139 开放平台与应用之间以REST协议进行通讯,为了保证通信的安全性,开放平台加入签名认证机制.应用一旦创建,系统生成唯一并且不公开的secretkey,只有应用的拥有者和开放平台知道.因此,当应用 ...
- 足球运动训练心得及经验分析-c语言学习调查
在准备预备作业02之前,我参考娄老师的提示,阅读了<[做中学(Learning By Doing)]之乒乓球刻意训练一年总结>一文. 在文章描述的字里行间,给予我的印象是系统.负责,娄老师 ...