通过 图解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) 下载

图解Android - System Service 概论 和 Android GUI 系统_第1张图片

神奇吧,通过一张图我们就可以将几十万行代码进行了一个高度的概括。要想图中每个方块箭头代表什么意思?请参考文章 (http://www.cnblogs.com/samchen2009/p/3315999.html)。这里,我们用不同的颜色来标识了不同的模块,其中一些颜色较深的代表最核心的部分,也是我们学习Android frameowk的入口。

OK, 让我们跳转到 Android GUI 系统 (1) - 概论, 开始Android Framewok之旅吧。

更多相关文章

  1. Android线程学习
  2. Android系统架构
  3. Android GWES之Android消息系统
  4. Android键盘系统
  5. [原]如何在Android用FFmpeg+SDL2.0解码图像线程
  6. Android API版本对应Android系统版本及内核版本和代号
  7. Android的系统构架
  8. Android编译系统分析

随机推荐

  1. Android动画效果-更新中
  2. Android应用开发之RelativeLayout (相对
  3. android 程序启动界面的短暂黑屏解决办法
  4. [Android]发布Sqlite数据库
  5. Android(安卓)onDraw
  6. Android的数据过滤机制
  7. Android(安卓)AIDL 双向调用的使用及相关
  8. android 动画
  9. 【Android】GridView添加网格线
  10. Android动态效果Animation