Java.io.NotSerializableException при записи объекта Serializable во внешнее хранилище?

друзья,

Я использую следующий код для записи объекта Serializable во внешнее хранилище.

Он бросает мне ошибку java.io.NotSerializableException даже мой объект сериализуем, какой-нибудь один мне подскажет, какую ошибку я делаю?

public class MyClass implements Serializable { // other veriable stuff here... public String title; public String startTime; public String endTime; public boolean classEnabled; public Context myContext; public MyClass(Context context,String title, String startTime, boolean enable){ this.title = title; this.startTime = startTime; this.classEnabled = enable; this.myContext = context; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); // exception throws here } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } } 

И вызов из класса активности для его сохранения

  MyClass m= new MyClass(this, "hello", "abc", true); boolean result =m.saveObject(m); 

Любая помощь будет оценена по достоинству.

Это не удается из-за поля Context в вашем классе. Контекстные объекты не являются сериализуемыми.

В документации Serializable – «При перемещении графика может возникнуть объект, который не поддерживает интерфейс Serializable. В этом случае будет выведено исключение NotSerializableException и будет идентифицировать класс несериализуемого объекта».

Вы можете полностью удалить поле «Контекст» или применить переходный атрибут к полю «Контекст», чтобы он не был сериализован.

 public class MyClass implements Serializable { ... public transient Context myContext; ... } 
Intereting Posts