通过 图解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之旅吧。

更多相关文章

  1. Android线程学习
  2. 图解Android(安卓)- Android(安卓)GUI 系统 (5) - Android的Even
  3. Android-线程笔记
  4. Android系统架构
  5. Android进程与线程基本知识
  6. ANDRIOD学习笔记之nand、root以及主要调试工具篇
  7. 这是一份全面 & 详细的Android学习指南
  8. Android,谁动了我的内存(1)
  9. Android(安卓)GWES之Android消息系统

随机推荐

  1. querySelector
  2. 【原创手写笔记】面试准备,关于Adaboost &
  3. 【图文并茂】通过实例理解word2vec之Skip
  4. JavaScript:留言板添加字数实时统计与禁
  5. 【ASM】ASMLIB 系列
  6. ngx_pagespeed-nginx前端优化模块介绍
  7. 自动化批量管理工具salt-ssh - 运维小结
  8. 【故障处理】imp-00051,imp-00008
  9. 【ROLLUP】Oracle分组函数之ROLLUP魅力
  10. Tomcat利用MSM实现Session共享方案解说