android的進(jìn)程之間的通信 采用binder機(jī)制,我們先弄明白binder到底是什么。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),貢覺(jué)企業(yè)網(wǎng)站建設(shè),貢覺(jué)品牌網(wǎng)站建設(shè),網(wǎng)站定制,貢覺(jué)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,貢覺(jué)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
其實(shí)binder屬于一個(gè)驅(qū)動(dòng),位于linux內(nèi)核層,它的作用是完成進(jìn)程間的通信。
而binder機(jī)制包括4個(gè)方面,分別是client(客戶端),service(服務(wù)端),servicemanager(一個(gè)系統(tǒng)服務(wù)),binder驅(qū)動(dòng),
下面用一張圖來(lái)表示它們的關(guān)系:
可以看到 client,service,和servicemanager都運(yùn)行在用戶空間,binder驅(qū)動(dòng)則運(yùn)行在內(nèi)核空間,現(xiàn)在簡(jiǎn)單的分析一下各個(gè)部分,首先是client,一般就是我們的activity,service則是我們進(jìn)行想要通信遠(yuǎn)程服務(wù)。
servicemanager是一個(gè)守護(hù)進(jìn)程,負(fù)責(zé)管理服務(wù),所有的service都需要想它進(jìn)行注冊(cè),在binder機(jī)制中它給client提供查詢和獲取service的接口.
最后是binder驅(qū)動(dòng),它是一個(gè)字符設(shè)備驅(qū)動(dòng),client和service通過(guò)open()和ioctl()2個(gè)文件操作函數(shù)與它進(jìn)行通信,從而實(shí)現(xiàn)了client向service發(fā)出請(qǐng)求,而service處理請(qǐng)求將并返回給client,簡(jiǎn)單的說(shuō)binder驅(qū)動(dòng)就是提供了一切的底層支持。
理論說(shuō)了那么多,現(xiàn)在簡(jiǎn)單說(shuō)一下,如何使用binder機(jī)制進(jìn)行通信,分為以下幾個(gè)步驟:
1 獲取ServiceManager的對(duì)象引用
2 注冊(cè)我們的Service
3 在client中通過(guò)ServiceManager獲取Service對(duì)象的引用
4 在client中發(fā)送請(qǐng)求,service中返回結(jié)果。
關(guān)于binder機(jī)制就講這么多了,具體可參照下面這篇文章:
http://blog.csdn.net/yueliangniao1/article/details/7188549
接下來(lái)是android種handler機(jī)制的簡(jiǎn)單理解。handler機(jī)制用于線程之間的通信,巧合的是線程通信機(jī)制也恰好由4個(gè)部分組成分別是:
1 looper 一個(gè)線程可以產(chǎn)生一個(gè)looper對(duì)象(不一定每一個(gè)線程都會(huì)有,得有相應(yīng)的操作才行),負(fù)責(zé)管理該線程的消息隊(duì)列
2 handler 我們可以構(gòu)造一個(gè)handler對(duì)象來(lái)與looper對(duì)象進(jìn)行溝通,實(shí)現(xiàn)push新的消息進(jìn)入消息隊(duì)列,或是獲取looper從消息隊(duì)列中取出的消息
3 MessageQueue(消息隊(duì)列)存放線程放入的消息
4 Message 消息對(duì)象
線程就是通過(guò)這4個(gè)部分來(lái)負(fù)責(zé)通信的,下面提供一張圖來(lái)表示它們之間的關(guān)系:
handler機(jī)制一般用于更新UI,應(yīng)用程序啟動(dòng)的時(shí)候,將會(huì)創(chuàng)建一個(gè)主線程,主線程也就是所謂的UI線程,通過(guò)handler機(jī)制則子線程可以更改程序的UI。相關(guān)信息可以參考下面這篇文章:
http://blog.sina.com.cn/s/blog_8e1ceddc0101g6ao.html
一起學(xué)習(xí),有錯(cuò)誤請(qǐng)指出
當(dāng)前文章:androidbinder與handler的簡(jiǎn)要理解
網(wǎng)址分享:http://aaarwkj.com/article36/igsisg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、定制開(kāi)發(fā)、網(wǎng)站策劃、企業(yè)建站、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)