android插件化-apkplug中OSGI服务基本原理-08
2014-05-15 17:27
417 查看
我们提供 apkplug 下OSGI使用demo 源码托管地址为 http://git.oschina.net/plug/OSGIService
一 OSGI与android Service 异同点
OSGI服务与android Service概念差不多也是Service ,Client 关系。
android Service接口 --service.AIDL
OSGI接口 --java interface
所以android 进程间通信Service只能传递序列化过的数据 而OSGI服务可以传递任何java对象。
二 OSGI与android Service注册/查询方式对比
1.服务注册
android Service
OSGI Service
2.服务查询
android Service
OSGI Service
三 OSGI服务特点
OSGI服务是暂态的插件可能随时被关闭或卸载,所以我们每次在使用服务的时候都最好先查询服务是否还存在。
四 OSGI服务注意事项
使用OSGI服务时应注意服务接口java类的一致性,服务者与消费者应使用相同的java接口(类加载器相同),否则可能出现服务查询时类型强制转换异常。一般情况下我们以服务者提供java接口
一 OSGI与android Service 异同点
OSGI服务与android Service概念差不多也是Service ,Client 关系。
android Service接口 --service.AIDL
OSGI接口 --java interface
所以android 进程间通信Service只能传递序列化过的数据 而OSGI服务可以传递任何java对象。
二 OSGI与android Service注册/查询方式对比
1.服务注册
android Service
1 | Intent intent= new Intent(Context,Service. class ); |
2 | Context.startService(intent); |
1 | BundleContext context; //插件上下文 |
2 | ServiceRegistration m_reg = context.registerService( |
3 | sayHelloImp. class .getName(), //服务名称 一般为接口类名 |
4 | my, //服务具体实现类 |
5 | null ); |
android Service
1 | Intent intent= new Intent(Context,Service. class ); |
2 | Context.bindService(intent, new ServiceConnection()) |
3 | ... |
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服务时应注意服务接口java类的一致性,服务者与消费者应使用相同的java接口(类加载器相同),否则可能出现服务查询时类型强制转换异常。一般情况下我们以服务者提供java接口
相关文章推荐
- android插件化-apkplug中以监听方式获取OSGI服务-09
- android插件技术-apkplug于OSGI服务基础-08
- android插件化-apkplug中以监听方式获取OSGI服务-09
- android 插件化 模块化开发(apkplug)
- android插件化-apkplug从宿主启动插件Activity-06
- 使用apkplug实现Android客户端插件化
- android插件化-apkplug框架基本结构-01
- android插件化-apkplug从宿主启动插件Activity-06
- android插件化-监听apkplug插件安装/卸载状态-05
- android插件化-apkplugdemo源代码阅读指南-10
- android插件化-获取apkplug框架已安装插件-03
- android使用apkplug实现插件化开发
- 使用apkplug实现Android客户端插件化
- android插件化-apkplug框架启动-02
- android插件化-获取apkplug框架已安装插件-03
- android插件化-apkplugdemo源码阅读指南-10
- android 插件化 模块化开发(apkplug)
- android插件化-apkplug框架启动-02
- android插件化-apkplug插件开发-07
- android插件化-安装apkplug插件-04