2015-08-24 131 views
1

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

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

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

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

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

任何想法?

最好的问候,

帕斯卡尔

回答

3

别的东西在插件运行时激活start方法才会被调用,所以这不是一个合适的地方设置定时器。

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

附加构造函数将在早期调用。如果您想确保应用程序已启动,请添加应用程序启动完成事件方法。完整的附加组件可能如下所示:

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线程中调用此方法。

+0

我已经有了这个想法,但在定义了一个实现MAddon及其方法的类之后,我还没有看到一个名为start或其他方法的方法。构造函数是否被调用?我会再试一次。谢谢:) – Pascal

+0

构造函数在早期调用。增加了示例应用程序启动完成方 –

+0

注意:您不实现MAddon,附加类是POJO。 MAddon仅适用于该模型。将示例更改为完整的插件类。 –