当我单击“后退”按钮时,我正在尝试保存和检索Activity
的{{1}}。我已经读过默认情况下不会保存它,因为假定单击时用户已经完成onSaveInstanceState()
的操作。但是,在我的应用中,情况并非如此,我想从内部调用Activity
:
onSaveInstanceState()
但是,它保存在屏幕旋转中。我读过的也是默认行为。
我花了几天时间尝试破解,但是我什么都没得到。
答案 0 :(得分:1)
单击后退按钮时,我试图保存和检索我的活动saveInstanceState。我已经读过默认情况下不会保存它,因为它假定用户在单击时已完成活动。
一切正确。此外,在这种情况下, Android 假定用户不再需要该应用程序,因此可以安全地终止该应用程序进程。
可以手动调用saveInstanceSate吗?
当然。 method is protected
。但是,按照您的要求没有意义。在您的情况下,即使系统将保存您作为方法参数传递的“手动” Bundle
,由于回压,驻留在RAM中的数据也会随应用进程本身立即消失。>
但是,它保存在屏幕旋转中。
也是正确的。在这种情况下, Android 假定该应用程序仍在使用中,因此它(部分)在乎为您恢复其状态。
但是,在我的应用中,情况并非如此,我想从
onBackPressed()
中保存实例状态。
我怀疑您是否应该对OS习惯进行斗争。 Android 为您提供了恢复应用程序状态的替代选项(因此,用户“认为”他/她完全在离开应用程序的那一刻就回到了您的应用程序),例如SharedPreferences
,数据库,内部存储空间等。我建议您保留操作系统惯用语。
答案 1 :(得分:0)
我建议使用SharedPreferences保留这种性质和方案的数据。这样,saveInstanceState()的工作就可以手动完成。这些数据会在应用程序过时死亡,配置更改等情况下幸免