¿Qué es un "paquete" en una aplicación de Android?
¿ Qué es bundle
una aplicación de Android? ¿Cuándo usarlo?
Los paquetes se utilizan generalmente para pasar datos entre diversas actividades de Android. Depende de usted qué tipo de valores desea pasar, pero los paquetes pueden contener todo tipo de valores y pasarlos a la nueva actividad.
Puedes usarlo así:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
Puede obtener los valores pasados haciendo:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
Puedes encontrar más información en:
android-usando-paquete-para-compartir-variables y
Pasando-paquetes-de-actividades
Pasar datos entre actividades mediante el uso de objetos Bundle
y Intent
.
Tu primera creación de un Bundle
objeto.
Bundle b = new Bundle();
Luego, asocie los datos de cadena almacenados anystring
con la clave del paquete"myname"
b.putString("myname", anystring);
Ahora, crea un Intent
objeto.
Intent in = new Intent(getApplicationContext(), secondActivity.class);
Pasar el objeto del paquete b
a la intención
in.putExtras(b);
y comenzar la segunda actividad
startActivity(in);
En la segunda actividad, tenemos que acceder a los datos pasados de la primera actividad.
Intent in = getIntent();
Ahora necesitas obtener los datos del paquete.
Bundle b = in.getExtras();
Finalmente, obtenga el valor de la cadena de datos asociada con la clave denominada"myname"
String s = b.getString("myname");
Debo agregar que las actividades utilizan los paquetes para pasarse datos a sí mismas en el futuro.
Cuando la pantalla gira o cuando se inicia otra actividad, protected void onSaveInstanceState(Bundle outState)
se invoca el método y la actividad se destruye. Posteriormente, se crea otra instancia de la actividad y public void onCreate(Bundle savedInstanceState)
se llama. Cuando se crea la primera instancia de actividad, el paquete es nulo; y si el paquete no es nulo, la actividad continúa algún negocio iniciado por su predecesor.
Android guarda automáticamente el texto en los campos de texto, pero no guarda todo y, a veces, aparecen errores sutiles.
Sin embargo, el antipatrón más común es asumir que eso onCreate()
solo realiza la inicialización. Está mal, porque también debe restaurar el Estado.
Existe una opción para desactivar este comportamiento de "recrear actividad en rotación", pero no evitará errores relacionados con el reinicio, solo hará que sea más difícil mencionarlos.
Tenga en cuenta también que el único método cuya llamada está garantizada cuando la actividad va a ser destruida es onPause()
. (Consulte el gráfico del ciclo de vida de la actividad en los documentos).
Actualización: cuando se trata de Android, hay dos significados completamente ajenos al término "paquete". Uno se detalla en mi respuesta original a continuación. El otro es un paquete de aplicaciones . Este es un formato de archivo más nuevo (que termina en .aap) que contiene una aplicación de Android más algunos metadatos adicionales. Puedes cargar un archivo de paquete de aplicación en lugar de un archivo APK de aplicación para distribuir tu aplicación a través de Google Play. Los paquetes de aplicaciones tienen ciertas ventajas sobre los archivos .apk, pero es posible que no sean compatibles con otras tiendas de aplicaciones (como Amazon App Store). Estas ventajas se describen en el enlace de documentación incluido en mi respuesta original.
Respuesta original:
A Bundle
es muy parecido a un Map
objeto Java que asigna String
claves a valores. Se utiliza para pasar información entre actividades y otros componentes de la aplicación. El marco también lo utiliza para capturar y restaurar información de estado.
La razón por la que Android no utiliza Map
objetos antiguos para esto es que Map
es demasiado flexible; puede contener objetos (como, por ejemplo, flujos de E/S) que no se pueden serializar. La Bundle
API restringe los tipos de objetos que se pueden agregar a un paquete de tal manera que se garantiza que el contenido del paquete sea serializable. El marco de Android se basa en esta propiedad.
Le sugiero que lea la documentación sobre Fundamentos de aplicaciones . Esto explica, entre otras cosas, qué son los paquetes e intenciones y para qué se utilizan.