Скорее всего проблема со сменой состояний мидлета:
startApp()
destroyApp(boolean unconditional)
Метод startApp() вызывается как при запуске приложения, так и при восстановлении из свёрнутого состояния (которое при сворачивании или входящем вызове, если телефон это поддерживает).
Мои методы выглядят всегда примерно так:
public void startApp() {
if(game == null) {
game = new Main(this);
game.start();
}
else {
game.resume();
}
}
public void pauseApp() {
if(game != null)
game.pause();
}
public void destroyApp(boolean unconditional) {
game = null;
notifyDestroyed();//говорим телефонному менеджеру приложений что пора убить мидлет
}