【正文】
ervice 在 Android , 也會啟動 Java 層的 SensorService 服務(wù) (即), 並透過 ServiceManager 去登記到 Binder Driver 裡 ,成為另一個核心服務(wù) 。HAL觀點: ServiceManager和 IBinder扮演什麼角色呢 ? By 高煥堂 ? ServiceManager的角色:它 也是一項 Core Service ServiceManager 本身也是一個 Native Service,而且是天字第一號的核心服務(wù)(Core Service)。 在系統(tǒng)啟動時 (即執(zhí)行 時 ),就會立即啟動 它,並登記 (Register)成為 Binder Driver 裡的第一號 Native Service。如下圖所示: N a t i v e S e r v i c e M a n a g e r IBi n d e r Bi n d e r D ri v e r L i n u x K e r n e l re f e r e n c e A n d r o i d S e r v i c e S e n s o rS e r v i c e IBi n d e r A n d r o i d Ru n t i m e H A L 圖 啟動了許多核心服務(wù) 在 開機過程中,會啟動許多項核心服務(wù), ServiceManager 和 SensorService 只是其中的兩個而已。例如, C++層 Client模組可以綁定 ServiceManager而取得它的 IBinder 接口 (Interface),然後透過 IBinder 而呼叫到 ServiceManager 的transact()函數(shù)。 ? 使用 ServiceManager的 IServiceManager接口 由於 IBinder 接口裡只有 一個 transact()函數(shù),無法呈現(xiàn) ServiceManager 核心服務(wù)的各項功能或函數(shù)。於是,在 C++層增添一個 ,扮演 Adapter 的角色,將 IBinder 接口包裝起來,轉(zhuǎn)換出可呈現(xiàn) ServiceManager 服務(wù)各項功能的新接口 (即 IServiceManager)。 如下圖: N a t i v e S e r v i c e M a n a g e r