你是对的。当您在活动 C 上时,A 和 B 都处于“已停止”状态,因此有资格被清理(移至“已销毁”状态,然后进行垃圾收集)。看起来文档中的相关文章在这里:
http://developer.android.com/training/basics/activity-lifecycle/recreating.html
非常基本的想法:您覆盖onSaveInstanceState
并且Android会在适当的时候调用它。然后它将被传递给您的onCreate()
方法,以便您可以在重新创建活动时恢复它。
编辑:当然,还有其他选择。当您的状态信息很庞大时,您应该特别考虑替代方案,因为上面的方法(反)序列化您的状态,这可能会变得很昂贵。
就个人而言,我倾向于将我需要的信息保存在数据库中,并检查它onCreate()
,甚至onStart()
(当我需要对其他活动中影响的更改做出反应时,这可能会在此活动仍在内存中时发生)。您还可以将所需的信息保存到文件或任何其他持久存储中。不同之处在于您有责任知道何时应该恢复状态,以及何时应该重新开始。
请注意,在静态变量中保存状态也不起作用。静态变量往往比活动的实例变量更持久,但它们可以在没有通知的情况下被擦除,例如当您接到电话时。