博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android插件技术-apkplug于OSGI服务基础-08
阅读量:5836 次
发布时间:2019-06-18

本文共 1199 字,大约阅读时间需要 3 分钟。

我们提供 apkplug 下OSGI使用demo 源代码托管地址为 

一 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);

        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介面

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
使用硬盘,安装双系统,Win7+CentOS
查看>>
Javascript学习总结
查看>>
JS 操作Excel格式
查看>>
php 用正则替换中文字符一系列问题解决
查看>>
ActiveMQ应用笔记一:基本概念&安装
查看>>
SAE+Java+jetty
查看>>
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
android HDMI 清晰度 分辨率
查看>>
JQuery发送Put、Delete请求 - 摘自网络
查看>>
Android基于mAppWidget实现手绘地图(九)–如何处理地图对象的touch事件
查看>>
关于codeMirror插件使用的一个坑
查看>>
矩阵管理——本质是职能分工,例如所有部门都执行财务部门制定的财务制度而不会各自为政...
查看>>
评论:人才流失强力折射出现实畸形人才观
查看>>
git服务器gitlab之搭建和使用--灰常好的git服务器【转】
查看>>
Game Loop Tutorial
查看>>