Im instanceState einer Aktivität speichern wir ein Serializable (bundle.putSerializable). In einem Crash-Bericht aus dem Play Store sahen wir den folgenden Stack-Trace:Wird die Android-Aktivität instanceState während des App-Upgrades bereinigt?
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)
Unser Code von DexGuard verschleiert wird. Es sieht so aus, als könnte Android die Klasse serialisieren, aber die Klasse nicht deserialisieren.
Der einzige Grund, den wir derzeit denken können, ist ein Upgrade der App (über de Play Store). Zwischen der Version wird die Klasse geändert (wegen Dexguard), was eine Deserialisierung unmöglich macht.
Also, meine Frage ist: reinigt Android alle instanceState einer App während der Aktualisierung einer App oder nicht?
Behandelt Ihre App jede spezielle Art von Absicht, z. durch Aufruf oder Bereitstellung eines internen 'Service'? – JimmyB
Ja, wir haben einen internen Dienst, der mit einem Intent mit Bündelparametern gestartet wurde. Das Problem, das ich oben beschrieben habe, ist jedoch ein Problem innerhalb einer Aktivität. – userM1433372
Irgendwelche Kommentare zu der Antwort? –