我现在有了一个MainMenu活动,它的布局有一个XML文件。通过按下按钮,意图将用户带到具有GLSurfaceView的游戏活动。
我使用我的' game‘类来管理所有的游戏对象,生命和重置等。当lives达到0时,我想调用onGameOver(),它应该会返回到MainMenu活动。我该如何做到这一点?
我尝试对我的Activity类进行静态调用,以实现以下任一调用:
moveTaskToBack(true);
startActivity(intentToMainMenu);我不知道怎样才能回到主菜单。我还认为我应该销毁游戏的活动,因为如果我切换活动,OpenGL上下文将会丢失。那么我该怎么做呢?
发布于 2011-11-24 04:20:03
你可以像Frank发布的那样做,但在你的特定情况下,你可能不想完成游戏活动(玩家可能会再次玩游戏)。不会丢失任何上下文。如果你完成了你的游戏活动,每次开始一个新的游戏将会很慢。正因为如此,最好开始这样的活动:
Intent i = new Intent(getApplicationContext(), YourActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);reorder to front标志确保您不会有同一个活动的多个实例,因为如果已经存在一个新的活动,它不会启动新的活动。因此,当播放器的生命耗尽时,您只需像上面的示例一样启动MainMenu。
附言:你不能静态地结束活动。
根据你的评论,这里有一个更新:
虽然可能有更好的解决方案,但这里有一个我使用的解决方案:既然你正在创建一个游戏,你可能有一个单独的线程来绘制东西并检查游戏是否已经结束。为活动中UI线程中存在的呈现线程注册一个处理程序。然后,当游戏应该结束时,您将能够向Activity类中的Handler发布一条消息。在接收端,您只需执行我的答案中发布的代码,因为您不会在静态方法中。
如果您不熟悉处理程序:http://saigeethamn.blogspot.com/2010/04/threads-and-handlers-android-developer.html
发布于 2011-11-24 03:46:27
您可以在游戏活动中调用finish()。这将把你带回你的家庭活动。
https://stackoverflow.com/questions/8247916
复制相似问题