在活动的 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 商店)。在版本之间,类发生了变化(因为 Dexguard),使得反序列化变得不可能。
所以,我的问题是:Android 在升级应用程序期间是否清除应用程序的所有实例状态?