图解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 ...
随机推荐
- 如何用ZBrush雕刻出栩栩如生的头发(一)
之前的ZBrush教程我们学习了使用SubTool为模型添加了头发效果,本讲对模型头发雕刻技巧和细节进行调整.文章内容仅以fisker老师讲述为例,您也可以按照自己的想法,跟着老师的步调进行创作,发挥 ...
- HDU 1102 Constructing Roads
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Android性能测试工具Emmagee介绍
Emmagee介绍 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系统性能监视器类似,它提供的是数据采集的功能,而行为 ...
- Android Handler处理机制 ( 一 )(图+源码分析)——Handler,Message,Looper,MessageQueue
android的消息处理机制(图+源码分析)——Looper,Handler,Message 作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习 google大牛们的设计思想. ...
- 【原创】有关Silverlight DataGrid双击事件的分析 完整分析 代码与示例
公司项目用的silverlight,而且silverlight一些技术 资料比较少.所以分享出来 给大家参考参考. 有关Silverlight中DataGrid 双击事件 的代码 如下: 1. 前台x ...
- [QoS]cisco3560限速配置案例-收集于网工泡泡
网络中常用到这些:CISCO和H3C-MAC过滤+端口限速+端口镜像+端口隔离 不同的方式不同的思想:嘎嘎 其他各个厂商的限速链接:http://pan.baidu.com/s/1hrIMoSG 密码 ...
- CentOS7 SSH相关
1.查看SSH是否已经安装,命令: rpm -qa |grep ssh 如果列出了openssh-x.x开头的软件名,代表已经安装 如果没有安装,使用命令安装: yum install ssh 2.如 ...
- Nginx支持连接数的问题
据网上有人说nginx的配置中: nginx支持的最大连接数与以下因素有关: worker_processes ; events { worker_connections ; } ulimit -a ...
- DWZ (JUI) 教程 navTab 刷新分析
navTab的刷新在doc文件里也有说明 首先 在form表单里指定好回调函数 * <form action="/user.do?method=save" onsubmit= ...
- 使用Spring.net中对Ado.net的抽象封装来访问数据库
使用Spring.net中对Ado.net的抽象封装来访问数据库 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入 ...