<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></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 国产精品视频分类一区| 亚洲国产婷婷综合在线精品| 国产精品女同久久久久电影院| 99精品全国免费观看视频| 久久中文字幕2021精品| 国产高清在线精品一区二区三区| 精品一区精品二区制服| 国产在线精品网址你懂的| 日韩精品无码人妻一区二区三区 | 国产免费69成人精品视频| 97精品人人妻人人| 国产精品无圣光一区二区| 亚洲午夜福利精品无码| 狠狠入ady亚洲精品| 国产精品久久久久久久久免费 | 国产精品自拍亚洲| 国产精品亚洲片在线va| 久久99热成人精品国产| 国产在线精品一区二区在线观看 | 孩交videos精品乱子豆奶视频 | 国产韩国精品一区二区三区久久| 日韩精品在线免费观看| 亚洲人午夜射精精品日韩| 国产精品二区在线| 亚洲精品成a人在线观看夫| 2021国产精品自产拍在线观看| 国产精品高清一区二区三区| 欧洲精品无码一区二区三区在线播放| 精品视频在线观看一区二区三区| 精品国产一区二区三区久久影院 | 精品国产品国语在线不卡| 久久亚洲日韩精品一区二区三区 | 无码精品视频一区二区三区| 国产一区二区精品尤物| 久久精品无码av| 大伊香蕉精品一区视频在线| 国产精品亚洲玖玖玖在线观看| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 久久ww精品w免费人成| 亚洲国产精品国自产拍电影| 久久精品一区二区东京热|