传递给savedInstanceState
的{{1}}参数是否已由不同版本的应用保存?我在文档中找不到任何对此的引用。
如果活动背景化,然后由于内存不足而被杀死,然后安装了新版本的应用程序,然后用户使用最新列表导航回活动,理论上这可能是理所当然的。
在下面的示例代码中,如果版本之间的枚举已更改,或者代码是否安全,Activity.onCreate
可以抛出onCreate
或设置令人惊讶的状态吗?
ArrayIndexOutOfBoundsException
答案 0 :(得分:4)
没有。 SavedInstanceState不用于在同一应用程序的新实例之间保留数据。它用于在当前应用程序的“会话”期间临时存储数据。
换句话说,当您的活动被销毁时,例如,当您旋转屏幕时,会存储您提供给savedInstanceState包的值。然后在重新创建活动时检索这些值。
当您完全退出应用程序或安装新版本时,这些值将丢失。
答案 1 :(得分:1)
理论上永远。 在升级(更改)应用程序之前。它已停用,稍后重新开始。 现在Android Studio增加了功能" Instant Run",在这种情况下可能会出现这样的异常。更多我没有任何想法。在我看来,现在不需要这样的检查。我的发展一直没有遇到类似的情况,也没有听说过这样的情况。