Android NotSerializableException aumenta para un objeto
En mi aplicación android uso un archivo para almacenar datos de licencia . Y yo uso Serialize objetos . Creo un objeto Dispositivo y leo los detalles del archivo en el objeto. La clase de dispositivo implementa Serializable .
public class MyDevice implements Serializable {}
Pero al inicio de la aplicación se deserializa y se almacena en un objeto MyDevice. Mi método deserializeObject es como a continuación.
- Cómo serializar / deserializar arrayList (Object)
- Android Realm - Objeto de Realm de paso usando Intent
- Serialización y subclases
- ¿Cómo puedo conservar un objeto complejo a través de Reiniciar actividades?
- Beneficio de usar Parcelable en lugar de serializar objetos
public MyDevice deserializeObject() { File SerialFile = new File(GeoTrackerPaths.FILE_PATH); MyDevice AndDeviceIn = new MyDevice(); if (SerialFile.exists()) { try { FileInputStream fileIn = new FileInputStream(GeoTrackerPaths.FILE_PATH); ObjectInputStream objInput = new ObjectInputStream(fileIn); AndDeviceIn = (MyDevice) objInput.readObject(); objInput.close(); fileIn.close(); } catch (Exception e) { Log.i("TAG", "Exception during deserialization:" + e.getMessage()); e.printStackTrace(); System.exit(0); } } return AndDeviceIn; }
Mi código de serialización
public void serializeObject(Context context, String phoneModel, String androidVersion, String executiveCode, String Key, String modelID, String tempKey, int noLogin, String expireDate, String Status) { try { MyDevice AndDeviceOut = new MyDevice(context, phoneModel, androidVersion, new Date(), executiveCode, Key, modelID, tempKey, noLogin, expireDate, Status); FileOutputStream fileOut = new FileOutputStream( GeoTrackerPaths.FILE_PATH); ObjectOutputStream objOutput = new ObjectOutputStream(fileOut); objOutput.writeObject(AndDeviceOut); objOutput.flush(); objOutput.close(); fileOut.close(); } catch (Exception e) { Log.i("TAG", "Exception during serialization:" + e.getMessage()); e.printStackTrace(); System.exit(0); } }
Y lo llamo como a continuación.
DeviceActivator activate=new DeviceActivator(); activate.serializeObject(Activation.this, phoneModel, androidVersion, txtExe, exeKey, modeilID, tempKey, noLogin, expireDate, Activation_Status);
Cuando ejecuto la aplicación, se generan las siguientes excepciones.
java.io.WriteAbortedException: Read an exception; java.io.NotSerializableException: com.geotracker.entity.MyDevice
¿Cómo puedo arreglar esto?
- Archivo de serialización en Android
- Orden Android Parcelable
- ¿Cómo puedo serializar un RealmObject a JSON en Realm for Java?
- Escribir XML en Android
- ¿Cuál es la mejor manera de diseñar un servidor GWT "independiente de la plataforma"?
- Gson serializar a LinkedTreeMap en lugar de mi Entidad
- Problemas de serialización de RealmList (Realm / Gson / Intent)
- BroadcastReceiver ClassNotFound Exception
No parece que el objeto Context
Android sea serializable. Puede resolver esto declarando el objeto Context
como transitorio, que puede leer aquí en la especificación JDK: Enlace . Básicamente marcar un campo como transitorio significa que no participará en la serialización
Así que declare su campo como esto en MyDevice
:
private transient Context context;
Y usted debe ser bueno para ir!