¿Qué es un "paquete" en una aplicación de Android?

Resuelto Tushar asked hace 54 años • 12 respuestas

¿ Qué es bundleuna aplicación de Android? ¿Cuándo usarlo?

Tushar avatar Jan 01 '70 08:01 Tushar
Aceptado

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

samtherock avatar Feb 15 '2011 05:02 samtherock

Pasar datos entre actividades mediante el uso de objetos Bundley Intent.


Tu primera creación de un Bundleobjeto.

Bundle b = new Bundle();

Luego, asocie los datos de cadena almacenados anystringcon la clave del paquete"myname"

b.putString("myname", anystring);

Ahora, crea un Intentobjeto.

Intent in = new Intent(getApplicationContext(), secondActivity.class);

Pasar el objeto del paquete ba 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");
mahalakshmi avatar Aug 12 '2012 17:08 mahalakshmi

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).

18446744073709551615 avatar May 31 '2012 12:05 18446744073709551615

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 Bundlees muy parecido a un Mapobjeto Java que asigna Stringclaves 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 Mapobjetos antiguos para esto es que Mapes demasiado flexible; puede contener objetos (como, por ejemplo, flujos de E/S) que no se pueden serializar. La BundleAPI 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.

Ted Hopp avatar Feb 15 '2011 05:02 Ted Hopp