Ho un Activity
in cui sono presenti dati di classe privata. Nel metodo onSaveInstanceState
, provo a salvare questa istanza di Data
. Questa è tutta la mia attività:NotSerializableException quando si preme il tasto home
public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onSaveInstanceState(Bundle outState){
outState.putSerializable("TEST", new Data());
}
private class Data implements Serializable {
private static final long serialVersionUID = -4312723541994925110L;
}
}
Ora quando cambio l'orientamento del dispositivo, l'oggetto Data
viene salvata e letta come dovrebbe. Tuttavia, quando si preme il tasto home, l'applicazione si blocca con il seguente nel logcat:
05-10 20: 05: 51,895: E/AndroidRuntime (30317): eccezione irreversibile: principale 05-10 20 : 05: 51.895: E/AndroidRuntime (30317): java.lang.RuntimeException: Parcelable ha rilevato la scrittura IOException oggetto serializzabile (nome = com.rigidbits.test.TestActivity $ Data) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Parcel.writeSerializable (Parcel.java:1176) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Parcel.writeValue (pacchetto .java: 1130) 05-10 20: 05: 51.895: E/AndroidR untime (30317): a android.os.Parcel.writeMapInternal (Parcel.java:488) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Bundle.writeToParcel (Pacchetto. java: 1552) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Parcel.writeBundle (Parcel.java:502) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.app.ActivityManagerProxy.activityPaused (ActivityManagerNative.java:1615) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.app.ActivityThread.handlePauseActivity (ActivityThread.java : 2298) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.app.ActivityThread.access $ 1700 (ActivityThread.java:117) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.app.ActivityThread $ H.handleMessage (ActivityThread.java:938) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Handler.dispatchMessage (Handler.java:99) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Looper.loop (Looper.java:130) 05- 10 20: 05: 51.895: E/AndroidRuntime (30317): a android.app.ActivityThread.main (ActivityThread.java:3683) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.lang.reflect.Method.invokeNative (metodo nativo) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.lang.reflect.Method.invoke (Method.java:507) 05- 10 20: 05: 51.895: E/AndroidRuntime (30317): a com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:862) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a com .android.internal.os.ZygoteInit.main (ZygoteInit.java:620) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a dalvik.system.NativeStart.main (metodo nativo) 05-10 20: 05: 51,895: E/AndroidRuntime (30317): causato da: java.io.NotSerializableException: com.rigidbits.test.TestActivity 05-10 20: 05: 51,895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeNewObject (ObjectOutputStream.java:1535) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream .writeObjectInternal (ObjectOutputStream.java:1847) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java: 1689) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:1653) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeFieldValues (ObjectOutputStream.java:1143) 05-10 20: 05: 51,895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.defaultWriteObject (ObjectOutputStream.java : 413) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeHierarchy (ObjectOutputStream.java:1241) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeNewObject (ObjectOutputStream.java:1575) 05-10 20: 05: 51.895: E/AndroidRuntim e (30317): a java.io.ObjectOutputStream.writeObjectInternal (ObjectOutputStream.java:1847) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeObject (ObjectOutputStream. java: 1689) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:1653) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): a android.os.Parcel.writeSerializable (Parcel.java:1171) 05-10 20: 05: 51,895: E/AndroidRuntime (30317): ... altri 16
Quando ho commentare la riga nel metodo onSaveInstanceState
in modo daL'oggettoè non salvato, l'app scompare correttamente.
Qualsiasi aiuto con questo?
solo per interesse rendere il tuo UID '1L' invece di un numero negativo – Blundell
L'ho provato, ma senza fortuna. L'UID è un valore generato da Eclipse. – nhaarman