문제

안녕 RCP 개발자,

구현하고 싶어요 postWindowClose()이클립스 RCP 애플리케이션.

이 방법을 코딩하기 전에, 나는 닫다 내 응용 프로그램에서 메서드가 호출되었으므로 다음과 같이 했습니다.

import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;


public class MainWindowControl extends WorkbenchWindowAdvisor{

    public MainWindowControl(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void postWindowClose() {
        // TODO Auto-generated method stub
        super.postWindowClose();
        System.out.println("close");
    }

}

나는 다음을 볼 것으로 기대하고 있습니다 : close ~에 콘솔에 있지만 애플리케이션을 닫은 후에도 여전히 비어 있습니다.

필요한 모든 플러그인이 추가되었으며 애플리케이션을 시작하거나 닫는 동안 오류가 발생하지 않습니다.

그럼 제가 뭔가를 놓치고 있는 걸까요?

이 방법을 구현하는 이유는 다음과 같습니다.

  1. 메시지 상자: Are you sure you want to close the application
  2. 실행 중인 스레드를 모두 종료하고 애플리케이션 업로드 파일을 종료하며 애플리케이션을 닫아도 업로드가 계속 실행됩니다.응용 프로그램을 닫을 때 중단하고 싶습니다.

편집하다 :

나의 생애주기 수업 :

package upload.center.util;

import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
import org.eclipse.e4.ui.workbench.lifecycle.PreSave;

public class WindowLifeCycle {

 @PostContextCreate
 public void postContextCreate()
  {
    // TODO start up code here
     System.out.println("open");
  }

@PreSave
  public void preSave()
  {
     // TODO add shutdown code here
    System.out.println("close");
  }
}

내 플러그인.xml :

<product ....
<property
           name="windowLifeCycle"
           value="bundleclass://UploadCenter.Source/upload.center.util.WindowLifeCycle">
     </property>
 ...</product>

나는 충분히 명확하기를 바랍니다.

이스마일

도움이 되었습니까?

해결책

순수 Eclipse 4(e4) 애플리케이션의 경우 워크벤치 창 권고자(및 기타 권고자)가 사용되지 않습니다.당신은 @PreSave 종료 중에 코드를 실행하는 라이프 사이클 클래스의 메소드입니다.

public class LifeCycle
{
  @PostContextCreate
  public void postContextCreate()
  {
    // TODO start up code here
  }

  @PreSave
  public void preSave()
  {
     // TODO add shutdown code here
  }
}

제품 정의에서 라이프 사이클 클래스를 선언합니다. plugin.xml:

<extension
     id="product"
     point="org.eclipse.core.runtime.products">
  <product
        name="%product.name"
        application="org.eclipse.e4.ui.workbench.swt.E4Application">
      <property
           name="lifeCycleURI"
           value="bundleclass://plugin-id/package.LifeCycle">
     </property>
     .... more properties ...

자세한 내용은 다음을 참조하세요. 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top