You specifically call notifyDestroyed() from within startApp() .
My best guess is that the handset (or emulator) that you are trying to do this does not do too well.
Try this instead:
When controller.initialize() throws an exception, throw a simple Form with one error message "Exit" Command and StringItem .
Call notifyDestroyed() from the notifyDestroyed() callback.
As for threads, you need to stop them when the user wants to exit your application.
Most MIDP sessions will be able to handle some threads that do not stop beautifully, but system resources are not cleaned up correctly, which can cause problems, especially on platforms that never stop the Java virtual machine process itself.
source share