自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android 系統(tǒng) Binder 詳解

移動開發(fā) Android
binder是什么?可以理解為Andorid系統(tǒng)中的一種進程間通信的方式,雖然Android系統(tǒng)基于Linux,但是它并沒有采用Linux自帶的進程間通信方式,而是采用了更高效的binder,理解binder對于理解Android系統(tǒng)具有至關(guān)重要的作用。

[[422252]]

本文轉(zhuǎn)載自微信公眾號「嵌入式Linux系統(tǒng)開發(fā)」,作者asonangel。轉(zhuǎn)載本文請聯(lián)系嵌入式Linux系統(tǒng)開發(fā)公眾號。

最近博主在研究Android系統(tǒng)的binder。

binder是什么?可以理解為Andorid系統(tǒng)中的一種進程間通信的方式,雖然Android系統(tǒng)基于Linux,但是它并沒有采用Linux自帶的進程間通信方式,而是采用了更高效的binder,理解binder對于理解Android系統(tǒng)具有至關(guān)重要的作用。binder原理圖如下:

Binder通信采用c/s架構(gòu),和Socket一樣,但是稍微復(fù)雜。binder組件包含Client、Server、ServiceManager以及binder驅(qū)動,其中ServiceManager用于管理系統(tǒng)中的各種服務(wù)。

具體通信過程:Server先向ServiceManager注冊一個服務(wù),其實也就是一個字符串。然后Client從ServiceManager獲取服務(wù),關(guān)鍵字就是注冊的字符串。這樣Client和Server就可以通信。真正的數(shù)據(jù)流是走了底層的Linux內(nèi)核空間的binder驅(qū)動,但這個是被封裝的,所以不用關(guān)心真正的binder驅(qū)動,只管在Client和Server之間調(diào)用函數(shù)收發(fā)數(shù)據(jù)就行。就是服務(wù)端的onTransact函數(shù)和客戶端remote()->transact(TEST, data, &reply),發(fā)送的數(shù)據(jù)存在data中,返回的數(shù)據(jù)存在reply中。Client和Server都可以收發(fā)數(shù)據(jù)。

安卓系統(tǒng)架構(gòu)圖:

理解了binder以后,具體分析:binder驅(qū)動肯定是在最下面的Linux內(nèi)核中,那么binder的客戶端和服務(wù)器,可以存在在任何地方。舉例:

1、bindder服務(wù)器在app層,客戶端在app層。2、bindder服務(wù)器在native層,客戶端在app層。3、bindder服務(wù)器在app層,客戶端在native層。4、bindder服務(wù)器在native層,客戶端在native層。

以上四種情況都可以。

說的比較抽象,我發(fā)兩篇文章連接,這兩篇文章的代碼我已經(jīng)驗證過,可以使用。需要注意的是,APP層的binder由java語言編寫,native層的binder,由C++語言編寫。但其實接口都很相似。

但是要看懂代碼,需要先理解幾個類:

native層binder真實的繼承關(guān)系如下:

對稱一點可能方便理解:

我們主要是從BnInterface和BpInterface繼承,去實現(xiàn)自己的服務(wù)器和客戶端。

bp:binder proxy

bn:binder native

 

sm:ServiceManager

 

責(zé)任編輯:武曉燕 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關(guān)推薦

2023-10-09 08:24:54

IPC機制Binder

2010-03-04 09:46:51

Android Bin

2011-08-11 13:41:06

手機病毒

2013-01-06 13:06:02

2016-11-28 14:44:55

ANDROID BIN通信架構(gòu)

2016-11-28 14:11:24

ANDROID BIN通信架構(gòu)

2010-01-28 14:35:21

Android系統(tǒng)信息

2013-01-06 15:20:58

Android開發(fā)Android振動器

2010-01-25 14:13:36

Android菜單系統(tǒng)

2011-05-04 09:48:14

2023-03-23 09:33:22

Android移動開發(fā)

2011-05-05 14:44:43

SurfaceFlinSurfaceActivity

2011-06-01 10:48:28

Android系統(tǒng)

2025-03-10 00:17:00

2013-11-05 11:25:21

Android 4.4系統(tǒng)詳解

2011-05-16 09:27:14

Android 3.1谷歌

2017-03-31 21:15:36

進程線程池Binde

2014-07-28 10:09:30

Android

2011-05-27 15:02:15

Android ListView

2013-11-14 10:42:48

MTPAndroid
點贊
收藏

51CTO技術(shù)棧公眾號