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

时间:2012-08-06 21:18:43

标签: 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设备的速度。

3 个答案:

答案 0 :(得分:40)

来自docs关于noHistory

  

值“true”表示活动不会留下历史记录。它不会保留在任务的活动堆栈中,因此用户将无法返回该任务。

关于你的问题:

  

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

文档表明没有。

  

我关注资源问题而不是放慢用户Android设备的速度。

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

答案 1 :(得分:1)

android:noHistory =“true”有效: -

假设您已打开"您的应用程序"。

您现在正在主页上活动

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

现在再次打开你的应用程序"它将转到应用程序的主页,而不是去你离开应用程序的活动(即第二个活动)。

答案 2 :(得分:0)

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