onSaveInstanceState和finish()

时间:2016-04-25 12:46:26

标签: android android-activity

简短问题:是否可以使用onSaveInstanceState()方法保存数据,然后在Activity上调用finish(),并在下次启动活动时将数据恢复到{ {1}}?或者savedInstanceState是否意味着数据已消失?

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

1 个答案:

答案 0 :(得分:5)

  

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

没有

  

或者,活动的结束()意味着数据消失了吗?

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

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

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

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