版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基於軟硬整合觀點(diǎn)B02_c認(rèn)識線程(Thread)模式(c )By 高煥堂 當(dāng)我們啟動某一支AP時(shí),Android就會誕生新進(jìn)程(Process),并且將該AP程序加載這新誕生的進(jìn)程里。每個(gè)進(jìn)程在其誕生時(shí) 刻,都會誕生一個(gè)主線程,又稱為UI線程。UI線程的誕生 在進(jìn)程誕生時(shí)刻,除了誕生主線程之外, 還會替主線程誕生它專用的Message Queue和Looper。如下圖所示:21 這個(gè)Main Looper就是讓主線程沒事時(shí)就來執(zhí)行Looper,確保主線程永遠(yuǎn)活著而不會死掉;在執(zhí)行Looper時(shí),會持續(xù)觀察它的Message Queue是否有新的信息進(jìn)來; 如果有新信息進(jìn)來的話,主線程就會盡快
2、去處理(響應(yīng))它。 在Android環(huán)境里,一個(gè)應(yīng)用程序常包含有許多個(gè)類別,這些類別可以分布在不同進(jìn)程里執(zhí)行,或擠在一個(gè)進(jìn)程里執(zhí)行。例如有一個(gè)應(yīng)用程序的AndroidManifest.xml文件內(nèi)容如下:/ AndroidManifest.xml/ Android依據(jù)這個(gè)文件而將各類別布署于兩個(gè)進(jìn)程里執(zhí)行,如圖:12其中,F(xiàn)irstActivity和LoadActivity兩個(gè)類別會加載預(yù)設(shè)的進(jìn)程里。而LoadService則會加載于名為“remote”的獨(dú)立進(jìn)程里。 于是,由進(jìn)程#1的主線程去執(zhí)行FirstActivity和LoadActivity的onCreate() 等函數(shù)。而由進(jìn)程#2
3、的主線程去執(zhí)行LoadService的onCreate()等函數(shù)。 各進(jìn)程有自己的主(UI)線程2112 LoadService在獨(dú)立的進(jìn)程(名稱叫“remote”)里執(zhí)行。于是,F(xiàn)irstActivity與LoadService之間就屬于跨進(jìn)程的溝通了。這種跨進(jìn)程的溝通,就是大家熟知的IPC(Inter-Process Communication)機(jī)制了。這種IPC機(jī)制是透過底層驅(qū)動(Driver) 來實(shí)現(xiàn)的。如下圖: 在此圖的不同進(jìn)程里, 各有其主線程(Thread)。由于線程是不能越過進(jìn)程邊界的。所以,當(dāng)執(zhí)行LoadActivity的線程必須跨越進(jìn)程去執(zhí)行 LoadService( 的函
4、數(shù)) 時(shí),Android 的 內(nèi) 層 BinderSystem 即 刻 從LoadService 所在進(jìn)程的線程池啟動線程(BinderThread)來配合接力,由此BinderThread去執(zhí)行LoadService。練習(xí):綁定(Bind)遠(yuǎn)程的Service20 Binder System會從進(jìn)程的線程池(Thread pool)裡啟動一個(gè)線程來執(zhí)行Binder:onTransact()函數(shù)。當(dāng)Thread_a必須跨越進(jìn)程去執(zhí)行JavaBBinder對象時(shí),Android的內(nèi)層Binder System即刻從myService所在進(jìn)程的線程池啟動線程Thread_x來配合銜接Thread_a線程,由Thread_x去執(zhí)行JavaBBinder對象。 Android的每一個(gè)進(jìn)程里,通常含有一個(gè)線程池,讓跨進(jìn)程的線程得以進(jìn)行。雖然是由Thread_a與Thread_x相互合作與銜接而完成遠(yuǎn)距通訊的,但讓人們能單純地認(rèn)為是單一進(jìn)程(即Thread_a)跨越到另一個(gè)進(jìn)程去執(zhí)行JavaBBinder對象。雖然JavaBBinder是C/C+層級的;而myS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年紋繡工藝(眉形修復(fù)技巧)試題及答案
- 2025年大學(xué)大二(輪機(jī)工程)船舶動力裝置原理綜合測試試題及答案
- 2025年中職計(jì)算機(jī)軟件基礎(chǔ)(軟件基礎(chǔ)知識)試題及答案
- 2025年中職(建筑裝飾技術(shù))建筑裝飾工程施工組織設(shè)計(jì)試題及答案
- 2025年高職電子技術(shù)(電子技術(shù)實(shí)訓(xùn))試題及答案
- 2026年職業(yè)道德綜合測試(職業(yè)道德規(guī)范)試題及答案
- 2025年中職(物流服務(wù)與管理)客戶服務(wù)實(shí)務(wù)試題及答案
- 2025年大學(xué)第三學(xué)年(民航安全科學(xué)與工程)安全評估階段測試題及答案
- 2025年中職(電梯安裝與維修保養(yǎng))電梯安裝技術(shù)階段測試試題及答案
- 2025年中職第二學(xué)年(眼視光與配鏡)驗(yàn)光技術(shù)基礎(chǔ)試題及答案
- 銀行安全保衛(wèi)基礎(chǔ)知識考試試題及答案
- 2025年云南中煙工業(yè)公司招聘考試考試筆試試卷【附答案】
- 肝癌課件簡短
- 業(yè)務(wù)協(xié)同考核管理辦法
- 操盤手勞動合同附加協(xié)議
- 2025年中學(xué)生守則及中學(xué)生日常行為規(guī)范
- 理解當(dāng)代中國 大學(xué)英語綜合教程1(拓展版)課件 B1U3 Into the green
- 醫(yī)藥展會活動方案
- 【庫潤數(shù)據(jù)】2025口服抗衰消費(fèi)者趨勢洞察報(bào)告
- 快遞車輛運(yùn)輸管理辦法
- 麻醉術(shù)后健康教育
評論
0/150
提交評論