即使操作系统杀死应用程序后,Android Activity 仍保留在堆栈中

标签 android android-intent android-activity android-manifest android-task

问题:该应用程序允许您打开多个 Activity 。正常启动应用程序,打开多个 Activity ,然后通过“主页”按钮关闭应用程序。使用手机,打开其他应用程序。在某些时候,Android 操作系统会终止应用程序进程,您可以重新启动应用程序。开始正确使用它,打开几个 Activity ,然后返回、返回、返回以关闭 Activity 。当您关闭最后一个 Activity 时,您可以看到之前使用过的 Activity 。

第一个问题:为什么我的 Activity 在操作系统终止应用程序后仍留在后台?

第二个问题:如何解决这个问题?

最佳答案

Why my activities stay in background after OS kill application?

这是设计使然。在 Android 中,应用程序永远不会真正死亡,即使包含的进程被终止。默认情况下会保存应用程序的最后已知状态,以便当用户返回到应用程序时,他可以从之前离开的位置继续。

How to solve this problem?

首先您需要考虑这是否真的是一个问题。由于这是默认行为,因此您必须考虑框架设计者在编写此行为时的想法,以及您想要的是否真正适合 Android 应用程序。

如果您认为它适合您的应用,那么您可以执行以下两项操作之一:

1.添加

android:clearTaskOnLaunch = true
android:excludeFromRecents = true
android:finishOnTaskLaunch = true
android:noHistory = true

添加到应用 list 中的根Activity标记,并将android:noHistory = true添加到ALL您的 Activity 标签。

2. 像这样启动所有Activity:

Intent i = new Intent(this, NextActivity.class);
i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

这基本上可以确保应用的任何Activity没有历史记录。

关于即使操作系统杀死应用程序后,Android Activity 仍保留在堆栈中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29197639/

相关文章:

javascript - 阻止 WebView 运行 Javascript,直到它可见

java - 单个 Activity 中的多个 Intent

android - 如何从当前 Activity 开始新 Activity ?

android - 在android中启动应用程序后无法看到整个页面

android - 是否有适用于 Mac 或 Windows 的 Miracast 客户端/服务器?

android - 如何将 TextField 居中放置在 Container 中?

android - 无法在 Galaxy Tab 10 上查看陀螺仪

android - 在用户同意的情况下在 Android 中禁用蓝牙

android - 从联系人选择器 Intent 中选择电子邮件、姓名和电话号码

android - 如何传递 Intent 但不立即开始 Activity