【正文】
這些核心服務(wù)了。例如, C++層 Client模組可以綁定 ServiceManager而取得它的 IBinder 接口 (Interface),然後透過 IBinder 而呼叫到 ServiceManager 的transact()函數(shù)。 如下圖: 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 C+ + Cl i e n t 圖 C++層 Client呼叫 Service Manager 這 C++ Client能使用 C++層的 ServiceManager 服務(wù),但無法 使用 Java 層的SensorService 服務(wù) 了。 ? 使用 ServiceManager的 IServiceManager接口 由於 IBinder 接口裡只有 一個(gè) transact()函數(shù),無法呈現(xiàn) ServiceManager 核心服務(wù)的各項(xiàng)功能或函數(shù)。徒增加 C++ Client模組開發(fā)者的麻煩。於是,在 C++層增添一個(gè) ,扮演 Adapter 的角色,將 IBinder 接口包裝起來,轉(zhuǎn)換出可呈現(xiàn) ServiceManager 服務(wù)各項(xiàng)功能的新接口 (即 IServiceManager)。 同樣地,在 Java層也增添一個(gè) 類別,扮演 Adapter 的角色,將 IBinder 接口包裝起來,轉(zhuǎn)換出可呈現(xiàn) ServiceManager 服務(wù)各項(xiàng)功能的新接口 (即IServiceManager)。 如下圖: 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