版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基於軟硬整合觀點(diǎn)D01_b認(rèn)識(shí)Android核心服務(wù)(b)By 高煥堂基於軟硬整合觀點(diǎn)3、區(qū)分兩種核心服務(wù):Android Service與Native Service 核心服務(wù)可以用Java撰寫(xiě);也可以用C+ 撰寫(xiě)。 以Java撰寫(xiě)的核心服務(wù)通稱(chēng)為Android Service(例如AudioService和SensorService等); 以C+撰寫(xiě)的核心服務(wù)則通稱(chēng)為Native Service (例如MediaPlayerService和CameraService等)。 Android Service又稱(chēng)為Java Service,是實(shí)現(xiàn)于應(yīng)用框架層(Framework)里的。 這里所講
2、的Service是系統(tǒng)服務(wù)(System Service),又稱(chēng)為Server;其與App開(kāi)發(fā)上所討論的Service不同。 Android Service以Java撰寫(xiě)。IBinderAndroid ServiceHAL/驅(qū)動(dòng)硬體Core LibrariesJNI 部分AndroidVMRuntimAndroid App Native Service則是實(shí)現(xiàn)于Runtime層里的Server。在系統(tǒng)服務(wù)開(kāi)發(fā)上,我們有二個(gè)途徑,一個(gè)是寫(xiě)成Android Service、其再透過(guò)JNI與HAL驅(qū)動(dòng)溝通;另一個(gè)途徑是,跳過(guò)Android Service,讓App透過(guò)JNI直接與Native Ser
3、vice溝通。MediaPlayer.javaEX.MediaPlayer.cppIBinder MediaPlayerService.cppOpenCore & DiverAndroid Runtime Core LibrariesJNI 部分VMAndroid AppmyService.javaJNI 部分myService.cppIBinder myServiceHAL/驅(qū)動(dòng)硬體Core LibrariesAndroidVMRuntimeAndroid App基於軟硬整合觀點(diǎn)4、核心服務(wù)的特性 其中,核心服務(wù)屬于Android平臺(tái)的系統(tǒng)服務(wù)模塊,在開(kāi)機(jī)過(guò)程,就會(huì)啟動(dòng)數(shù)十個(gè)核心服務(wù);例如M
4、ediaPlayerService、AudioService、SensorService等。ActivityManagerService WindowManagerServiceVold ServiceAudioFlinger MediaPlayerService CameraServiceLinux Kernel + Drivers + HWRuntimeInit進(jìn)程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerAndroid Service (Java)Native Service (C+)System Se
5、rver關(guān)于核心服務(wù)的啟動(dòng),就是在開(kāi)機(jī)時(shí),加載Linux kernel部分,進(jìn)行Kernel-Space的初始化,然后加載硬件驅(qū)動(dòng)程序,就啟動(dòng)了Linux系統(tǒng)。隨后切換至User-Space,創(chuàng)建init進(jìn)程,讀取 init.rc文檔,依據(jù)其內(nèi)容的指示而先啟動(dòng)Native Service,再啟動(dòng)Android Service。就完成核心服務(wù)的啟程序了。由Linux內(nèi)核啟動(dòng)用戶(hù)空間的Init進(jìn)程* 解析腳本文件:Init.rcInit.rc是Android的初始化腳本由Init進(jìn)程創(chuàng)建ServiceManager和Zygote進(jìn)程。 由Zygote創(chuàng)建(VM和)SystemServer進(jìn)程。 核
6、心服務(wù)通常在特定的進(jìn)程里執(zhí)行。 必須提供IBinder接口,讓App進(jìn)行跨進(jìn)程的綁定(Bind)和呼叫。 因?yàn)楣蚕恚员仨毚_保多線裎安全(Thread-safe) 以C+類(lèi)別或Java類(lèi)別定義,誕生其對(duì)象, 請(qǐng)ServiceManager(簡(jiǎn)稱(chēng)SM)將該對(duì)象參考值加入到Binder Driver里。核心服務(wù)的特性 App可請(qǐng)SM協(xié)助而遠(yuǎn)距綁定某核心服務(wù), 此時(shí)SM會(huì)傳IBinder接口給App。 App可透過(guò)IBinder:transact()函數(shù)來(lái)與核心服務(wù)互息。 核心服務(wù)啟動(dòng)在先,應(yīng)用程序啟動(dòng)在后。 核心服務(wù)能以C+撰寫(xiě);也可以用Java撰寫(xiě)(如AudioService)。 核心服務(wù)與A
7、pp服務(wù)不同,App服務(wù)不會(huì)加入到Binder Driver里。基於軟硬整合觀點(diǎn)5、簡(jiǎn)介幾個(gè)Android Service 在Android Service里,常見(jiàn)的有如ActivityManager、LocationManager等。茲針對(duì)其中的幾個(gè)常見(jiàn)服務(wù)介紹如下: Activity Manager(活動(dòng)管理器):提供所有的應(yīng)用程序的生命周期,以及Activity之間的互動(dòng)之服務(wù)。 WindowManager(窗口管理器): 提供由關(guān)頻幕窗口之管理服務(wù)。 ResourceManager(資源管理器):管理程序使用的各項(xiàng)資源,例如:字符串、圖片、UI布局(Layout)定義檔。 Locati
8、onManager(位置管理器):提供位置服務(wù)(Location-based Service)。 TelephonyManager(電話管理器):提供有關(guān)手機(jī)通話的服務(wù),例如關(guān)閉電話等。 其它服務(wù)?;盾浻舱嫌^點(diǎn)6、簡(jiǎn)介幾個(gè)Native ServiceNative Service是以C+語(yǔ)言所撰寫(xiě)的核心服務(wù)。 在Native Service里,大家比較熟悉得有如ServiceManager、MediaPlayerService、Zygote、CameraService等等。 茲針對(duì)其中的幾個(gè)常見(jiàn)服務(wù)介紹如下: ServiceManager(服務(wù)管理器): 協(xié)助登錄與綁定系統(tǒng)服務(wù)。 Servi
9、ceManager是Android平臺(tái)里的一個(gè)基本模塊。在Android系統(tǒng)啟動(dòng)過(guò)程中,它 使用C/C+撰寫(xiě)Android的NativeService 模塊時(shí),可以透過(guò)defaultServiceManager()函數(shù)來(lái)取得ServiceManager模塊的IServiceManager 接口之指針。例如,在CameraService.cpp 程序里的instantiate()函數(shù),其內(nèi)容如下:/ CameraService.cppvoid CameraService:instantiate() defaultServiceManager()-addService( String16(medi
10、a.camera), new CameraService(); 它使用了defaultServiceManager()函數(shù)來(lái)取得ServiceManager模塊,然后呼叫其IServiceManager接口里的addService()函數(shù)來(lái)將自己對(duì)象(即CameraService類(lèi)別之對(duì)象)傳給ServiceManager模塊,請(qǐng)它登錄到Binder Kernel里,成為一個(gè)可提供遠(yuǎn)距服務(wù)之模塊(即CameraService模塊)。 Zygote服務(wù):Android最內(nèi)層有個(gè)Zygote 服務(wù)。它是Android Java層的孵化器。Zygote就在幕后復(fù)制孵化(Fork)出一個(gè)子進(jìn)程來(lái)給這些Java層的系統(tǒng)服務(wù)或應(yīng)用程序。所以,Android的應(yīng)用程序,以及上述的各項(xiàng)服務(wù),也都是由zygote所繁殖出來(lái)的。Zygote服務(wù)的架構(gòu)位置如下圖:forkFork ServiceLinux Kernel + Drivers + HWRuntimeInit進(jìn)程(讀取init.rc)MediaServerZy
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年包頭輕工職業(yè)技術(shù)學(xué)院面向社會(huì)公開(kāi)招聘工作人員9人的備考題庫(kù)完整參考答案詳解
- 2026年北侖區(qū)交通運(yùn)輸局編外人員公開(kāi)招聘?jìng)淇碱}庫(kù)含答案詳解
- 2026年中煤湖北地質(zhì)局集團(tuán)有限公司招聘?jìng)淇碱}庫(kù)及一套完整答案詳解
- 2026年九江職業(yè)大學(xué)附屬幼兒園教師招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 醫(yī)保資金管理內(nèi)控制度
- 藥店醫(yī)保刷卡內(nèi)控制度
- 社區(qū)內(nèi)控制度
- 高校科研外協(xié)費(fèi)內(nèi)控制度
- 學(xué)校事業(yè)單位內(nèi)控制度
- 企業(yè)內(nèi)控制度流程
- 司法局司法輔助人員考試真題及答案
- 網(wǎng)咖服務(wù)意識(shí)培訓(xùn)
- 放射性皮膚損傷護(hù)理(2025版)
- 員工心理健康評(píng)估量表及使用說(shuō)明
- 2025年私人銀行服務(wù)行業(yè)分析報(bào)告及未來(lái)發(fā)展趨勢(shì)預(yù)測(cè)
- 班組長(zhǎng)管理技巧及方法
- 國(guó)開(kāi)大學(xué)電大本科《組織行為學(xué)》2025期末試題及答案
- 2025及未來(lái)5年中國(guó)草本植物染發(fā)劑市場(chǎng)調(diào)查、數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年骨干教師考試試題(含答案)
- 學(xué)前教育專(zhuān)升本2025年幼兒教育心理學(xué)專(zhuān)項(xiàng)訓(xùn)練試卷(含答案)
- 新能源儲(chǔ)能電站應(yīng)急預(yù)案事故處置方案
評(píng)論
0/150
提交評(píng)論