Android:在Android生命周期中保存状态
我是指http://developer.android.com/reference/android/app/Activity.html。
我有一个可以被用户“中断”的活动,例如用户打开菜单以调用首选项屏幕。调用首选项屏幕时,调用
onSaveInstanceState(Bundle)
,我可以保存我的数据。到目前为止这很好。但按下后退按钮onRestoreInstanceState(Bundle savedInstanceState)
不会被调用。
那么如何保存我的州?在调用新活动时我是否必须这样做?但是怎么样?
我能想到的唯一方法是通过将状态传递给新活动来保存状态,不使用保存的数据执行任何操作,将其返回到第一个活动并在onActivitResult
中恢复状态。但这意味着我必须来回传递数据才能恢复状态。似乎不是一个很好的解决方案。
没有找到相关结果
已邀请:
3 个回复
樊熄忙暖
/
与bundle /
是为了保存历史堆栈中的活动的瞬态数据,以防必须杀死活动以回收某些内存。如果它被杀死,活动可以通过
恢复,好像它从未被杀死一样。但是,如果活动没有被杀死,则可能不需要恢复其瞬态数据 - 可能是它就像它一样。 Android文档小心地指出
不是生命周期方法,因此不能保证在生命周期状态转换期间调用它们。如果需要挂钩某些生命周期转换,请查看生命周期钩子方法。例如,当活动变为前景活动时调用
,当不再是前景活动时调用
。
草票
和前面讨论的其他方法不同,
和
不是生命周期方法。它们并不总是被称为。例如,Android在活动变得容易被系统破坏之前调用
,但是当实例被用户操作实际销毁时(例如按BACK键),它不会打扰它。在这种情况下,用户不会期望返回活动,因此没有理由保存其状态。 因为并不总是调用
,所以应该仅使用它来记录活动的瞬态,而不是存储持久数据。改为使用
。 基本上,任何持久性数据都应该用
方法写出,并在
中读回。查看数据存储文章,了解如何保存数据。
秃拳割