sirve - ¿Cuál es la diferencia entre Parcelable y Serialización utilizada en Android
pasar objeto entre actividades android (5)
si debería usar una técnica de serialización o parcelable para enviar datos de una actividad a otra.
Si está enviando datos / objetos de tipo no primitivo a otra actividad a través del intent
, debe Serialize
o implementar Parcelable
para ese objeto. La técnica preferida es Parcelable
ya que no afecta el rendimiento.
¿Es obligatorio usar uno de ellos para enviar datos de uno a otro? / ¿Cuándo debería usarlos?
Solo es obligatorio / usado para enviar objetos de datos de tipo no primitivo.
y la diferencia exacta entre ellos y el rendimiento de ambos en aspectos de Java.
La serialización tiene un impacto en el rendimiento. Para más detalles, consulte este enlace Android Parcelable y Serializable
Quiero saber exactamente,
- ¿Debería utilizar la técnica de
parcelable
oserialization
para enviar datos de una actividad a otra? - ¿Es obligatorio usar uno de ellos para enviar datos de uno a otro?
- ¿Cuándo debería usarlos?
- y la diferencia exacta entre ellos y el rendimiento de ambos en aspectos de Java.
Gracias por adelantado.
public class GetSetClass implements Serializable {
private int dt = 10;
/** pass any object, drwabale */
public int getDt() {
return dt;
}
public void setDt(int dt) {
this.dt = dt;
}
}
Estos conceptos están relacionados con Inter Process Communication (IPC).
Al enviar datos entre dos aplicaciones, debemos asegurarnos de que ambas aplicaciones comprendan el formato de los datos que se envían.
Especialmente cuando está enviando valores de tipo de datos no primitivos como clases y objetos entre dos aplicaciones, debemos convertirlos en un formato comprensible del sistema operativo. OS entiende solo los tipos primitivos (ints, chars, etc.). El motivo de la conversión es que tenemos un canal de comunicación de sistema operativo para transmitir los datos.
Este proceso de conversión de tipos no primitivos a primitivos y el envío a otra aplicación a través de un canal de comunicación se denomina Serialización. El proceso inverso se llama De serialización.
En Java, IPC depende en gran medida de Serializables para la serialización. Pero la serialización está diseñada teniendo en cuenta las aplicaciones de escritorio. Cuando realice IPC en aplicaciones móviles, debemos asegurarnos de que el proceso de IPC no sea demasiado pesado.
En términos simples, la serialización es un concepto pesado para IPC. Por lo tanto, en lugar de la serialización, Android optó por Binders para lograr una comunicación ligera entre procesos. Binders internamente depende en gran medida de las parcelas, para hacer el IPC. Los paquetes son serializables livianos. Se prefiere usar parcelas para ordenar objetos en flujos de bytes.
Nota: Binder IPC depende en gran medida del concepto de memoria compartida para asegurarse de que no haya mucha duplicación de datos mientras se comparte entre las aplicaciones.
Obtuve una muy buena explicación de la diferencia entre Parcelable y Serialización.
Para comenzar con su pregunta, aunque ha pasado mucho tiempo, puede ayudar a otros:
- ¿Debería utilizar la técnica de parcelación o serialización para enviar datos de una actividad a otra?
Respuesta: Parcelable es la mejor opción (por qué se explica más adelante).
- ¿Es obligatorio usar uno de ellos para enviar datos de uno a otro?
Resp .: Sí, como el envío de datos (objetos) de uno a otro requiere que se escriban y recuperen secuencias de bytes, y esto se puede hacer mediante parcelación o serialización.
- ¿Cuándo debería usarlos?
Resp .: Esta parte ya respondiste, es decir, pasa datos de una actividad a otra.
- y la diferencia exacta entre ellos y el rendimiento de ambos en aspectos de Java.
Resp .: 1. Parcelable está bien documentado en el SDK de Android; la serialización, por otro lado, está disponible en Java.
En Parcelable, los desarrolladores escriben código personalizado para calcular y desasignar, por lo que crea menos objetos basura en comparación con la serialización. El rendimiento de Parcelable sobre Serialización mejora drásticamente (alrededor de dos veces más rápido), debido a esta implementación personalizada.
La serialización es una interfaz de marcador, lo que implica que el usuario no puede ordenar los datos de acuerdo con sus requisitos. En la serialización, se realiza una operación de cálculo de referencias en una máquina virtual Java (JVM) utilizando la API de reflejo de Java. Esto ayuda a identificar el miembro y el comportamiento de los objetos Java, pero también termina creando muchos objetos basura. Debido a esto, el proceso de serialización es lento en comparación con Parcelable.
Respuesta tomada de: este enlace
Ver también: serialización explicada
tanto el parcelamiento como la serialización son formas de ordenar y desmantelar los datos. en android esto se usa para pasar tipos de datos no primitivos entre componentes y procesos. en general, Android permite objetos serializables o parcelables, por lo que puede elegir su método. la excepción a eso es con las interfaces AIDL. los objetos deben ser parcelables para ser pasados / devueltos.
la serialización usa la reflexión para ordenar automáticamente y desmarcar datos. en la mayoría de los casos, la implementación de la interfaz de marcador es suficiente para que funcione. con el parcelamiento, debe escribir el código para ordenar y desempaquetar los datos usted mismo.
y por lo tanto, es por eso que el parcelamiento es más rápido. el objeto no necesita ser reflejado para descubrir los campos. es el reflejo que lo hace lento.
la serialización también tiene control de versiones integrado ... si intenta desasignar a una versión diferente de la clase del objeto que se organizó, el proceso fallará de manera predecible. con el parcelamiento, puede hacer lo mismo, pero debe implementarlo usted mismo agregando un "campo de versión a su objeto" y un código que verifique la versión cuando se desmarque.
Dicho esto, normalmente utilizo la serialización. con objetos simples no notarás la diferencia. siempre puede cambiar para usar el parcelamiento más adelante en el desarrollo si descubre problemas de rendimiento.
Java Serializable : - Serializable viene de Java estándar y es mucho más fácil de implementar. Todo lo que necesita hacer es implementar la interfaz Serializable y agregar dos métodos.
El problema con Serializable es que trata de manejar adecuadamente todo bajo el sol y utiliza una gran cantidad de reflexión para determinar los tipos que se están serializando. Entonces se convierte en un Objeto gordo.
Androids Parcelable : - El archivo de Android Inter-Process Communication (AIPC) le dice a Android cómo debe reunir y desarticular su objeto. Es menos genérico y no utiliza el reflejo, por lo que debería tener mucho menos gastos generales y ser mucho más rápido.
Lea más en http://www.3pillarglobal.com/blog/parcelable-vs-java-serialization-android-app-development