2009-09-28 2 views
2

У меня есть случай в j2me .. я хочу закончить, когда приложение в процессе выполняет код. это мой простой код.вопрос о прекращении действия приложения в j2me, но это не значит выйти из приложения

else if (c == cmdStop) { 

       //command berhenti 
       browser.stop(); 

      } 

public void stop(){ 
      // No errors 
        int errorCode = 0; 

       // An error occurred 
        errorCode = -1; 

        // Terminate 
         System.exit(errorCode); 

      } 

проблема, когда я пытаюсь завершить приложение, приложение по-прежнему работали или продолжают выполнять и игнорировать функцию System.exit.

еще Выполнение выражений этот код

private void paintParserScreen(Graphics g){ 

     int w = width; 
     int h = fontHeight+2; 
     int x = 0; 
     int y = height - h; 

     int curLoaded = 0; 
     int value = 0; 
     int iPercent = 0; 



     if(maxElementNum!=0){ 
      curLoaded = wapRender.getCurLoadedTag(); 
      value = curLoaded * 100/maxElementNum; 
      iPercent = (curLoaded * (w - 2))/maxElementNum; 
     } 

     g.setColor(0x808080); 
     g.fillRect(x, y, w, h); 

     g.setColor(0x0000ff); 
     g.fillRect(x + 1, y + 1, iPercent - 2, h - 1); 

     g.setColor(0xffffff); 
     g.drawString("proses..." + value+"%", 
       width>>1, y + 1, Graphics.TOP|Graphics.HCENTER); 
    } 

и они сказали

java.lang.SecurityException: MIDP lifecycle does not support system exit. 
    at java.lang.Runtime.exit(+9) 
    at java.lang.System.exit(+7) 
    at com.gameislive.browser.Browser.stop(+8) 
    at Tampilkan.commandAction(+147) 
    at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282) 
    at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10) 
    at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68) 
    at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47) 
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250) 

пожалуйста, помогите мне, что я должен делать в этом случае?

+0

Вы нашли хорошее решение уже? Я думаю, что, возможно, что-то нужно делать с Threads .. – hsmit

ответ

0

Попробуйте вызвать метод norifyDestroyed() в экземпляре MIDlet.

+0

Я думаю, что он использовался для выхода из приложения. Я пробовал этот метод –

+0

Ваш вопрос + комментарий ... Он не вычисляет ... – JaanusSiim

0

Исключение безопасности, которое вы получаете, говорит все.

Приложения J2ME НЕ ведут себя как приложения J2SE.

Вы не запускаете их таким же образом, и вы не завершаете их таким же образом.

В вашем случае приложение J2ME, которое вы пытаетесь написать, называется MIDlet.

Жизненный цикл MIDlet регулируется средой выполнения MIDP, которая работает поверх виртуальной машины Java, которая просто запускает байт-код Java и обрабатывает системные ресурсы.

Когда MIDlet запускается, среда выполнения MIDP вызывает конструктор MIDlet и переопределение javax.microedition.midlet.MIDlet.startApp().

Чтобы завершить MIDlet, среда выполнения MIDP вызывает переопределение javax.microedition.midlet.MIDlet.destroyApp().

Когда MIDlet решит, что он может быть прерван, он может вызвать свой собственный destroyApp() вместо ожидания выполнения среды выполнения MIDP.

Для того, чтобы рассказать MIDP выполнения, что он может быть безопасно прекращена, мидлет должен вызвать javax.microedition.midlet.MIDlet.notifyDestroyed(), как правило, в качестве последнего вызова метода в destroyApp()

Я предлагаю читающего MIDP specifications, чтобы понять все жизненный цикл и время работы вопросы.

Последние JavaME SDK также содержит много правильно изготовленных мидлетов для вашего вдохновения.

Смежные вопросы