2016-05-09 40 views
2

因此,Activity.onCreate()Bundle作为参数,默认情况下它被称为savedInstanceState。应用程序更新到更新版本时是否保留savedInstanceState? (让我们通过Google Play说)。我可以在savedInstanceState中添加一些数据,将应用程序更新为新版本,并仍然可以访问数据?是否在更新期间保存savedInstanceState?

+1

我怀疑它是否保留,因为不能保证任何自定义的Parcelable类在旧版和新版应用程序版本之间是一致的。话虽如此,我还没有测试过这种情况。 – CommonsWare

回答

1

保存的实例数据在应用程序更新期间不会保留。这实际上是有意义的,不仅因为不同版本之间的数据类型潜在的不兼容风险,还因为您的新二进制文件可能只是完全新的应用程序,仅共享packageId和签名证书。这就是为什么新版本需要重新启动 - 更新后用户将从新的状态开始,因为这比尝试将应用恢复到更新开始前的状态(这可能根本不可能)要安全得多。

因此,如果您希望数据不受更新影响,数据库或共享首选项是更好的选择。

1

documentation状态:

如果系统破坏活动由于系统 约束(而不是正常的应用程序的行为),那么虽然 实际活动情况消失后,系统会记住它的存在 例如,如果用户导航回到该位置,系统将使用一组保存的数据创建一个新的活动实例,该组数据描述活动在销毁时的状态。系统用于恢复先前状态的已保存数据称为“实例 状态”,并且是存储在Bundle 对象中的键值对的集合。

但是没有提及如果应用程序在更新时被杀死会发生什么。

您应该使用SharedPreferences来安全地保存信息。

相关问题