Вы все еще можете определить класс жизненного цикла, используя lifeCycleURI
в определении вашего продукта, при условии, что приложение, которое ваш продукт определяет, вызывает PlatformUI.createAndRunWorkbench
.Это запускает код, который имеет дело с жизненным циклом.
Например, в простом тесте RCP.Продукт:
<extension
id="TestRCPView.product"
point="org.eclipse.core.runtime.products">
<product
application="TestRCPView.application"
name="TestRCPView">
<property
name="lifeCycleURI"
value="bundleclass://TestRCPView/testrcpview.LifeCycle">
</property>
</product>
</extension>
, который имеет lifeCycleURI.
Приложение, к которому он относится:
<extension
id="TestRCPView.application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="testrcpview.Application">
</run>
</application>
</extension>
И testrcpview.Application
public class Application implements IApplication
{
@Override
public Object start(final IApplicationContext context)
{
Display display = PlatformUI.createDisplay();
try
{
int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
return IApplication.EXIT_OK;
}
finally
{
display.dispose();
}
}
@Override
public void stop()
{
if (!PlatformUI.isWorkbenchRunning())
return;
IWorkbench workbench = PlatformUI.getWorkbench();
Display display = workbench.getDisplay();
display.syncExec(new Runnable()
{
@Override
public void run()
{
if (!display.isDisposed())
workbench.close();
}
});
}
}