Guardar datos de matriz
tengo problema para salvar a mi arraylist. Quiero guardar mi arraylist cuando la aplicación destruye o cambia la intención o cambia la orientación:
public class AuditContainer implements Serializable { private Paint mPaint; private Path mPath; private int x,y; private String text; boolean is_text;
Primero intenté ahorrar en archivo, pero la clase de la pintura no es clase de Serializable. En segundo lugar intento con onSaveInstanceState (Bundle outState) / onRestoreInstanceState (Bundle savedInstanceState) pero no pude guardar Arraylist y tercero intento con la base de datos pero no hay ningún tipo de Paint, Path … Si alguien tiene sugerencia para mí, voy a ser muy feliz.
- Error de archivo no encontrado después de seleccionar un archivo en android
- Android NDK: load_library: no se puede localizar srand
- ¿Qué debo hacer con el archivo pom.xml?
- Android Instrumentación de Pruebas - UI Thread Issues
- SoftReference obtiene recolección de basura demasiado temprano
- Mensaje "_Problem Loading Widget"
- ¿Cuál es la mejor manera de determinar que mi aplicación nunca se instaló en un dispositivo y si el usuario está reinstalando?
- Deep linking en Android no inicia la aplicación y redirige a Android market market
- Mi aplicación se bloquea, ¿cómo implementar Threads en ella?
- Conexión TCP de Android (varios clientes)
- Transmisión de datos desde JavaScript a Android WebView
- La forma más rápida de encontrar si int array contiene un número
- Forma correcta de usar la anotación @NonNull en Android Studio
Tienes tres opciones:
A. Modifique la Paint
para implementar Serializable
.
B. Marque el campo como no para la serialización usando la palabra clave transient
:
private transient Paint mPaint;
C. Escriba su propio contenedor de Serializable para Paint que almacene copias Serializable de los campos clave y delega la funcionalidad a un Paint transitorio privado y puede reinicializar la instancia de Paint después de la deserialización.
Si Paint
y Path
son clases bajo tu control, hazlas también serializables. Si no son completamente relevantes o puedes determinarlas externamente cuando lees el objeto, entonces puedes hacer que los campos sean transient
.
Para omitir la serialización de campos no serializables, márquelos como transient
:
public class AuditContainer implements Serializable { private transient Paint mPaint; private transient Path mPath; private int x,y; private String text; boolean is_text; }
Probablemente hay datos sobre los Paint mPaint
y Path mPath
que todavía desea almacenar en serialización y recuperar en procesos de deserialización, para ello debe implementar los métodos writeObject
y readObject
:
private void writeObject(ObjectOutputStream out) throws IOException { //default serialization of the object out.defaultWriteObject(); //start manual serialization out.writeInt(mPaint.getX()); out.writeInt(mPaint.getY()); out.writeObject(mPath.getPath()); } private void readObject(ObjectInputStream in) throws IOException { //default serialization of the object in.defaultReadObject(); //start manual deserialization int x = in.readInt(); int y = in.readInt(); String path = (String)in.readObject(); //initialize your fields... //note: this code maybe won't work, you should adapt it to your needs mPaint = new Paint(x, y); mPath = new Path(path); }
Puede utilizar terceros como XStream.It permite utilizar para guardar el objeto en xml, y no es necesario que el objeto debe ser serializable. Tuvimos similair problema en nuestra empresa (clase que no se puede modificar y debe ser guardado) y XStream nos ayudó. Por favor, consulte: http://x-stream.github.io/tutorial.html para un sencillo tutorial.
- Android obtiene tiempo en este formato `aaaa-mm-dd hh: mm: ss`
- No se puede iniciar el proyecto cocos2dx ios en android