图解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 ...
随机推荐
- 边工作边刷题:70天一遍leetcode: day 83
Find the Duplicate Number 要点:通过Pigeonhole principle对值空间做binary search,具体来说, low,mid,high都是值空间,所以范围是[ ...
- 2014 Super Training #7 C Diablo III --背包问题(DP)
原题: ZOJ 3769 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769 一个带有一些限制的背包问题. 假设在没有限 ...
- AC日记——逃出克隆岛 (bfs)
2059 逃出克隆岛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都 ...
- Javascript中的对象和原型(3)
在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...
- Android--使用VideoView播放视频
承香墨影 Android--使用VideoView播放视频 前言 之前有讲过如何使用SurfaceView配合MediaPlayer播放视频,其实Android还为开发人员提供了另外一种更简单 ...
- grunt的使用方法,环境配置和插件安装
虽然现在grunt的用的越来越少了,但是插件数量还是相当多的,另外grunt和gulp的使用相当相似: grunt需要安装node和npm 验证node是否安装:node -v 验证npm是否安装:n ...
- [Usaco2010 OPen]Triangle Counting 数三角形
[Usaco2010 OPen]Triangle Counting 数三角形 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 394 Solved: 1 ...
- jquery 现实多状态控件 (status & power(2,0)) = power(2,0)
数据库表设计的时候,会有很些多状态的需求,比如招聘职位需要同时发布到武汉,广州,上海 实现方法有很多种,我选择了在职位表中建一个 int 型字段保存多种状态,这个涉及到一些算法,我要查询武汉和广州的职 ...
- HMAC-MD5算法原理及实现
以下是分析节选,对于更详细的描述可以查阅RFC2104文档. HMAC需要一个加密用散列函数(表示为H)和一个密钥K. 假设H是一个将数据块用一个基本的迭代压缩函数来加密的散列函数. 用B来表 ...
- Code First开发系列之管理并发和事务(转)
转自:http://www.cnblogs.com/farb/p/ConcurrencyAndTransctionManagement.html 返回<8天掌握EF的Code First开发&g ...