<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 日韩精品人妻系列无码专区免费 | 91大神精品网站在线观看| 在线播放亚洲精品| 91精品免费观看| 91原创国产精品| 国产精品美女一区二区| 91精品免费观看| 国产精品va无码一区二区| 国产亚洲美女精品久久| 国产精品一久久香蕉国产线看| 国产午夜精品一区二区三区嫩草| 国产精品伦子一区二区三区| 久久精品国产久精国产一老狼| 国产69精品久久久久9999APGF| 国产精品不卡在线| 中文无码精品A∨在线观看不卡| 久久精品国产精品亚洲艾| 一区二区三区四区精品| 精品熟女碰碰人人a久久| 91精品国产自产在线观看永久∴| 国产在线精品观看免费观看| 国产av一区二区精品久久凹凸| 在线综合亚洲中文精品| 日韩精品无码一区二区三区不卡 | 免费精品国产自产拍观看| 国产va精品免费观看| 亚洲国产精品网站久久| 久久精品久久精品| 精品日产一区二区三区手机| 国产成人久久久精品二区三区| 国产精品久久久久网站| 98色精品视频在线| 3atv国产精品视频| 91麻豆精品一二三区在线| 人妻少妇精品无码专区二区| 柠檬福利精品视频导航| 在线私拍国产福利精品| 国产精品成人观看视频网站| 国产成人高清精品免费鸭子| 国产精品美女一区二区三区| 久久精品九九热无码免贵|