我在e4 RCP应用程序中使用生命周期的PostContextCreate
部分来创建应用程序的后端“业务逻辑”部分。然后我使用IEclipseContext
将其注入上下文。我现在需要在应用程序的执行之间保留一些业务逻辑配置选项。我有一些问题:
MContext
访问)在这里非常有用,简单的Map<String,String>
听起来非常适合我的简单要求,但我怎样才能在PostContextCreate
中获取它们? clearPersistedState
设置为true
的情况下运行,我的属性是否会保留? (我猜不是)。clearPersistedState
,那么它会尝试持续注入上下文中的其他内容吗?或者我说这一切都错了?欢迎大家提出意见。我可能只是放弃并读/写我自己的属性文件。
答案 0 :(得分:2)
我认为Map
返回的MApplicationElement.getPersistedState()
旨在用于持久数据。这将由-clearPersistedState清除。
生命周期的PostContextCreate方法在启动时很早就开始运行,并且此时并不是所有内容都可用。因此,您可能必须等待应用程序启动完成事件(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE
)才能访问持久状态数据。
您始终可以使用传统的Platform.getStateLocation(bundle)
获取工作区.metadata中的位置来存储任意数据。 clearPersistedState没有涉及到这一点。
更新
订阅应用启动完成:
@PostContextCreate
public void postContextCreate(IEventBroker eventBroker)
{
eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, new AppStartupCompleteEventHandler());
}
private static final class AppStartupCompleteEventHandler implements EventHandler
{
@Override
public void handleEvent(final Event event)
{
... your code here
}
}