Lunar Lander示例中的缺陷(IllegalThreadStateException)

时间:2011-01-16 21:29:10

标签: android android-activity preferences surfaceview

我一直在玩月球着陆器示例,并在尝试实现关于屏幕时遇到了问题。我将其中一个菜单项(在onCreateOptionsMenu中)更改为“about”选项。选择此选项后,将启动一个新活动并显示一个关于屏幕。

@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 个答案:

答案 0 :(得分:2)

小说给出的链接让我得到答案。问题不在我的代码中,这是由于Lunar Lander示例中的缺陷(它没有正确处理其线程)。

对于那些寻找不使用Lunar Lander有缺陷框架的稳定游戏循环的人来说,我发现这个例子非常有效:http://blorb.tumblr.com/post/236799414/simple-java-android-game-loop

感谢您的帮助