溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android binder與handler的簡要理解

發布時間:2020-05-28 22:21:12 來源:網絡 閱讀:6191 作者:華健123 欄目:移動開發

android的進程之間的通信 采用binder機制,我們先弄明白binder到底是什么。

其實binder屬于一個驅動,位于linux內核層,它的作用是完成進程間的通信。

而binder機制包括4個方面,分別是client(客戶端),service(服務端),servicemanager(一個系統服務),binder驅動,

下面用一張圖來表示它們的關系:

android  binder與handler的簡要理解

可以看到 client,service,和servicemanager都運行在用戶空間,binder驅動則運行在內核空間,現在簡單的分析一下各個部分,首先是client,一般就是我們的activity,service則是我們進行想要通信遠程服務。

servicemanager是一個守護進程,負責管理服務,所有的service都需要想它進行注冊,在binder機制中它給client提供查詢和獲取service的接口.

最后是binder驅動,它是一個字符設備驅動,client和service通過open()和ioctl()2個文件操作函數與它進行通信,從而實現了client向service發出請求,而service處理請求將并返回給client,簡單的說binder驅動就是提供了一切的底層支持。

理論說了那么多,現在簡單說一下,如何使用binder機制進行通信,分為以下幾個步驟:

1 獲取ServiceManager的對象引用

2 注冊我們的Service

3 在client中通過ServiceManager獲取Service對象的引用

4 在client中發送請求,service中返回結果。

關于binder機制就講這么多了,具體可參照下面這篇文章:


http://blog.csdn.net/yueliangniao1/article/details/7188549


接下來是android種handler機制的簡單理解。handler機制用于線程之間的通信,巧合的是線程通信機制也恰好由4個部分組成分別是:

1 looper 一個線程可以產生一個looper對象(不一定每一個線程都會有,得有相應的操作才行),負責管理該線程的消息隊列

2 handler 我們可以構造一個handler對象來與looper對象進行溝通,實現push新的消息進入消息隊列,或是獲取looper從消息隊列中取出的消息

3 MessageQueue(消息隊列)存放線程放入的消息

4 Message 消息對象

線程就是通過這4個部分來負責通信的,下面提供一張圖來表示它們之間的關系:

android  binder與handler的簡要理解

handler機制一般用于更新UI,應用程序啟動的時候,將會創建一個主線程,主線程也就是所謂的UI線程,通過handler機制則子線程可以更改程序的UI。相關信息可以參考下面這篇文章:


http://blog.sina.com.cn/s/blog_8e1ceddc0101g6ao.html


一起學習,有錯誤請指出

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女