使用System.exit(0)强制退出Android应用程序不起作用

时间:2014-11-20 21:58:00

标签: java android quit system.exit

当我尝试通过覆盖Android设备的后退按钮和“System.exit(0)”来退出我的Android应用程序时,这不起作用。

我有一个名为“LoginActivity”的活动和一个名为“OverviewActivity”的活动。

当我在OverviewActivity中启动一个意图切换到LoginActivity时,这是有效的。

Intent changeViewIntent = new Intent(OverviewActivity.this,
            LoginActivity.class);
startActivity(changeViewIntent);

现在我在LoginActivity中,并且有覆盖的方法:

@Override
public void onBackPressed() {
    System.exit(0);
}

但是当我按下后退键(例如在设备模拟器中)时,屏幕空白一毫秒,然后返回到OverviewActivity。

为什么会这样?我只想在按下后退键时强行关闭。

清单中禁用OverviewActivity的历史记录是没有选项的,因为有多种方法可以从其他活动访问OverviewActivity。

也许有个主意? Android 4是最低要求,因此它不必在较低版本上运行..

谢谢!

2 个答案:

答案 0 :(得分:3)

通过删除整个活动 - 通话记录并启动Home-Scrren的Home-Activity,可以退出。

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

答案 1 :(得分:-1)

你能做的是

在OverviewActivity中:

Intent changeViewIntent = new Intent(OverviewActivity.this,
            LoginActivity.class);
startActivity(changeViewIntent);
OverviewActivity.this.finish();
启动意图后

终止概览活动

并在LoginActivity中

@Override
public void onBackPressed() {
    LoginActivity.this.finish();

}

这样您的应用就会退出。

finish()System.exit(0)

之间的差异

VM停止进一步执行,程序将退出。

现在,在您的情况下,第一个活动由于活动堆栈而返回。

因此,当您使用Intent从一个活动移动到另一个活动时,请像这样执行当前活动的finish()

如果您想强制退出,可以使用

        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(0);
        getParent().finish();

但是,如果您的活动在后台使用其他资源,则不应使用System.exit,例如互联网,视频等