And*_*oid 3 android state android-activity
我是指http://developer.android.com/reference/android/app/Activity.html.
我有一个可以被用户"中断"的活动,例如用户打开菜单来调用首选项屏幕.调用首选项屏幕时onSaveInstanceState(Bundle),我可以保存我的数据.到目前为止这很好.但是,在按下后退按钮onRestoreInstanceState(Bundle savedInstanceState)时不叫.
那么如何保存我的州?在调用新活动时我是否必须这样做?但是怎么样?
我能想到的唯一方法是通过将状态传递给新活动来保存状态,不使用保存的数据执行任何操作,将其返回到第一个活动并恢复状态onActivitResult.但这意味着我必须来回传递数据才能恢复状态.似乎不是一个很好的解决方案.
可能是一个糟糕的答案,但你确定onRestoreInstanceState需要被召唤吗?
bundle和onSaveInstanceState/ onCreatewith bundle /的目的onRestoreInstanceState是为历史堆栈中的活动保存瞬态数据,以防必须杀死活动以回收某些内存.如果它被杀死,活动就可以恢复,就好像它永远不会被杀死一样onCreate / onRestonreInstanceState. 但是,如果活动没有被杀死,则可能不需要恢复其瞬态数据 - 可能是它就像它一样.
Android的文档谨慎地指出,onSaveInstanceStae / onRestoreInstanceState是不是生命周期方法,因此不能保证在生命周期状态转变到被调用.如果需要挂钩某些生命周期转换,请查看生命周期钩子方法.例如,onResume当活动变为前台活动onPause时调用,并且当活动不再是前台活动时调用.
