gpt4 book ai didi

android - 应用升级时是否清理了Android Activity instanceState?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:41 26 4
gpt4 key购买 nike

在 Activity 的 instanceState 中,我们存储一个 Serializable (bundle.putSerializable)。在 Play 商店的崩溃报告中,我们看到了以下堆栈跟踪:

Caused by: java.lang.ClassNotFoundException: o.ণ
at java.lang.Class.classForName(Class.java)
at java.lang.Class.forName(Class.java:308)
at android.os.Parcel$2.resolveClass(Parcel.java:2373)
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1782)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
at android.os.Parcel.readSerializable(Parcel.java:2381)

我们的代码被 DexGuard 混淆了。看起来 Android 能够序列化该类但不能反序列化该类。

我们目前能想到的唯一原因是应用升级(通过 de Play Store)。在版本之间更改了类(由于 Dexguard)使得反序列化变得不可能。

所以,我的问题是:Android 是否会在应用升级期间清除应用的所有 instanceState?

最佳答案

如果这些类有可能发生变化(即使只是 DexGuard 改组名称),则不应在已保存的 instanceState 中包含自定义类。系统会保留一些关于最近 Activity 的信息,并可能会尝试在升级过程中重用这些信息。

关于android - 应用升级时是否清理了Android Activity instanceState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com