【问题标题】:Eclipse e4 RCP BundleActivatorEclipse e4 RCP BundleActivator
【发布时间】:2015-08-24 14:30:47
【问题描述】:

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

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

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

不,我尝试设置一个 BundleActivator 并在它的 start() 方法中启动我的计时器,但它从未被调用。

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

有什么想法吗?

最好的问候,

帕斯卡

【问题讨论】:

    标签: eclipse osgi e4


    【解决方案1】:

    只有在插件中的其他东西运行时才会调用 Activator 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线程中调用该方法。

    【讨论】:

    • 我已经有了这个想法,但是在我定义了一个实现 MAddon 及其方法的类之后,我还没有看到名为 start 的方法或其他方法。构造函数被调用了吗?我会再试一次。谢谢:)
    • 构造函数在早期被调用。添加示例应用程序启动完成方法。
    • 注意:你没有实现 MAddon,插件类是 POJO。 MAddon 仅适用于模型。将示例更改为完整的插件类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    相关资源
    最近更新 更多