日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android binder与handler的简要理解

發布時間:2024/4/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android binder与handler的简要理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

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

可以看到 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個部分來負責通信的,下面提供一張圖來表示它們之間的關系:

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


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


一起學習,有錯誤請指出

轉載于:https://blog.51cto.com/8599981/1404229

總結

以上是生活随笔為你收集整理的android binder与handler的简要理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。