2012-08-01 5 views
5

Considerando la arquitectura de Android y teniendo en cuenta el diseño operativo de Android con cosas como intenciones, vistas, actividad, proveedor de contenido, etc., ¿alguien puede explicarme qué tipo de "cosa" es un paquete o un paquete? La explicación escrita en el sitio web de Android me suena un poco escasa, me refiero a leer esto: "Un contenedor especial seguro para tipos, llamado Bundle, está disponible para mapas de clave/valor de valores heterogéneos". No sé nada más sobre Bundles, para mí pueden ser archivos XML, mapas hash y todas las demás variantes de "mapas de clave/valor".¿Qué significa Android con "todos los tipos de datos que se pueden parcelar" y cómo puedo usar esta información?

¿Qué es un paquete o un paquete y cuál es su diseño y lo que hacen?

Gracias.

Respuesta

10

ParcelableBundle y son paquetes de información que desea enviar con la intención!

Bundle: Si desea iniciar nueva activity puede enviar Bundle de información a la activity junto con el new Intent que creó:

// Bundle b is sent with new intent i 
Bundle b = new Bundle(); 
b.putString(key, value); 
b.putInt(key, value); 
Intent i = new Intent(...); 
i.putExtras(b); 
startActivity(i); 
// In the activity which started from the intent i, you can get the bundle b 
this.getIntent().getExtras(); 

Parcelable es una interface, si quieres pasar una object (su propia clase) con bundle o con intent, debe implementar esto interface:

class Example implements Parcelable{ 
     // some information here 
} 
// You can send with intent or bundle: 
b.putParcelable(key, value); 
i.putExtra(name, value); 

Más detalle de Google Android aquí: BundleParcelable

+0

No tiene que implementar Parcelable. Usted podría simplemente implementar Serializable. – Mark

+4

Recomendamos encarecidamente el uso de Serializable por motivos de rendimiento. Una implementación Parcelable es mucho, mucho más eficiente. – hackbod

+0

¡Estoy de acuerdo con @Hackbod! –

3

A Bundle implementa Parcelable. Una instancia de paquete se usa para almacenar pares de nombre/valor, donde el nombre es una cadena, y el valor es una clase que implementa Parcelable. Una clase que implemente Parcelable, se puede convertir a Parcel, que se puede serializar en un IBinder, que se utiliza para IPC.

El uso más común de esto es para pasar valores entre las actividades y servicios (extras intención)

4

Android ha definido una estructura de datos del IPC (Inter Process Communication) nuevo peso ligero denominado Paquete, donde se puede aplanar sus objetos en el flujo de bytes, lo mismo que el concepto de serialización de J2SDK.

Una definición breve de una Parcela de Android sería la de un contenedor de mensajes para una comunicación entre procesos (IPC) liviana y de alto rendimiento. En Android, un "proceso" es uno estándar de Linux, y un proceso normalmente no puede acceder a la memoria de otro proceso, por lo que con Parcels, el sistema Android descompone los objetos en primitivas que pueden ser ordenadas/eliminadas a través de los límites del proceso.

Pero las parcelas también se pueden utilizar en el mismo proceso, para pasar datos a través de diferentes componentes de una misma aplicación. Como ejemplo, una aplicación típica de Android tiene varias pantallas, llamadas "Actividades", y necesita comunicar datos o acciones de una Actividad a la siguiente. Para escribir un objeto que no se puede pasar, podemos implementar la interfaz Parcelable. Android proporciona un objeto Parcelable incorporado llamado Intento que se utiliza para pasar información de un componente a otro

El paquete es la forma que tiene android de pasar información entre los componentes de Android. Como dijiste es un diccionario donde podemos poner pares de valores clave. Cualquier cosa que se pueda poner en un paquete debe ser primitiva o Parcel.

Cuestiones relacionadas