我需要在我的RCP应用程序开始时启动一些TimerTasks。
问题是这些类位于可选插件中,而不是产品定义插件中。因此我无法使用LifeCycleHandler来启动此计时器。
听UIEvents.UILifeCycle.APP_STARTUP_COMPLETE没有帮助,因为这个类不会被实例化。
不,我尝试设置BundleActivator并在其start()方法中启动我的计时器,但它永远不会被调用。
“Bundle-Activator:xx.xxx.xxx.manager.FtpImportManager”被设置为Activator类并实现BundleActivator。
有什么想法吗?
致以最诚挚的问候,
帕斯卡
答案 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线程中调用此方法。