<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內(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 国产精品美女久久久网站| 99在线热视频只有精品免费| 精品72久久久久久久中文字幕| 亚洲精品成人av在线| 久久精品中文字幕一区| 国产精品99精品一区二区三区 | 一本一本久久a久久综合精品蜜桃| 亚洲精品无码乱码成人| 青草青草久热精品视频在线观看| 911精品国产自产在线观看| 日本伊人精品一区二区三区| 99热婷婷国产精品综合| 亚洲精品第一国产综合境外资源| 日韩精品福利片午夜免费观着 | 国产精品入口麻豆免费观看| 国产精品福利影院| 久久久久久久91精品免费观看| 99re国产精品| 午夜精品久久久久久毛片| 91精品国产91久久久久福利| 2022国内精品免费福利视频| 国产精品无码av天天爽 | 国产精品嫩草影院免费| 亚洲AV永久无码精品一福利| 人妖在线精品一区二区三区| 91精品视频在线免费观看| 午夜精品一区二区三区免费视频| 国产精品无套内射迪丽热巴| 最新在线精品国自av| 国产亚洲精品a在线观看 | 人妻少妇看A偷人无码精品视频| 精品香蕉在线观看免费| 亚洲精品自拍视频| 1204国产成人精品视频| 中文精品久久久久国产网址| 麻豆文化传媒精品一区二区| 在线精品视频播放| 国产精品亚洲精品青青青| 精品久久久无码21p发布| 日本一二三精品黑人区| 国产精品亚洲片夜色在线|