后退按钮导致应用程序停止响应

时间:2016-05-15 22:03:49

标签: android android-activity back-button

我的应用程序目前有两个活动,一个启动屏幕和一个游戏活动。启动屏幕只是背景和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

感谢您的帮助并花时间阅读本文。

如果有任何其他代码需要帮助,请与我们联系。

1 个答案:

答案 0 :(得分:0)

调用onBackPressed()时终止线程解决了问题。