Tôi có một số Activity
trong đó tôi có Dữ liệu lớp riêng. Trong phương thức onSaveInstanceState
, tôi cố gắng lưu ví dụ này là Data
. Đây là toàn bộ Hoạt động của tôi:NotSerializableException khi nhấn nút 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;
}
}
Bây giờ khi tôi thay đổi hướng của thiết bị, đối tượng Data
được lưu và đọc như nó phải. Tuy nhiên, khi tôi bấm nút home, các ứng dụng bị treo như sau trong logcat:
05-10 20: 05: 51,895: E/AndroidRuntime (30.317): EXCEPTION Fatal: chính 05-10 20 : 05: 51.895: E/AndroidRuntime (30317): java.lang.RuntimeException: Parcelable gặp IOException viết đối tượng tuần tự (name = com.rigidbits.test.TestActivity $ Data) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.os.Parcel.writeSerializable (Parcel.java:1176) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.os.Parcel.writeValue (Bưu kiện .java: 1130) 05-10 20: 05: 51.895: E/AndroidR untime (30317): tại android.os.Parcel.writeMapInternal (Parcel.java:488) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.os.Bundle.writeToParcel (Bundle. java: 1552) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.os.Parcel.writeBundle (Parcel.java:502) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.app.ActivityManagerProxy.activityPaused (ActivityManagerNative.java:1615) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.app.ActivityThread.handlePauseActivity (ActivityThread.java : 2298) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.app.ActivityThread.access $ 1700 (ActivityThread.java:117) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.app.ActivityThread $ H.handleMessage (ActivityThread.java:938) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.os.Handler.dispatchMessage (Handler.java:99) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.os.Looper.loop (Looper.java:130) 05- 10 20: 05: 51.895: E/AndroidRuntime (30317): tại android.app.ActivityThread.main (ActivityThread.java:3683) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.lang.reflect.Method.invokeNative (Native Method) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.lang.reflect.Method.invoke (Method.java:507) 05- 10 20: 05: 51.895: E/AndroidRuntime (30317): tại com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:862) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại com .android.internal.os.ZygoteInit.main (ZygoteInit.java:620) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại dalvik.system.NativeStart.main (Phương pháp Gốc) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): Gây ra bởi: java.io.NotSerializableException: com.rigidbits.test.TestActivity 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeNewObject (ObjectOutputStream.java:1535) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream .writeObjectInternal (ObjectOutputStream.java:1847) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java: 1689) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:1653) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeFieldValues (ObjectOutputStream.java:1143) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.defaultWriteObject (ObjectOutputStream.java : 413) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeHierarchy (ObjectOutputStream.java:1241) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeNewObject (ObjectOutputStream.java:1575) 05-10 20: 05: 51.895: E/AndroidRuntim e (30317): tại java.io.ObjectOutputStream.writeObjectInternal (ObjectOutputStream.java:1847) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeObject (ObjectOutputStream. java: 1689) 05-10 20: 05: 51.895: E/AndroidRuntime (30317): tại java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:1653) 05-10 20: 05: 51.895: E/AndroidRuntime (30.317): tại android.os.Parcel.writeSerializable (Parcel.java:1171) 05-10 20: 05: 51,895: E/AndroidRuntime (30.317): ... 16 hơn
Khi tôi nhận xét dòng trong phương thức onSaveInstanceState
đểĐối tượnglà không được lưu, ứng dụng sẽ biến mất chính xác.
Bất kỳ trợ giúp nào về điều này?
chỉ vì lợi ích làm cho UID của bạn '1L' thay vì số âm – Blundell
Tôi đã thử nó, nhưng không có may mắn. UID là một giá trị được tạo ra bởi Eclipse. – nhaarman