通過 圖解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之旅吧。