欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Android中的Binder機制的簡要理解

系統 2444 0

我們知道,在Android系統中,每一個應用程序都運行在獨立的進程中,這也保證了當其中一個程序出現異常而不會影響另一個應用程序的正常運轉。在許多情況下,我們activity都會與各種系統的service打交道,很顯然,我們寫的程序中activity與系統service肯定不是同一個進程,但是它們之間是怎樣實現通信的呢?Binder是android中一種實現進程間通信(IPC)的方式之一。

了解Binder

1.binder用來做什么?用來實現不同進程之間的通信。

2.Binder是什么?binder屬于一個驅動,工作在linux層面,運行在內核態,它的操作完成是基于一段內存。所以我們開發的程序中對binder的使用都是通過系統的調用來完成的。

3.binder是怎樣實現進程通信的?我們來通過Binder的架構來了解它實現進程間通信(IPC)的過程。

Binder架構由服務端,binder驅動,客戶端三個部分構成。如圖所示。

?


Android中的Binder機制的簡要理解
?

?



Android中的Binder機制的簡要理解

其中服務端,客戶端處在用戶空間,而binder驅動處在內核空間。

服務器端。一個Binder服務器端就是一個Binder類的對象。當創建一個Binder對象后,內部就會開啟一個線程,這個線程用于接收binder驅動發送的信息,收到消息后,會執行相關的服務代碼。、

Binder驅動。當服務端成功創建一個Binder對象后,Binder驅動也會相應創建一個mRemote對象,該對象的類型也是Binder類。客戶就可以借助這個mRemote對象來訪問遠程服務。

客戶端。客戶端要想訪問Binder的遠程服務,就必須獲取遠程服務的Binder對象在binder驅動層對應的mRemote引用。當獲取到mRemote對象的引用后,就可以調用相應Binder對象的服務了。

在這里,我們可以看到,客戶端是通過Binder驅動來調用服務端的相關服務。首先,在服務端創建一個Binder對象,然后相應在Binder驅動中創建一個Binder對象,接著客戶端通過獲取Binder驅動中Binder對象的引用來調用服務端的服務。在Binder機制中正是借著Binder驅動將不同進程間的組件bind(粘連)在一起,實現通信。

為什么android選用Binder來實現進程間通信?

一、可靠性。在移動設備上,通常采用基于Client-Server的通信方式來實現互聯網與設備間的內部通信。目前linux支持IPC包括傳統的管道,System V IPC,即消息隊列/共享內存/信號量,以及socket中只有socket支持Client-Server的通信方式。Android系統為開發者提供了豐富進程間通信的功能接口,媒體播放,傳感器,無線傳輸。這些功能都由不同的server來管理。開發都只關心將自己應用程序的client與server的通信建立起來便可以使用這個服務。毫無疑問,如若在底層架設一套協議來實現Client-Server通信,增加了系統的復雜性。在資源有限的手機 上來實現這種復雜的環境,可靠性難以保證。

二、傳輸性能。socket主要用于跨網絡的進程間通信和本機上進程間的通信,但傳輸效率低,開銷大。消息隊列和管道采用存儲-轉發方式,即數據先從發送方緩存區拷貝到內核開辟的一塊緩存區中,然后從內核緩存區拷貝到接收方緩存區,其過程至少有兩次拷貝。雖然共享內存無需拷貝,但控制復雜。比較各種IPC方式的數據拷貝次數。共享內存:0次。Binder:1次。Socket/管道/消息隊列:2次。

三、安全性。Android是一個開放式的平臺,所以確保應用程序安全是很重要的。Android對每一個安裝應用都分配了UID/PID,其中進程的UID是可用來鑒別進程身份。傳統的只能由用戶在數據包里填寫UID/PID,這樣不可靠,容易被惡意程序利用。而我們要求由內核來添加可靠的UID。

所以,出于可靠性、傳輸性、安全性。android建立了一套新的進程間通信方式。

Android中的Binder機制的簡要理解


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美福利视频在线观看 | 欧美日韩一区在线观看 | 亚洲国产精品综合久久 | av一区二区三区四区 | 国产精选91热在线观看 | 懂色一区二区三区免费观看 | 欧美一级黄色片在线观看 | 欧美激情bbbbbxxxxⅹ | 九九99久久 | 亚洲精品一区二区三区福利 | 黄色尤物 | 成人爽a毛片免费啪啪红桃视频 | 午夜国产在线视频 | 色综合天天综合中文网 | 亚洲喷水 | 三级视频在线播放 | 青青草在线视频免费观看 | 日韩中文字幕网站 | 亚洲成a人在线观看 | 成人禁在线观看网站 | 国产精品一区久久久久 | 欧美日韩一二三区 | 亚洲综合国产 | 性xxxxx视频 日韩在线观看视频一区 | 国产精品日韩在线观看 | 久久精品免费一区二区三区 | 亚洲国产精品久久人人爱 | 四虎884a| 成人午夜影院 | 日韩精品免费一级视频 | 国产牛仔裤系列在线观看 | 欧美精品一区二区三区蜜桃视频 | 片在线观看 | 欧美乱视频 | 男女无遮挡高清性视频直播 | 色婷婷久久| jizz日本zzz日本护士 | 欧美成视频无需播放器 | 超碰成人免费 | 奇米 影音先锋 | 成人午夜AV亚洲精品无码网站 |