国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

binder 進程間通信筆記

2019-11-09 13:55:36
字體:
來源:轉載
供稿:網友

1.bbinder binder實體對象

2.bpbinder binder引用對象

3.binder代理對象

4.ibinder bbinder 和bpbinder都繼承與ibinder

注意:應用需要使用的是binder的代理對象,使用前需要將引用對象轉換成代理對象。

ICameraService.Stub.asInterface(binder);

defaultServiceManager 拿到的是serviceManager 其實也是一個binder服務

getService()是拿到的普通binder服務

例子

class BpExampleService : public BpInterface<IExampleService>

{

virtual int get()

{

Parcel data,reply;

data.writeInterfaceToken(IexampleService::getInterfaceDescriptor());

remote()->transact(EXAMPLE_GET,data,&reply);  //remote()函數得到Binder引用對象的指針,然后調用它的transcat() 此函數會調用IPCThread類的函數來向驅動傳遞數據

                                                                                              最后到了onTransact方法調用遠程實體對象ExampleService 類對應的方法

return reply.readInt();

}

}

status_t BnExampleService::onTransact(...)

{

switch(code)

{

case EXAMPLE_GET:

CHECK_INTERFACE(IExampleService,data,reply);

reply->writeInt(get());  //調用get方法

break;

case EXAMPLE_SET:

CHECK_INTERFACE(IExampleService,data,reply);

set(data->readInt()); //調用set方法

break;

default:

return BBinder::onTransact(code,data,reply,flags);

}

}

圖片參考此處http://www.cnblogs.com/winfu/p/6061296.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥西县| 渭源县| 襄汾县| 阳西县| 苍山县| 公安县| 东方市| 图片| 修水县| 五华县| 察隅县| 英山县| 婺源县| 达拉特旗| 井研县| 宁陕县| 隆昌县| 洛扎县| 玉树县| 东兴市| 怀柔区| 中阳县| 江西省| 山西省| 天津市| 砚山县| 洪湖市| 凉城县| 龙陵县| 桓仁| 军事| 永吉县| 信丰县| 屏山县| 乌苏市| 临汾市| 精河县| 南靖县| 牙克石市| 新晃| 和政县|