Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android插件化-apkplug中OSGI服務基本原理-08

android插件化-apkplug中OSGI服務基本原理-08

編輯:關於Android編程

 

一 OSGI與android Service 異同點

OSGI服務與android Service概念差不多也是Service ,Client 關系。

android Service接口 --service.AIDL

OSGI接口 --java interface

所以android 進程間通信Service只能傳遞序列化過的數據 而OSGI服務可以傳遞任何java對象。

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022317034410.png

 

二 OSGI與android Service注冊/查詢方式對比

1.服務注冊

android Service

1 Intent intent=new Intent(Context,Service.class); 2 Context.startService(intent);

OSGI Service

 

1 BundleContext context; //插件上下文 2 ServiceRegistration m_reg = context.registerService( 3 sayHelloImp.class.getName(),//服務名稱 一般為接口類名 4 my, //服務具體實現類 5 null);

2.服務查詢

android Service

1 Intent intent=new Intent(Context,Service.class); 2 Context.bindService(intent, new ServiceConnection()) 3 ...

OSGI Service

 

01 //利用插件上下文BundleContext查詢服務 02 ServiceReference ref = context.getServiceReference(Service.class.getName()); 03 if (ref != null ) { 04 //查找到服務 05 Service service = (Service) context.getService(ref); 06 if (service != null ) { 07 //調用服務接口 08 service.sayHello(imp); 09 } 10 //注銷服務 11 context.ungetService(ref); 12 }

 

三 OSGI服務特點

OSGI服務是暫態的插件可能隨時被關閉或卸載,所以我們每次在使用服務的時候都最好先查詢服務是否還存在。

四 OSGI服務注意事項

使用OSGI服務時應注意服務接口java類的一致性,服務者與消費者應使用相同的java接口(類加載器相同),否則可能出現服務查詢時類型強制轉換異常。一般情況下我們以服務者提供java接口

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved