getbundle - como usar bundle android
Ventajas de usar Bundle en lugar de IntenciĆ³n directa putExtra() en Android (4)
Hace poco (si hay alguna diferencia). El código que utiliza un paquete adicional es un poco más pesado (no hará ninguna diferencia en ninguna aplicación práctica) y es un poco más fácil de administrar, ya que es más general.
Si un día decide que, antes de enviar información dentro de un intento, desea serializar los datos en la base de datos, será un poco más limpio tener un paquete que pueda serializar, agregar a un intento y luego alimentar a un paquete pendiente: todo con un objeto
[actualizar]
Una aclaración (debido a algunas otras respuestas).
Extras es un paquete adicional que puede llevar cada intención (pero no tiene por qué), por lo que no hay alternativa entre usar un paquete o no usarlo. Usted está usando un paquete de cualquier manera.
La primera vez que utiliza putExtra
, se inicializa un paquete mExtras
dentro de Intent y se le delegan todos los siguientes putExtra. El paquete en sí no es accesible para usted (esto es por diseño, para evitar cierto tipo de errores).
putExtras no coloca tu paquete dentro de Intent. En cambio, lo copia al paquete de intención actual (o crea uno, como con putExtra
). Es por eso que es un poco más pesado (tiene dos paquetes en lugar de uno y paga el precio de la copia).
El quid es que si usas putExtras
, aún no puedes acceder al paquete real dentro del intento. PERO, tienes una copia para cualquier otra cosa que quieras hacer con ella. Como mantenerse cerca de copiar en otro intento (si envía muchos intentos similares).
En mi aplicación de Android siempre uso la función putExtra()
directa de la clase Intent
para pasar cualquier cantidad de valor a la nueva Activity
.
Me gusta esto:
Intent i = new Intent(this, MyActivity.class);
i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");
startActivity(i);
Conozco Bundle
en Android y he visto personas que usan Bundle
para pasar valores a la nueva Activity
.
Me gusta esto:
Intent intent = new Intent(this, MyActivity.class);
Bundle extras = new Bundle();
extras.putString("EXTRA_USERNAME","my_username");
extras.putString("EXTRA_PASSWORD","my_password");
intent.putExtras(extras);
startActivity(intent);
Aquí tengo 2 dudas.
¿Por qué debería usar Bundle
si puedo pasar los valores a la nueva Activity
poniéndolo directamente en Intent
?
¿Cuáles son las ventajas de usar Bundle
lugar de Intent
directa putExtra()
?
Los paquetes son geniales porque puede aislar su creación / lectura más fácilmente, por lo tanto, separando el código que maneja los paquetes del código de la IU.
En la mayoría de los casos, eso es inútil, ya que querrás transmitir la menor cantidad posible de datos (por lo general, solo un par de cadenas, una identificación ...)
Ventaja adicional : una vez que los datos se incluyen en un paquete, puede enviar los mismos datos a través de múltiples intentos. (Solo en el caso, se deben enviar múltiples intentos).