android系統服務們

System_Server進程

運行在system server進程中的服務比較多,這是整個android框架的基礎

 
Native服務

SurfaceFlinger
這是framebuffer合成的服務,將各個應用程序及應用程序中的邏輯窗口圖像數據(surface)合成到一個物理窗口中顯示(framebuffer)的服務程序

 
Java服務:

這部分的服務大部分都有一個供應用進程使用的manager類,這就是一個RPC調用,用戶經過調用xxxManager的方法,實際上被Binder給遷移到system_server進程中對應的xxxManagerService中對應的方法,並將結果再經過binder帶回。

Android系統提供的系統服務接口,以下表所示:
 
服務名稱                                               返回的對象                             服務說明

WINDOW_SERVICE                       WindowManager                 管理打開的窗口程序
LAYOUT_INFLATER_SERVICE     LayoutInflater                       取得xml裏定義的view
ACTIVITY_SERVICE                      ActivityManager                   管理應用程序的系統狀態
POWER_SERVICE                         PowerManger                      電源的服務
ALARM_SERVICE                          AlarmManager                     鬧鐘的服務
NOTIFICATION_SERVICE             NotificationManager             狀態欄的服務
KEYGUARD_SERVICE                  KeyguardManager               鍵盤鎖的服務
LOCATION_SERVICE                    LocationManager                 位置的服務,如GPS
SEARCH_SERVICE                       SearchManager                   搜索的服務
VIBRATOR_SERVICE                    Vibrator                               手機震動的服務
CONNECTIVITY_SERVICE           Connectivity                         網絡鏈接的服務
WIFI_SERVICE                              WifiManager                        Wi-Fi服務
TELEPHONY_SERVICE               TeleponyManager                電話服務
INPUT_METHOD_SERVICE         InputMethodManager          輸入法服務
UI_MODE_SERVICE                     UiModeService                   人機界面模式服務
DOWNLOAD_SERVICE                 DownloadService               網絡下載服務

1. EntropyService
熵服務,週期性的加載和保存隨機信息。主要是linux開機後,/dev/random的狀態多是可預知的,這樣一些須要隨機信息的應用程序就可能會有問題。這個無需提供應用程序接口。

2. PowerManagerService –> PowerManager
Android 的電源管理也是很重要的一部分。好比在待機的時候關掉不用的設備,待機時屏幕和鍵盤背光的關閉,用戶操做的時候該打開多少設備等等。

3. ActivityManagerService->ActivityManager
這個是整個Android framework框架中最爲核心的一個服務,管理整個框架中任務、進程管理, Intent解析等的核心實現。雖然名爲Activity的Manager Service,但它管轄的範圍,不僅是Activity,還有其餘三大組件,和它們所在的進程。也就是說用戶應用程序的生命管理,都是由他負責的。

4. TelephonyRegistry->TelephonyManager
電話註冊、管理服務模塊,能夠獲取電話的連接狀態、信號強度等等。<能夠刪掉,但要看的大概明白>

5. PackageManagerService -> PackageManager
包括對軟件包的解包,驗證,安裝以及升級等等,對於咱們如今不能安裝.so文件的問題,應該先從這塊着手分析緣由。

6. AccountManagerService -> AccountManager
A system service that provides  account, password, and authtoken management for all accounts on the device。

7. ContentService -> ContentResolver
內容服務,主要是數據庫等提供解決方法的服務。

8. BatteryService
監控電池充電及狀態的服務,當狀態改變時,會廣播Intent

9. HardwareService
通常是ring和vibrate的服務程序

10. SensorService -> SensorManager
管理Sensor設備的服務,負責註冊client設備及當client須要使用sensor時激活Sensor

11. WindowManagerService -> WindowManager -> PhoneWindowManager
和ActivityManagerService高度粘合窗口管理,這裏最核心的就是輸入事件的分發和管理。

12. AlarmManagerService -> AlarmManager
鬧鐘服務程序

13. BluetoothService -> BluetoothDevice
藍牙的後臺管理和服務程序

14. StatusBarService -> StatusBarManager
負責statusBar上圖標的更新、動畫等等的服務,服務不大。 

15. ClipboardService -> ClipboardManager
和其餘系統的clipBoard服務相似,提供複製黏貼功過。
 
16. InputMethodManagerService -> InputMethodManager
輸入法的管理服務程序,包括什麼時候使能輸入法,切換輸入法等等。

17. NetStatService
手機網絡服務

18. ConnectivityService -> ConnectivityManager
網絡鏈接狀態服務,可供其餘應用查詢,當網絡狀態變化時,也可廣播改變。

19. AccessibilityManagerService-> AccessibilityManager
這塊可能要仔細看一下,主要是一些View得到點擊、焦點、文字改變等事件的分發管理,對整個系統的調試、問題定位等,也須要最這個服務仔細過目一下。

20. NotificationManagerService -> NotificationManager
負責管理和通知後臺事件的發生等,這個和statusbar膠黏在一塊兒,通常會在statusbar上添加響應圖標。用戶能夠經過這知道系統後臺發生了什麼事情。

21. MountService
磁盤加載服務程序,通常要和一個linux daemon程序如vold/mountd等合做起做用,主要負責監聽並廣播device的mount/unmount/bad removal等等事件。

22. DeviceStorageMonitorService
監控磁盤空間的服務,當磁盤空間不足10%的時候會給用戶警告

23. LocationManagerService -> LocationManager
要加入GPS服務等,這部分要細看,如今應用中的navigation沒響應,能夠今後處着手看一下

24. SearchManagerService -> SearchManager
The search manager service handles the search UI, and maintains a registry of searchable activities.

25. Checkin Service(FallbackCheckinService)
貌似checkin service是google提供的包,沒有源代碼,源碼只有fallbackCheckinService

26. WallpaperManagerService -> WallpaperManager
管理桌面背景的服務,深度定製化桌面系統,須要看懂並擴展<同時要兼容>這部分
 
27. AudioService -> AudioManager
AudioFlinger的上層管理封裝,主要是音量、音效、聲道及鈴聲等的管理

28. HeadsetObserver
耳機插拔事件的監控小循環

29. DockObserver
若是系統有個座子,當手機裝上或拔出這個座子的話,就得靠他來管理了 

30. BackupManagerService -> BackupManager
備份服務

31. AppWidgetService -> AppWidgetManager
Android可讓用戶寫的程序以widget的方式放在桌面上,這就是這套管理和服務的接口 

32. StatusBarPolicy
管理哪一個圖標該在status bar上顯示的策略。



mediaServer服務進程
MediaServer服務基本上都是native的services,mediaServer進程也是在init.rc中啓動的,它不是一個daemon進程,這點容易搞混。他也是和systemserver進程相似的系統服務進程,提供應用進程的RPC調用的真正服務代碼所運行的位置。其服務都是和媒體錄播放有關,主要有三個服務:
 
AudioFlinger
聲音的錄播放服務,包括混音等

MediaPlayerService
提供媒體播放服務,opencore是這塊的核心模塊,對java端的接口在mediaplayer.java

CameraService
提供camera的錄製、preview等功能的服務

AudioPolicyService
主要功能有檢查輸入輸出設備的鏈接狀態及系統的音頻策略的切換等。java

相關文章
相關標籤/搜索