当我尝试通过覆盖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是最低要求,因此它不必在较低版本上运行..
谢谢!
答案 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
,例如互联网,视频等