图解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_serversystem 1083 1078 780164 51232 ffffffff 00000000 S GCsystem 1084 1078 780164 51232 ffffffff 00000000 S Signal Catchersystem 1085 1078 780164 51232 ffffffff 00000000 S JDWPsystem 1086 1078 780164 51232 ffffffff 00000000 S ReferenceQueueDsystem 1087 1078 780164 51232 ffffffff 00000000 S FinalizerDaemonsystem 1088 1078 780164 51232 ffffffff 00000000 S FinalizerWatchdsystem 1089 1078 780164 51232 ffffffff 00000000 S Binder_1system 1090 1078 780164 51232 ffffffff 00000000 S Binder_2system 1093 1078 780164 51232 ffffffff 00000000 S SurfaceFlingersystem 1095 1078 780164 51232 ffffffff 00000000 S VSyncThreadsystem 1096 1078 780164 51232 ffffffff 00000000 S ConsoleManagerTsystem 1097 1078 780164 51232 ffffffff 00000000 S EventThreadsystem 1185 1078 780164 51232 ffffffff 00000000 S SensorServicesystem 1186 1078 780164 51232 ffffffff 00000000 S er.ServerThreadsystem 1187 1078 780164 51232 ffffffff 00000000 S UIsystem 1188 1078 780164 51232 ffffffff 00000000 S WindowManagersystem 1189 1078 780164 51232 ffffffff 00000000 S ActivityManagersystem 1191 1078 780164 51232 ffffffff 00000000 S ProcessStatssystem 1192 1078 780164 51232 ffffffff 00000000 S PackageManagersystem 1193 1078 780164 51232 ffffffff 00000000 S FileObserversystem 1196 1078 780164 51232 ffffffff 00000000 S AccountManagerSsystem 1198 1078 780164 51232 ffffffff 00000000 S PackageMonitorsystem 1199 1078 780164 51232 ffffffff 00000000 S UEventObserversystem 1200 1078 780164 51232 ffffffff 00000000 S BatteryUpdateTisystem 1201 1078 780164 51232 ffffffff 00000000 S PowerManagerSersystem 1202 1078 780164 51232 ffffffff 00000000 S AlarmManagersystem 1203 1078 780164 51232 ffffffff 00000000 S SoundPoolsystem 1204 1078 780164 51232 ffffffff 00000000 S SoundPoolThreadsystem 1205 1078 780164 51232 ffffffff 00000000 S er$SensorThreadsystem 1208 1078 780164 51232 ffffffff 00000000 S InputDispatchersystem 1209 1078 780164 51232 ffffffff 00000000 S InputReadersystem 1210 1078 780164 51232 ffffffff 00000000 S BluetoothManagesystem 1220 1078 780164 51232 ffffffff 00000000 S MountServicesystem 1221 1078 780164 51232 ffffffff 00000000 S VoldConnectorsystem 1222 1078 780164 51232 ffffffff 00000000 S NetdConnectorsystem 1223 1078 780164 51232 ffffffff 00000000 S CallbackHandlersystem 1224 1078 780164 51232 ffffffff 00000000 S CallbackHandlersystem 1226 1078 780164 51232 ffffffff 00000000 S NetworkStatssystem 1227 1078 780164 51232 ffffffff 00000000 S NetworkPolicysystem 1228 1078 780164 51232 ffffffff 00000000 S WifiP2pServicesystem 1229 1078 780164 51232 ffffffff 00000000 S WifiStateMachinsystem 1230 1078 780164 51232 ffffffff 00000000 S WifiServicesystem 1231 1078 780164 51232 ffffffff 00000000 S ConnectivitySersystem 1235 1078 780164 51232 ffffffff 00000000 S WifiManagersystem 1236 1078 780164 51232 ffffffff 00000000 S Tetheringsystem 1237 1078 780164 51232 ffffffff 00000000 S CaptivePortalTrsystem 1239 1078 780164 51232 ffffffff 00000000 S WifiWatchdogStasystem 1240 1078 780164 51232 ffffffff 00000000 S NsdServicesystem 1241 1078 780164 51232 ffffffff 00000000 S mDnsConnectorsystem 1242 1078 780164 51232 ffffffff 00000000 S CallbackHandlersystem 1249 1078 780164 51232 ffffffff 00000000 S SyncHandlerThresystem 1250 1078 780164 51232 ffffffff 00000000 S AudioServicesystem 1251 1078 780164 51232 ffffffff 00000000 S backupsystem 1256 1078 780164 51232 ffffffff 00000000 S AppWidgetServicsystem 1259 1078 780164 51232 ffffffff 00000000 S AsyncTask #1system 1331 1078 780164 51232 ffffffff 00000000 S UsbService hostsystem 1332 1078 780164 51232 ffffffff 00000000 S watchdogsystem 1338 1078 780164 51232 ffffffff 00000000 S LocationManagersystem 1340 1078 780164 51232 ffffffff 00000000 S CountryDetectorsystem 1341 1078 780164 51232 ffffffff 00000000 S ThrottleServicesystem 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线程学习
- 图解Android(安卓)- Android(安卓)GUI 系统 (5) - Android的Even
- Android-线程笔记
- Android系统架构
- Android进程与线程基本知识
- ANDRIOD学习笔记之nand、root以及主要调试工具篇
- 这是一份全面 & 详细的Android学习指南
- Android,谁动了我的内存(1)
- Android(安卓)GWES之Android消息系统