假设我有一个带菜单的基本活动,当我点击菜单项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设备的速度。
答案 0 :(得分:40)
来自docs关于noHistory
:
值“true”表示活动不会留下历史记录。它不会保留在任务的活动堆栈中,因此用户将无法返回该任务。
关于你的问题:
是否存在A,B,A,B,A,B的真实堆栈?
文档表明没有。
我关注资源问题而不是放慢用户Android设备的速度。
你真的不需要担心这个。当内存不足时,操作系统应该处理活动的清理。更有可能的是,在您的活动中使用位图或逻辑不当会导致性能下降。
答案 1 :(得分:1)
android:noHistory =“true”有效: -
假设您已打开"您的应用程序"。
您现在正在主页上活动
之后,您将进入另一个(第二个)活动。在第二个活动中,您按下移动设备的主页按钮或打开其他应用程序。
现在再次打开你的应用程序"它将转到应用程序的主页,而不是去你离开应用程序的活动(即第二个活动)。
答案 2 :(得分:0)
我的应用程序中有很少的碎片,按下后退按钮而不进入我的应用程序的Launcher Activity似乎很难进入主屏幕。我使用了android:noHistory =" true"在我的应用程序的启动器活动的清单中,问题现在得到解决。