图解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 ...
随机推荐
- 怎样在python中获取时间?
from time import strftime date = strftime('%y%m%d') hour = strftime('%H%M%S')
- 第1章 UML基础:类的关系
1. 类的关系 1.1 继承和实现:继承表示有父子关系 1.2 依赖:(use–a),表示一个类要使用(use)另一个类. (1)类图 (2)三种依赖方式:函数参数或返回值.局部变量和静态成员变量或函 ...
- 分层开发(MySchool总结)
由于分层之间存在各层之间的关系窗体之间的方法跳转,故有需要者可以进行下载本地文件 MySchool.rar 3304KB 5/22/2016 9:43:28 AM ,代码中有注释, 上述代码,属个人所 ...
- 分层开发MySchool总结
由于分层之间存在各层之间的关系窗体之间的方法跳转,故有需要者可以进行下载本地文件 MySchool.rar 3304KB 5/22/2016 9:43:28 AM ,代码中有注释,
- mysql视图的创建
视图内容的变化跟它所依赖的表的变化是同步的也是一致的. create or replace view viewname as select a.id.,a.name,a.sex,b.aid,b.sco ...
- Converting a Polygon ZM shape file to a regular Shape Polygon
from:http://blog.csdn.net/qb371/article/details/8102109 Locate the following tool - ArcToolbox > ...
- canvas模仿微信抢红包功能
1.原理:先创建一张img图片,用filter滤镜制作毛玻璃效果. 2.利用绝对定位,使canvas刚好盖在img上面. 3.利用canvas原生clip函数剪辑一个圆形. 地址:http://san ...
- css继承性和不继承的属性。
在CSS中并不是所有的属性都是能够继承的,因此在使用时一定要了解哪些是能够继承的哪些是不能够继承的.visibility和cursor能够被所有元素继承:letter-spacing,word-spa ...
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析(转)
在前文中,我们分析了Android应用程序窗口的运行上下文环境的创建过程.由此可知,每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一 ...
- python wordcloud
python wordcloud 对电影<我不是潘金莲>制作词云 上个星期五(16/11/18)去看了冯小刚的最新电影<我不是潘金莲>,电影很长,有点黑色幽默.看完之后我就去知 ...