我有一个HomeActivity(用于在3秒内显示启动画面),然后自动重定向到LoginActivity(用于检查用户登录信息)。 在LoginActivity中,我有退出应用程序的退出按钮,下面是代码
// TODO Auto-generated method stub
finish();
android.os.Process.killProcess(android.os.Process. myPid());
System.exit(0);
我再次在onDestroy()中使用了相同的代码。 但是,当我尝试退出应用程序时,程序已经关闭。但仍保留在内存中(在后台应用程序列表中)。我该如何解决?
答案 0 :(得分:3)
打电话不是一个好主意:
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
因为android会自动处理进程。 同时从最近排除您的应用不是正确的行为。
顺便说一下,你可以把它放在清单中的“退出”活动标签下:
android:excludeFromRecents="true"
当应用关闭时,它不会出现在最近的应用中
修改强>
如果它在Android 5.0中不起作用,则报告错误,因此添加taskAffinity属性并使用autoRemoveFromRecents:
android:taskAffinity=".YourExitActivity"
android:autoRemoveFromRecents="true"
然后在您的onPause()
中,您可以查看sdk版本以使用finishAndRemoveTask
:
if(android.os.Build.VERSION.SDK_INT >= 21) {
finishAndRemoveTask();
} else {
finish();
}
答案 1 :(得分:0)
完成()就够了。
如果应用程序在调用完成后仍保留在内存中(),则可能是应用程序内存泄漏。
答案 2 :(得分:0)
虽然在清单中提及标签我们可以保留
`android:`noHistory=true
所以提到的活动不会在后面的堆栈中。
例如:
<activity
android:name="Splash_Activity"
android:label="Splash"
android:noHistory="true" />
您只需拨打finish()
即可关闭活动。