<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      java binder

      文檔

      java binder

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

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

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

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

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

      示例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));
      ????}

      也可以創建一個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架構的,主要包括四個部分:服務端,客戶端,Binder驅動,ServiceManager,四部分之間的交互都是通過Binder來實現的,而且java層binder架構實際上也是基于c/s架構的。
      推薦度:
      為你推薦
      資訊專欄
      熱門視頻
      相關推薦
      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 手機充電發熱發燙是什么原因 手機充電時可以玩手機嗎 java bean java base64decoder java base64 java barrier java bacnet win10專業版和企業版的區別 java async java assembly java aspose java aspectj java asmx java ascii java arrays.sort
      Top 少妇高潮太爽了在线视频