Android: guarda datos parcelables en un archivo
Solía usar objetos Serializable para guardarlos en filesytem y leerlos para hacer lo que quiera. Pero la serialización es lenta cuando tienes que pasar datos entre actividades, así que leo que es recomendable usar Parcelable. Entonces lo hice y sí es más rápido! Pero ahora, tengo un pequeño problema. Dado que Parcelable está optimizado para IPC, entonces no son serializables y no se pueden guardar en un archivo. Así que quiero saber si es posible hacerlo.
Además, si decido implementar la interfaz Parcelable y Serializable para mi clase, pero sólo uso el Parcelable para pasar datos entre mis actividades, podría guardar la clase en un archivo. Pero supongo que ya que uso serializable (sólo para guardar, no para pasar los datos), esto no es una buena idea zumbido?
- ¿Cómo poner un runnable en paquete?
- Objeto serializable en la intención que devuelve como String
- Cómo pasar un socket Bluetooth a otra actividad mediante la interfaz de la aplicación
- Fragmento se bloquea con el paquete: no se puede marshal error de valor cuando onPause método se llama
- Android: Cualquier acceso directo a Serializable de Parcelable sin usar marshall ()?
Pensé también en usar la biblioteca de Gson, para serializar datos de la clase, y guardar el JSON en un archivo, y reutilizar Gson para deserializar JSON para obtener mi objeto Parcelable. ¿Parece ser una buena idea? ¿Qué pasa con el rendimiento?
¡Gracias a todos por sus respuestas!
J.
- Cómo pasar ArrayList <CustomeObject> de una actividad a otra?
- Cómo detener ProGuard de eliminar la interfaz Serializable de una clase
- Se produce ClassCastException en onRestoreInstanceState
- Android: problema con objeto Serializable puesto en intención
- Casting objetos a subclases de una superclase Parcelable?
- Utilizar parcelable para almacenar el elemento como sharedferencias?
- ¿Cuál es la diferencia entre Parcelable y Serialization utilizado en android
- ¿Está utilizando Serializable en Android mal?
Simplemente haga context.getFilesDir () y utilice java.io.ObjectInputStream y java.io.ObjectOutputStream.
Además, con respecto a "Parcelable no ahora serializable". Esto no tiene mucho sentido desde Parcelable en una interfaz, no una clase que usted extiende.
Asi que,
class MyClass implements Parcelable, Serializable { }
Debería funcionar bien. Una vez que lea y escriba el objeto en el sistema de archivos, la interfaz Parcelable seguirá funcionando. Es sólo una interfaz.
Tengo que admitir que no lo he probado, pero es lo que escribí hoy y estaré escribiendo la prueba de la unidad mañana.
Espero que esto ayude.
Aquí hay otro enfoque si, como usted dice, hay un conflicto entre las interfaces Parcelable y Serializable. (Otra vez, eso no tiene sentido, pero confiaré en ti hasta que termine mis pruebas de unidad mañana) …
Piensa sobre esto:
Parcel p = Parcel.obtain(); p.writeValue(asset); p.setDataPosition(0); byte [] b = p.marshall(); p.recycle();
OOPS, acaba de leer el javaDoc para marshall () y dice que NO ALMACEN A DISCO. También dice: "Usar serialización estándar para almacenar en disco" (paráfrasis).
Por lo tanto, mi primera respuesta debe hacerlo por usted.
¿Has intentado usar las preferencias compartidas? Si necesita almacenar valores clave. Además, será un XML.
- Retención de la orientación de la imagen después de la compresión
- ¿Cómo leer las SharedPreferences de otra aplicación (el mismo ID de usuario)?