我已经安装了捆绑包。现在,我想向其添加侦听器(稍后再启动)以查找其进入活动状态的时间。
我发现的唯一方法是
bundle.getBundleContext().addBundleListener(new ...);
但是,仅当bundle处于启动,停止和活动状态时,getBundleContext()才起作用。那么,我可以这样做吗?
最佳答案
注册BundleListener来捕获同一包中发生的事件是没有意义的。当您实现BundleListener / BundleTracker时,通常希望捕获具有特殊属性的包事件。
使用BundleListener,您可以捕获框架中发生的事件。使用BundleTracker,您首先要捕获框架中每个捆绑软件发生的最后事件,然后才能捕获新事件。通常,使用BundleTracker更好,因为您想获取具有已激活的那些特殊属性的捆绑包。
BundleListener / BundleTracker应该在实现侦听器/跟踪器的包的BundleContext的帮助下使用。由于代码在“启动”之前不应该在包中运行,因此当您要注册侦听器/跟踪器时,BundleContext应该始终可用。
了解更多有关您要实现的用例的信息将很有用。也许您甚至根本不需要实现BundleListener / BundleTracker,只需稍微重新设计捆绑软件中的代码即可。