android:noHistory ="true"是如何工作的?

M J*_*sse 34 android

让我说我有一个带菜单的基本活动,当我点击菜单项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),还是通过每个实例化的新副本?

我关注资源问题,而不是减慢用户Android设备的速度.

sla*_*ton 42

文档有关noHistory:

值"true"表示活动不会留下历史痕迹.它不会保留在任务的活动堆栈中,因此用户将无法返回该任务.

关于你的问题:

A,B,A,B,A,B的真正堆栈是否存在?

文档将表明没有.

我关注资源问题,而不是减慢用户Android设备的速度.

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


小智 10

android:noHistory=\xe2\x80\x9ctrue\xe2\x80\x9d 有效:-

\n\n

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

\n\n

您现在在主页活动,

\n\n

之后,您进入另一个(第二个)活动。在第二个活动中,您按下移动设备的主页按钮或打开其他应用程序。

\n\n

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

\n