我有 2 个活动:主要和列表。
从 Main 你可以打开 List;从列表中,您可以打开 Main。
我希望它不会让 List 的每次打开都保存到“历史”中。因此,从 Main 按下返回无法返回 List。
可能吗?
我有 2 个活动:主要和列表。
从 Main 你可以打开 List;从列表中,您可以打开 Main。
我希望它不会让 List 的每次打开都保存到“历史”中。因此,从 Main 按下返回无法返回 List。
可能吗?
开始列表时Activity
,设置它的Intent
标志,如下所示:
Intent i = new Intent(...); // Your list's Intent
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
startActivity(i);
该FLAG_ACTIVITY_NO_HISTORY
标志防止新Activity
的被添加到历史堆栈中。
注意:正如@Sam 指出的那样,您可以i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
改用。没有功能上的区别。
在清单文件中添加:
android:noHistory="true"
到您不想保留在堆栈上的活动。
将新任务与清除一起使用。当其他选项没有时,这在我的情况下有效。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
看来,如果您在打开另一个活动后立即在您的活动上调用完成(),则已完成的活动将从堆栈中删除。
例如:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
在我的特殊情况下FLAG_ACTIVITY_NO_HISTORY
没有工作。自己也没有工作,FLAG_ACTIVITY_NEW_TASK
也没有FLAG_ACTIVITY_CLEAR_TASK
工作。
然而FLAG_ACTIVITY_NEW_TASK
,FLAG_ACTIVITY_CLEAR_TASK
一起工作。
Intent intent = new Intent(FooActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
迟到的答案,但为其他答案增加了一些深度。这一切都取决于您希望从该活动开始的其他活动发生什么
选项 1 - 仅此一项活动不应有调用活动的历史记录
然后做:
Intent i = new Intent(...);
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
选项 2 - 从该特定活动开始的所有活动都不应有历史记录
然后添加调用活动的清单:
android:noHistory="true"
但是,如果您确实想在新活动中拥有历史记录,则必须手动删除该标志:
Intent i = new Intent(...);
i.removeFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
希望清除其他答案:)
只是想在 Kotlin 中添加一种方法:
val i = Intent(this, LogInActivity::class.java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
如果活动已经在运行,请尝试 FLAG_ACTIVITY_CLEAR_TOP:
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
将标志添加FLAG_ACTIVITY_NEW_TASK
到您的Intent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
情况1
使用这个标志
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
在这种情况下,活动过渡在开始活动之前没有顺利工作的空白白页
案例 2:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
如果您的手机没有那么快,您会看到之前的活动正在关闭,我希望在大多数情况下,设备都会处理这个问题
您不能覆盖特定活动上的后退按钮以停止“返回”功能吗?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}