2012-12-27 55 views

回答

1

我有同樣的問題,找不到答案,但在這個過程中,我發現LifeCycleHandler更適合我的目的。這對你來說可能是一個很好的選擇。

正如啓動擴展您可以從您的plugin.xml引用一個處理程序:

<property name="lifeCycleURI" value="platform:/plugin/<plug-in-id>/<path-to-handler-class>" /> 

在您可以使用標註來標記要調用以及依賴注入的方法處理程序:

public class StartupHandler { 
    @Inject 
    Foo bar; 

    @PostContextCreate 
    public void startup(IEclipseContext context) { 
     // do something 
    } 
} 

您可以在這裏找到一個詳細的例子:https://marcteufel.wordpress.com/2011/05/05/231/

1

IStartup#earlyStartup()需要兼容層,所以它母鹿不適用於純粹的E4應用程序。 (請參閱#1

要在純E4應用程序中啓動進程,應使用生命週期掛鉤。所以:

參考來自plugin.xml的你ApplicationLifecycle處理程序類

<property name="lifeCycleURI" value="platform:/plugin/<plug-in-id>/<path-to-handler-class>" /> 

寫你的生命週期處理程序類

public class ApplicationLifecycleHandler { 

    @PostContextCreate 
    public void startup(IEclipseContext context) { 
     // do initialization 
    } 
} 

添加鉤來處理應用程序啓動時完成

@PostContextCreate 
public void postContextCreate(final IEventBroker eventBroker, etc ..) { 

    // 
    eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, 
      new EventHandler() { 
       @Override 
       public void handleEvent(Event event) { 
        // Your code executed at startup, 
        // after application startup is completed 
       } 
      }); 

} 
事件

(#1)org.eclipse.ui.startup extension doc