1. 程式人生 > >Android的系統服務一覽

Android的系統服務一覽

System_Server程序

執行在system server程序中的服務比較多,這是整個Android框架的基礎

Native服務

SurfaceFlinger

這是framebuffer合成的服務,將各個應用程式及應用程式中的邏輯視窗影象資料(surface)合成到一個物理視窗中顯示(framebuffer)的服務程式

Java服務:
http://hovertree.com/menu/java/
這部分的服務大部分都有一個供應用程序使用的manager類,這就是一個RPC呼叫,使用者通過呼叫xxxManager的方法,實際上被Binder給遷移到system_server程序中對應的xxxManagerService中對應的方法,並將結果再通過binder帶回。 


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
主要功能有檢查輸入輸出裝置的連線狀態及系統的音訊策略的切換等。

相關推薦

Android系統服務一覽

System_Server程序執行在system server程序中的服務比較多,這是整個Android框架的基礎Native服務SurfaceFlinger這是framebuffer合成的服務,將各個應用程式及應用程式中的邏輯視窗影象資料(surface)合成到一個物理視窗中顯示(framebuffer)的

Android------------------系統服務呼叫的學習

一、ServiceManager的方法: 此方法getService,用於根據名稱獲取當前的IBinder的代理(並沒有直接獲取服務),               服務提供的功能是依靠IBinder間接呼叫的(返回值IBinder)  // 在真機的環境中是有此類: android.os.Service

Android系統服務啟動順序

系統服務啟動分為三類 1. startBootstrapServices() 2. startCoreServices() 3. startOtherServices() startBootstrapServices 1. 啟動Installer服務 2. 啟動Activi

Android 系統服務的獲取與建立

在Android系統中,有一群很厲害的“傢伙”,如果把Android系統比喻成一個大幫派,那麼這群“傢伙”的地位就像那各個分堂的堂主一樣,所有的應用就像是各個小馬哥,他們要做什麼事情,都要堂主審批,審批過了才能提交總部處理。 接下來我會牽扯出幾個常用的堂主,並且簡單介紹下他們的建立過程和對應的功能 Act

Android系統服務之看門狗(WatchDog)

現在的CPU基本上都帶有WatchDog功能,這種硬體的WatchDog可以在系統死掉(死鎖或者程式跑飛)後重啟系統,讓系統回到可以工作的狀態。WatchDog不能防止系統死掉,但是它能夠起死回生,從而提高系統的可用性。 硬體級的WatchDog也有它的侷限性,它只能在系統

android 系統服務(service)

-服務(service)是Android 系統中的重要元件,服務可以在不顯示介面的情況下在後臺執行制定的任務或者進行兩個不同程序間的通訊, android在後臺執行著許多服務,這些服務在系統啟動時被開啟,支援系統的正常工作。例如:來電顯示服務,在程式設計是通過

Android 系統服務一覽表

在《Zygote程序【3】——SystemServer的誕生》一文中介紹了SystemServer的誕生,本文來看一下SystemServer中初始化的系統服務。 1.AccountManagerService Android賬戶服務,提供了對賬戶、密碼、授權的集中管理。

Android系統服務(SystemService)簡介

什麼是SystemService 我們在Android開發過程中經常會用到各種各樣的系統管理服務,如進行視窗相關的操作會用到視窗管理服務WindowManager,進行電源相關的操作會用到電源管理服務PowerManager,還有很多其他的系統管理服務,如通知

Android核心服務解析篇(三)——Android系統的啟動

onf med cin gets get lld 系統屬性 基本 安裝模塊 從大的方面來說。Android系統的啟動能夠分為兩個部分:第一部分是Linux核心的啟動,第二部分是Android系統的啟動。第一部分主要包含系統引導,核心和驅動程序等,因為它們不屬於本篇要講的

怎樣用Google APIs和Google的應用系統進行集成(2)----Google APIs的全部的RESTFul服務一覽

account view coo bean tps pla ads count dsm 上篇文章,我提到了,Google APIs暴露了86種不同種類和版本號的API。我們能夠通過在瀏覽器裏面輸入https://www.googleapis.com/discover

Android原始碼新增自定義系統服務

1、建立AIDL檔案 在原始碼frameworks/base/core/java/android/os/下面新增了一個ICCCService.aidl   2、將AIDL檔案放到編譯frameworks/base/Android.mk中 在frameworks/ba

Android中system server程序啟動流程原始碼解析 系統服務啟動

system server 前言 System Server fork SystemServer SystemServer.main() SystemServer.createSystemContext SystemSe

Android : 為系統服務新增 SeLinux 許可權 (Android 9.0)

一、SElinux在Android 8.0後的差異:   從Android 4.4到Android 7.0的SELinux策略構建方式合併了所有sepolicy片段(平臺和非平臺),然後在根目錄生成單一檔案,而Android 8.0開始關於selinux架構也類似於HIDL想把系統平臺的selinux策略和

android framework中新增自定義系統服務

新增系統服務需要新增aidl,service,manager檔案,需要修改SystemServer,Context,ContextImpl 下面舉例進行說明,主要新增一個服務,用於獲取系統時間和版本號 1.在frameworks/base/core/java/androi

Android系統篇之----免root實現Hook系統服務攔截方法

一、Binder機制回顧 在之前一篇文章中介紹了 Android中的Binder機制和系統遠端服務呼叫機制,本文將繼續借助上一篇的內容來實現Hook系統服務攔截指定方法的邏輯,瞭解了上一篇文章之後,知道系統的服務其實都是一個遠端Binder物件,而這個物件都是由Se

Android之D面試題②程序保活的一般套路(1畫素Activity/賬號同步/Jobscheduler/系統服務捆綁)

       讀到這裡,你或許有一個疑問,假設現在記憶體不足,空程序都被殺光了,現在要殺後臺程序,但是手機中後臺程序很多,難道要一次性全部都清理掉?當然不是的,程序是有它的優先順序的,這個優先順序通過程序的adj值來反映,它是linux核心分配給每個系統程序的一個值,代表程序的優先順序,程序回收機制就是根據這

Android系統篇之----編寫系統服務並且將其編譯到系統原始碼中

點選頂部藍字"編碼美麗"關注公眾號 在之前已經介紹了一篇關於如何 編寫簡單的驅動以及訪問該驅動的小程式,最後將程式編譯到Android核心原始碼中通過程式訪問驅動驗證是可以通過的,那麼本文就繼續這個知識點,把這個驅動程式通過JNI連線建立一個系統服務,提供給上層應用訪問改服務功能,可以看到前一篇介

定製Android系統開發之四——系統服務實現的分析

在上一篇博文中,我給出了實現系統服務的步驟,這篇博文則將分析一下,為什麼這樣的實現方式能夠實現客戶端/伺服器模式。 RadioManagerService 首先來看一下RadioManagerService是如何建立的。 如果我沒有記錯的話,Syste

Android --- 常用的系統服務(二)

目前涉及的互動視窗Activity、 Dialog WindowManager視窗管理器 可以完成視窗的顯示、 更新、 銷燬的處理 獲取視窗管理器物件. private WindowManager wm; ... //獲取物件 wm = (Wind

Android常用系統服務 學習筆記

根據上面的資訊,寫出下面的獲得物件的方式是通過getSystemService(),其他的可以對號入座: TelephonyManager manager=(TelephonyManager)getSystemService(Context.TELEPH