现在的位置: 首页 > 综合 > 正文

android插件化-apkplug中以监听方式获取OSGI服务-09

2018年02月23日 ⁄ 综合 ⁄ 共 1080字 ⁄ 字号 评论关闭

我们提供 apkplug 下OSGI使用demo 源码托管地址为 http://git.oschina.net/plug/OSGIService

一 需求

    通过 <<apkplug中OSGI服务基本原理-08>>我们知道怎样注册于查询OSGI Service。但查询方式必须在Service启动以后才能使用,而有时我们并不知道Service何时启动,而只需要在Service启动以后能立即获取到并使用。OSGI提供监听器的形式动态监听指定Service的注册于注销过程。

二 OSGI Service 监听代码

01 private ServiceReference
ref=
null;
02 private printLog
service=
null;
03 context.addServiceListener(
04     new ServiceListener(){
05     @Override
06     public void serviceChanged(ServiceEvent
event) {
07         switch  (event.getType())
{
08         case  ServiceEvent.REGISTERED:
09     //服务注册
10             if  (ref 
==   
null )
{
11            ref 
=  event.getServiceReference();
12                 service 
=  (printLog) context.getService(ref);
//保存实例以备后续访问
13             }
14         break ;
15         case  ServiceEvent.UNREGISTERING:
16         //服务注销
17             if  (ref 
==  event.getServiceReference()) {
18                 context.ungetService(ref); //释放实例
19                 service 
=   
null ;
20                 ref 
=   
null ;
21                 }
22         break ;
23         }
24     }
25 },"(objectclass=com.apkplug.osgi.service.printLog)" );//服务名称

 

抱歉!评论已关闭.