首页 > 解决方案 > 如何在后台退出 android 应用程序?

问题描述

情况可能就像说,我有 5 个活动。说主要活动、活动 1、活动 2、活动 3 和活动 4。

可以借助插入主 Activity 布局的按钮直接使用 Activity 1、2、3 和 4。

情况:用户进入Main Activity,按一下按钮进入Activity 2,然后再按一下回到Main Activity。从那里他现在在另一个按钮的帮助下进入活动 3,同样,当他按下返回按钮时,他进入主活动。

主要活动 --> 活动 2 --> 主要活动 --> 活动 3 --> 主要活动。

问题:现在用户从活动 3 进入主活动。用户在 Main Activity 布局上。现在,如果用户按下手机上的后退按钮,则将通过以下过程退出应用程序:

主活动 --> 活动 3 --> 主活动 --> 活动 2 --> 主活动 --> 退出

需要完成:我想从主活动本身退出应用程序,如果用户按下手机上的后退按钮,那么我希望用户应该能够退出,而不是按照上述路径退出应用程序它从 Main Activity 本身通过显示一个简单的 AlertDialog 框

怎么能做到这一点,因为我无法找到解决这个问题的方法?

标签: androidandroid-layoutandroid-studioandroid-sdk-toolsandroid-event

解决方案


您需要onBackPressed()在您的内部覆盖MainActivity() 并使用finishAffinity来完成所有活动

onBackPressed()

当活动检测到用户按下返回键时调用。

finishAffinity()added in API level 16

在当前任务中完成此活动以及紧接其下的所有具有相同亲和力的活动。

示例代码

@Override
public void onBackPressed() {
  super.onBackPressed();
  ActivityCompat.finishAffinity(MainActivity.this);
}

编辑

我希望用户应该能够通过显示一个简单的 AlertDialog 框从主活动本身退出它。

@Override
public void onBackPressed() {

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                .setTitle("Alert")
                .setCancelable(false)
                .setMessage("Are your sure want to exit?")
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ActivityCompat.finishAffinity(MainActivity.this);
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });

        builder.show();

}

推荐阅读