图解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 ...
随机推荐
- 【实践】jdbc批量插入数据
参考文献:http://my.oschina.net/u/1452675/blog/203670 http://superjavason.iteye.com/blog/255423 /*测试批量写入数 ...
- UESTC 916 方老师的分身III --拓扑排序
做法: 如果有a<b的关系,则连一条a->b的有向边,连好所有边后,找入度为0的点作为起点,将其赋为最小的价值888,然后其所有能到的端点,价值加1,加入队列,删去上一个点,然后循环往复, ...
- [3D跑酷] UI事件处理系统
在我们的Unity游戏项目中,GUI的表现采用NGUI.记录一下我们的处理方式: 需要解决的问题 1.需要处理大量按钮的点击事件 2.需要处理界面跳转事件 3.需要处理界面元素更新事件 解决方案 GU ...
- AppScan Source V8.8 中弃用的功能
从 AppScan Source V8.8 开始,不再支持以下操作系统: Microsoft Windows XP Microsoft Windows Server 2003,所有版本和修订版 此 ...
- Git 详解
1. Git 1.1. Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状 态可以是不同的文 ...
- 关闭log4j 输出 DEBUG org.apache.commons.beanutils.*
2016-03-23 10:52:26,860 DEBUG org.apache.commons.beanutils.MethodUtils - Matching name=getEPort on c ...
- css3d
立方体:http://sandbox.runjs.cn/show/1h6zvghj 原理分析:(左负右正) x:与屏幕水平:(在屏幕上) y:与屏幕水平方向垂直(在屏幕上) z:垂直于屏幕(在屏幕外) ...
- [Android学习笔记]理解焦点处理原理的相关记录
焦点处理相关记录 以下所涉及的焦点部分,只是按键移动部分,不明确包含Touch Focus部分 需解决问题 控件的下一个焦点是哪? 分析思路 当用户通过按键(遥控器等)触发焦点切换时,事件指令会通过底 ...
- Linux Linux程序练习十二(select实现QQ群聊)
//头文件--helper.h #ifndef _vzhang #define _vzhang #ifdef __cplusplus extern "C" { #endif #de ...
- opencv中的图像复制、保存和显示
接下来几天会写一个opencv的基础系列,与各位相互学习! &1 图像操作 声明图像指针:IplImage* 读入图像: cvLoadImage 创建图像:cvCreateImage 复制图像 ...