我的应用程序目前有两个活动,一个启动屏幕和一个游戏活动。启动屏幕只是背景和Play
按钮。按播放按钮启动InGameActivity
,它可以正常工作,没有任何问题。但是,当我在游戏中按下back
按钮时,它会返回到上一个屏幕(背景和Play
按钮可见),但应用程序没有响应。几秒钟后,会弹出一条错误消息,要求等待它响应或终止。
在游戏中我使用一个线程来保持一致的30 FPS并控制绘制调用。我最好的选择是导致AndroidManifest.xml
中出现问题或遗漏的线程,但我很困惑。我在互联网上找到的所有内容都表明,后退按钮很少会导致问题,而finish()
或来自onPause()
的{{1}}应该会照顾它,但事实并非如此。
解决方案:调用onBackPressed()时终止线程解决了问题。
onBackPressed()
:
MainActivity
游戏中的活动:
public class MainActivity extends Activity {
ImageButton play;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.title);
play = (ImageButton)findViewById(R.id.title_screen_play_button);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Play button pressed!");
Intent intent = new Intent(getApplicationContext(), InGameActivity.class);
startActivity(intent);
}
});
}
}
我public class InGameActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("In game activity created");
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
//The GamePanel controls the entire game. It extends SurfaceView and implements SurfaceHolder.Callback
GamePanel gamePanel = new GamePanel(this, metrics.widthPixels, metrics.heightPixels, getResources());
setContentView(gamePanel);
}
@Override
protected void onPause() {
super.onPause();
System.out.println("Pausing game activity");
finish();
}
}
中的活动:
AndroidManifest.xml
感谢您的帮助并花时间阅读本文。
如果有任何其他代码需要帮助,请与我们联系。
答案 0 :(得分:0)
调用onBackPressed()时终止线程解决了问题。