Nell'istanzaStato di un'attività viene archiviato un numero di serie (bundle.putSerializable). In un rapporto incidente dal Play Store abbiamo visto la seguente analisi dello stack:L'istanza di attività AndroidState viene pulita durante l'aggiornamento dell'app?
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)
Il nostro codice è offuscato dalla DexGuard. Sembra che Android sia in grado di serializzare la classe ma non di deserializzare la classe.
L'unico motivo per cui attualmente possiamo pensare è un aggiornamento dell'app (tramite de Play Store). Tra la versione la classe è cambiata (a causa di Dexguard) rendendo impossibile la deserializzazione.
Quindi, la mia domanda è: Android pulisce tutte le instanceState di un'app durante l'aggiornamento di un'app o no?
La tua app gestisce qualsiasi tipo speciale di 'Intento', ad es. chiamando o fornendo un "servizio" interno? – JimmyB
Sì, abbiamo un servizio interno avviato con un'intento con i parametri del pacchetto. Tuttavia il problema che descrivo sopra è un problema all'interno di un'attività. – userM1433372
Qualche commento alla risposta? –