我有两个活动,A和B。
我的应用程序从A转到B。(A->B)。
当我在B上并按下后退按钮(硬件后退按钮)时,A的状态和UI将成功恢复(调用onResume())。问题是,当我按下home按钮(Actionbar箭头)时,上一个活动A会调用onCreate(),因此它的状态和UI不会像按下back按钮那样恢复。
为什么会发生这种情况?我该如何解决?
当你点击ActionBar上的向上按钮时,你似乎创建了一个新的活动a实例,而不是回到已经存在的活动a。
您应该覆盖按下按钮时调用的侦听器,并改为在"活动B"上调用finish()
。因此,该行为将与按下设备的后退按钮相同。
http://developer.android.com/training/basics/activity-lifecycle/recreating.html
谷歌在开发者网站上进行了大量讨论。任何时候您离开应用程序,都必须保存重新创建活动A的最后状态所需的信息,因为系统可以在应用程序关闭后的任何时候从缓存中删除您的应用程序。因此,将重要的数据库密钥等保存到系统上的一个文件中,其中包含重新加载活动所需的密钥。这也将为您处理方向更改。重要的生命周期方法是onPostResume恢复状态,onStop和onDestroy保存状态。
还请阅读有关活动生命周期的信息。