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

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

一 需求

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

二 OSGI Service 监听代码

private ServiceReference ref=null;
private printLog service=null;
context.addServiceListener(
    new ServiceListener(){
    @Override
    public void serviceChanged(ServiceEvent event) {
        switch  (event.getType()) {
        case  ServiceEvent.REGISTERED:
	//服务注册
            if  (ref  ==   null ) {
	       ref  =  event.getServiceReference();
                service  =  (printLog) context.getService(ref);//保存实例以备后续访问
            }
        break ;
        case  ServiceEvent.UNREGISTERING:
        //服务注销
            if  (ref  ==  event.getServiceReference()) {
                context.ungetService(ref); //释放实例 
                service  =   null ;
                ref  =   null ;
                }
        break ;
        }
    }
},"(objectclass=com.apkplug.osgi.service.printLog)" );//服务名称

 

你可能感兴趣的:(android,模块化,osgi,插件化,apkplug)