2010-04-25 6 views
4

놀랍게도 내 응용 프로그램에서는 midlet을 종료해도 작동하지 않습니다. 아마도 쓰레드를 사용하고 있기 때문일 수도 있지만, destroyApp()notifyDestroyed()은 충분하지 않습니다. 예를 들어j2me Midlet을 종료/종료/중지하는 방법은 무엇입니까?

테이크 다음 코드를

protected void destroyApp(boolean arg0) throws MIDletStateChangeException { 
    System.out.println("destroying"); 
    notifyDestroyed(); 
} 
protected void startApp() throws MIDletStateChangeException { 
    try { 
     // init modules 
     controller.initialize(); 
    }catch (Exception e) { 
     viewer.showAlert("error in startApp() init controller"); 
     destroyApp(true); 
    } 

}

+0

불행히도 http://stackoverflow.com/questions/1485943/question-for-terminate-app-in-j2me-but-it-doesnt-mean-quit-from-application에서 해결책을 찾지 못했습니다. – hsmit

답변

0

당신이 호출해야 '경우 notifyDestroyed'방법은 응용 프로그램이 아닙니다 'destroyApp'방법을 종료합니다.

2

구체적으로 notifyDestroyed()startApp()에서 호출하고 있습니다.

가장 좋은 추측은 당신이 시도하고있는 핸드셋 (또는 에뮬레이터)이 그것을 너무 잘 처리하지 않는다는 것입니다.

대신을 시도해보십시오

  • controller.initialize() 예외를 throw, 하나의 "종료"CommandStringItem 오류 메시지와 함께 간단한 Form를 표시합니다.

  • CommandListener.commandAction() 콜백에서 notifyDestroyed()으로 전화하십시오.

스레드와 관련하여 사용자가 응용 프로그램을 종료 할 때 멋지게 종료되도록하는 것이 좋습니다.

대부분의 MIDP 런타임은 제대로 종료되지 않는 일부 스레드를 처리 할 수 ​​있지만 시스템 리소스를 적절히 청소하지 않으면 Java 가상 시스템 프로세스 자체를 종료하지 않는 플랫폼에서 문제가 발생할 수 있습니다.