onSaveInstanceState和finish()

Ell*_*hir 5 android android-activity

简短的问题:是否可以使用onSaveInstanceState()方法保存数据,然后调用finish()Activity并在下次启动Activity时将数据重新输入savedInstanceState?或者finish()一项活动意味着数据消失了吗?

如果第一个答案是正确的,我在实施中遇到null了一些问题,因为onCreate()尽管数据已保存,但我还是进入了.如果第二个答案是正确的,我将不得不重新考虑如何将我的活动连接在一起:o)

Com*_*are 7

是否可以使用onSaveInstanceState()方法保存数据,然后在Activity上调用finish()并在下次启动Activity时将数据恢复到savedInstanceState中?

没有.

或者,活动的finish()是否意味着数据消失了?

是.保存的实例状态Bundle适用于从用户的角度来看,您的活动仍处于活动状态但由于技术原因而被销毁的情况:

  • 配置更改(例如,屏幕旋转)
  • 流程终止(用户可以相当快地返回您的应用)

如果finish()由于其他原因而调用 - 您直接调用它,用户按下BACK等等 - 然后不再需要保存的实例状态并且可以将其丢弃.

因此,保存的实例状态Bundle用于您希望保留的瞬态数据,但是在面对配置更改和进程终止时(例如部分填充的表单的内容)很容易丢失.