Eclipse e4 RCP BundleActivator

时间:2015-08-24 14:30:47

标签: eclipse osgi e4

我需要在我的RCP应用程序开始时启动一些TimerTasks。

问题是这些类位于可选插件中,而不是产品定义插件中。因此我无法使用LifeCycleHandler来启动此计时器。

听UIEvents.UILifeCycle.APP_STARTUP_COMPLETE没有帮助,因为这个类不会被实例化。

不,我尝试设置BundleActivator并在其start()方法中启动我的计时器,但它永远不会被调用。

“Bundle-Activator:xx.xxx.xxx.manager.FtpImportManager”被设置为Activator类并实现BundleActivator。

有什么想法吗?

致以最诚挚的问候,

帕斯卡

1 个答案:

答案 0 :(得分:3)

仅当插件中的其他内容运行时才调用Activator start方法,因此这不适合设置计时器。

使用'fragment.e4xmi'中定义的'附加组件'。您为加载项定义的类将在RCP启动期间提前调用。

将在早期调用Add-on构造函数。如果要确保应用程序已启动,请添加应用程序启动完成事件方法。完整的加载项可能如下所示:

public class MyAddon
{
  public MyAddon()
  {
    // Code runs early on during startup
  }


  @Inject
  @Optional
  public void applicationStarted(@UIEventTopic(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE) Event event)
  {
    // Code runs when application start is complete
  }
}

当应用程序启动完成时,将在UI线程中调用此方法。