41

假设我有一个带有菜单的基本活动,当我单击菜单项 A 时,它会转到活动 A。我再次打开菜单,然后转到 B。从 BI 回到 A,然后像这样返回和第四次一会儿。

所以堆栈将是 A,B,A,B,A,B,...。当我按下后退按钮时,它会按预期向后通过堆栈。

但是可以说我不想要这个功能,所以我添加到我的清单中,android:noHistory="true". 因此,当我点击后退按钮时,它会退出应用程序而不是通过堆栈。

现在幻觉让它看起来,假设我在活动 A 中,我使用菜单并转到活动 B,堆栈将只是 B,因为我不能回到 A。

但是,当使用 时noHistory="true",A、B、A、B、A、B 的真正堆栈是否存在?相反,是不是通过使用菜单实例化该活动的新副本而对活动的每次调用,但用户看不到它?这会导致资源问题吗?

或者什么时候noHistory="false",后退按钮只是startAcitvity(intent)再次调用类似的东西还是遍历每个实例化的新副本?

我关心资源问题,而不是降低用户安卓设备的速度。

4

3 回答 3

49

来自关于的文档noHistory

“真”值意味着活动不会留下历史痕迹。它不会保留在任务的活动堆栈中,因此用户将无法返回它。

关于你的问题:

A,B,A,B,A,B的真正堆栈存在吗?

文档会表明没有。

我关心资源问题,而不是降低用户安卓设备的速度。

你真的不需要担心这个。当内存变低时,操作系统应该处理活动的清理。在您的活动中不当使用位图或逻辑更有可能导致性能下降。

于 2012-08-06T21:33:04.240 回答
4

android:noHistory=“true” 有效:-

假设您已经打开了“您的应用程序”。

您现在在主页活动中,

在它之后你去另一个(第二个)活动。从第二个活动你按下移动设备的主页按钮或打开其他一些应用程序。

现在,如果您再次打开“您的应用程序”,它将转到应用程序的主页,而不是转到您离开应用程序的活动(即第二个活动)。

于 2018-04-18T07:50:32.480 回答
0

我的应用程序中几乎没有碎片,并且在不进入我的应用程序的 Launcher Activity 的情况下按返回按钮似乎很难进入主屏幕。我在我的应用程序的启动器活动清单中使用了 android:noHistory="true" ,现在问题得到了解决。

于 2018-06-19T05:54:26.260 回答