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

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM