我有一个应用程序工作正常,除非它在后台很长一段时间并被带回到前台。我想知道这是否与标志alwaysRetainTaskState有关,当系统清除我的活动堆栈时。我想测试它,但我不想每次都坐30分钟。有没有办法以其他方式触发正常的系统行为?
更新: 如果我设置标志android:clearTaskOnLaunch,当我重新启动应用程序时它是否会像alwaysRetainTaskState那样做?
答案 0 :(得分:3)
有没有办法以其他方式触发正常的系统行为?
测试alwaysRetainTaskState的最简单方法是离开Activity并启动使用大量内存的多个应用程序(一个接一个)。它重复但相当可靠。如果我选择合适的应用程序,我可以在大约40秒后在我的Galaxy S-II上触发一个。
除此之外,我知道没有其他直接的方法来测试这个标志。
如果我设置标志android:clearTaskOnLaunch,当我重新启动应用程序时,是否会执行与alwaysRetainTaskState相同的操作?
绝对不是。 ClearTaskOnLaunch
基本上意味着您的应用将返回根活动。所有其他活动都将从您的活动堆栈中删除。这意味着如果您的Activity依赖于子活动来传递其内容,那么它将全部丢失。换句话说,它使用户返回到应用程序的活动堆栈的初始状态。它可以保持 Activity的状态,具体取决于alwaysRetainTaskState标志。
其他信息
alwaysRetainTaskState
仅对您的root活动有用。其基本目的是使其和所有其他活动保持较长时间。任何与这些活动没有直接联系的对象都是不断变化的,并且可以被丢弃。通常,如果alwaysRetainTaskState
不起作用,那是因为您的代码是手动删除引用(通常是对onPause()
或类似事件的响应)。
答案 1 :(得分:-1)
可能是因为您在Application上存储数据。当很多时间过去后,应用程序被终止(由于内存等原因)。
返回时,它会恢复除应用程序对象之外的所有内容......它们会崩溃为空。