Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:我怎样才能退出应用程序?_Android - Fatal编程技术网

Android 安卓:我怎样才能退出应用程序?

Android 安卓:我怎样才能退出应用程序?,android,Android,在我的android应用程序中,我更改了后退按钮功能,使其进入游戏的主屏幕,现在它位于主屏幕上,我应该如何使用后退按钮退出整个应用程序 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { Assets.getInstance().getClick().play(1); this.clearScreenSta

在我的android应用程序中,我更改了后退按钮功能,使其进入游戏的主屏幕,现在它位于主屏幕上,我应该如何使用后退按钮退出整个应用程序

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
          Assets.getInstance().getClick().play(1);
          this.clearScreenStack();
          this.setScreen(new MainMenuScreen(this));
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

安卓的设计不支持选择退出应用程序,而是通过操作系统来管理应用程序。您可以根据其相应的意图启动Home应用程序:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

选中谷歌不鼓励退出按钮,你应该让操作系统来处理它

请阅读:


如果你真的想退出,我也帮不了你,但我想我应该提到这一点。

你也可以检查用户是否输入了两次后退按钮

boolean backPressed = false;
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && !backPressed) {
          Assets.getInstance().getClick().play(1);
          this.clearScreenStack();
          this.setScreen(new MainMenuScreen(this));
          backPressed = true;
        return true;
    }

    backPressed = false;
    return super.onKeyDown(keyCode, event);
}

如果您有一个机制可以用来查看显示的屏幕,您可以执行以下操作:

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        if(mainScreenIsShowing == true){
            //If the main screen is showing let the back button
            //have its default behavior.
            return super.onKeyDown(keyCode, event);
        }else{
            Assets.getInstance().getClick().play(1);
            this.clearScreenStack();
            this.setScreen(new MainMenuScreen(this));
            return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}

这是一个值得商榷的话题,但我看不出有什么问题,或者当按下后退按钮时应用程序退出。毕竟,调用finish()是back按钮的默认行为。如果处理主屏幕的活动位于活动堆栈的底部,则调用finish()将退出应用程序

我建议如下:让MainMenuScreen在单独的活动MainMenuActivity中处理,MainMenuActivity是主要活动。finish()返回MainMenuActivity时的其他活动,并在MainMenuActivity中按如下方式处理onKeyDown:

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        this.finish()
    }
}

你看过问题了吗?OP要求使用后退按钮退出应用程序(这是android的股票行为),而不是实现退出按钮。OP希望后退按钮上有退出按钮功能。基本相同。但是“后退”按钮的默认行为是调用堆栈顶部活动的finish()。。。他只是想弄清楚如何在主屏幕显示时使其具有默认行为。