插件启动与停止

每一个已安装插件都映射为org.osgi.framework.Bundle ,我们可以通过Bundle实现插件的启动和停止

启动插件

同步启动:Bundle.start()

异步启动:

    bundle.start(new StartCallback() {
        @Override
        public void onSuccess(Bundle bundle) {
        //1. 如果插件已经启动,会直接回掉该函数
        //2. 可以在这里启动插件activity等操作
        }

        @Override
        public void onFail(Bundle bundle, Throwable e) {
        //启动失败,用下面代码打印log
           StringWriter sw = new StringWriter(); 
           PrintWriter pw = new PrintWriter(sw); 
           e.printStackTrace(pw);

           System.out.println(sw.toString()); // stack trace as a string
        }
     });

对于启动时间较长的插件可以用异步启动,插件启动的实际执行过程:

Appliction.onCreate()--->BundleActivator.start()-->Activity (3.6.0及以前版本Appliction是在Activity启动时才初始化)

这几个步骤中有费时操作的都可以调用异步启动

停止插件

Bundle.stop()

插件端实现的BundleActivator.stop(BundleContext context) 将被调用,即调可以用来插件的一些注销功能