Ошибка в примере 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
Спасибо за помощь