Ошибка в примере Lunar Lander (IllegalThreadStateException)

Я играл с примером лунного спускаемого аппарата и столкнулся с проблемой, пытаясь реализовать экран "примерно". Я изменил один из пунктов меню (в onCreateOptionsMenu) на опцию "о". Когда выбрана эта опция, запускается новая активность и отображается экран "О программе".

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case MENU_ABOUT:
            startActivity(new Intent(this, About.class));
            return true;
            //Other cases
    }
    return false;
}

Это работает отлично, и фокус перемещается на новую активность. Однако, когда я нажимаю обратно на телефон, чтобы вернуться в игру, программа вылетает. Я получаю эту ошибку:

Thread [<3> main] (Suspended (exception IllegalThreadStateException))   
LunarView(SurfaceView).updateWindow(boolean) line: 465  
LunarView(SurfaceView).onWindowVisibilityChanged(int) line: 189 
LunarView(View).dispatchWindowVisibilityChanged(int) line: 3782 
FrameLayout(ViewGroup).dispatchWindowVisibilityChanged(int) line: 704   
FrameLayout(ViewGroup).dispatchWindowVisibilityChanged(int) line: 704   
PhoneWindow$DecorView(ViewGroup).dispatchWindowVisibilityChanged(int) line: 704 
ViewRoot.performTraversals() line: 710  
ViewRoot.handleMessage(Message) line: 1650  
ViewRoot(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 123 
ActivityThread.main(String[]) line: 4595    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 521  
ZygoteInit$MethodAndArgsCaller.run() line: 860  
ZygoteInit.main(String[]) line: 618 
NativeStart.main(String[]) line: not available [native method]  

Может ли кто-нибудь помочь мне понять, что происходит? Я сталкиваюсь с той же проблемой каждый раз, когда пытаюсь вернуться на игровой экран с чего-то другого (будь то из предпочтений "Активность", "Справка" или с домашнего экрана). Спасибо

1 ответ

Решение

Ссылка, которую дала фантастика, привела меня к ответу. Проблема не была в моем коде, это было из-за недостатка в примере Lunar Lander (он не обрабатывает свою нить должным образом).

Для тех, кто ищет стабильный игровой цикл, в котором не используются ошибочные фреймворки Lunar Lander, я нашел этот пример очень хорошим: http://blorb.tumblr.com/post/236799414/simple-java-android-game-loop

Спасибо за помощь

Другие вопросы по тегам