<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    java binder

    文檔

    java binder

    binder是基于c/s架構(gòu)的,主要包括四個部分:服務端,客戶端,Binder驅(qū)動,ServiceManager,四部分之間的交互都是通過Binder來實現(xiàn)的,而且java層binder架構(gòu)實際上也是基于c/s架構(gòu)的。
    推薦度:
    導讀binder是基于c/s架構(gòu)的,主要包括四個部分:服務端,客戶端,Binder驅(qū)動,ServiceManager,四部分之間的交互都是通過Binder來實現(xiàn)的,而且java層binder架構(gòu)實際上也是基于c/s架構(gòu)的。

    java binder是什么,讓我們一起了解一下?

    binder是基于c/s架構(gòu)的,主要包括四個部分:服務端(Server),客戶端(Client),Binder驅(qū)動ServiceManager,四部分之間的交互都是通過Binder來實現(xiàn)的,而且java層binder架構(gòu)實際上也是基于c/s架構(gòu)的。

    那么binder機制在java層是如何使用的?

    java層binder架構(gòu)實際上也是基于c/s架構(gòu)的,而且其在類的命名上也盡量與native層保持一致,因此可認為java層的binder架構(gòu)是native層binder架構(gòu)的一個鏡像。

    示例Binder類的初始化:

    const?char*?const?kBinderPathName?=?"android/os/Binder";
    ????static?int?int_register_android_os_Binder(JNIEnv*?env)
    ????{undefined
    ????????jclass?clazz?=?FindClassOrDie(env,?kBinderPathName);
    ????????gBinderOffsets.mClass?=?MakeGlobalRefOrDie(env,?clazz);
    ????????gBinderOffsets.mExecTransact?=?GetMethodIDOrDie(env,?clazz,?"execTransact",?"(IJJI)Z");
    ????????gBinderOffsets.mObject?=?GetFieldIDOrDie(env,?clazz,?"mObject",?"J");
    ????????return?RegisterMethodsOrDie(
    ????????????env,?kBinderPathName,
    ????????????gBinderMethods,?NELEM(gBinderMethods));
    ????}

    也可以創(chuàng)建一個Service,在其onBind里返回一個服務端Binder對象,在客戶端的ServiceConnection里拿到這個Binder對象。

    //服務端
    public?class?BinderPoolService?extends?Service?{
    private?static?final?String?TAG?=?"BinderPoolService";
    private?Binder?mBinderPool?=?new?BinderPool.BinderPoolImpl();
    @Nullable
    @Override
    public?IBinder?onBind(Intent?intent)?{
    return?mBinderPool;
    }
    }
    //客戶端
    private?ServiceConnection?mBinderPoolConnection?=?new?ServiceConnection()?{
    @Override
    public?void?onServiceConnected(ComponentName?name,?IBinder?service)?{
    //拿到服務端返回的Binder接口
    mBinderPool?=?IBinderPool.Stub.asInterface(service);
    ...
    }
    @Override
    public?void?onServiceDisconnected(ComponentName?name)?{
    }
    };
    Intent?intent?=?new?Intent(mContext,?BinderPoolService.class);
    mContext.bindService(intent,?mBinderPoolConnection,?Context.BIND_AUTO_CREATE);

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java binder

    binder是基于c/s架構(gòu)的,主要包括四個部分:服務端,客戶端,Binder驅(qū)動,ServiceManager,四部分之間的交互都是通過Binder來實現(xiàn)的,而且java層binder架構(gòu)實際上也是基于c/s架構(gòu)的。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    win10c盤滿了怎么清理 java binlog 如何清理win10電腦c盤 java bit java blob java break wps怎么求和 java bufferedimage java bufferedoutputstream java build.gradle java bundle java bytebuffer java byte取值范圍 java calculate 蘋果13怎么開機 java calendar獲取當前時間 java callback java ceiling 平板如何錄屏 java cglib java binary excel表格怎么合并單元格 java bigdecimal java benchmark java beanutils 手機充電發(fā)熱發(fā)燙是什么原因 手機充電時可以玩手機嗎 java bean java base64decoder java base64 java barrier java bacnet win10專業(yè)版和企業(yè)版的區(qū)別 java async java assembly java aspose java aspectj java asmx java ascii java arrays.sort
    Top 97r久久精品国产99国产精| 亚洲av无码成人精品国产| 男女男精品网站免费观看| 97久久久久人妻精品专区| 久久精品韩国三级| 三上悠亚精品一区二区久久| 精品乱码一区内射人妻无码| 久久久久久久精品毛万迈巴赫车标| 性欧洲精品videos| 久久99精品国产一区二区三区 | 国产在vr视频精品观看| 国产日韩精品一区二区在线观看播放 | 亚洲精品中文字幕无码AV| 亚洲国产精品无码久久SM| 狠狠精品久久久无码中文字幕 | 国产精品美女久久久久| 在线亚洲精品自拍| 亚洲福利精品一区二区三区| 日韩精品一区二区三区毛片| 亚洲AV无码精品国产成人| 97精品国产手机| 国产精品大白天新婚身材| 亚洲国产精品成人综合色在线婷婷| 久久免费观看国产精品88av| 久久精品国产亚洲一区二区| 在线精品亚洲一区二区小说| 成人区精品一区二区不卡| 久久精品免费大片国产大片| 亚洲国产精品专区在线观看 | 国产精品区免费视频 | 久久精品无码一区二区WWW| 久久精品无码一区二区无码| 久久久久久亚洲精品成人| 久久丫精品国产亚洲av| 亚洲国产成人久久精品影视| 亚洲综合一区二区国产精品 | 国内精品久久久久久99| 久久96国产精品久久久| 亚洲国产精品久久久天堂| 久久精品亚洲中文字幕无码网站| 久久免费视频精品|