2011-05-26 7 views
14

Hola a todos Estoy tratando de salir del paso androide de intenciones entre 2 clases y me he dado cuenta de que hay 2 métodos a los intentos de paso,¿Cuál es la diferencia entre getIntent() y obtener la intención de savedInstanceState?

La primera es utilizando el método getIntent aquí:

Bundle extras = getIntent().getExtras(); 
mRowId = (extras != null) ? extras.getLong(DrugsDbAdapter.KEY_ROWID) : null; 

Y el segundo método se accede a la savedInstanceState:

mRowId = (savedInstanceState != null) savedInstanceState.getLong(DrugsDbAdapter.KEY_ROWID) : null; 

En ambos métodos que estoy tratando de acceder al RowId que luego pueda usar para fetchData. ¿Cuál es la diferencia entre ambos métodos? Cuál es mejor ?

+3

¿Obtiene su rowId en el segundo caso? Supongo que no, porque 'savedInstanceState' está vacío a menos que coloque allí algo en' onSaveInstanceState' – ernazm

+0

Para el registro, el segundo método no está obteniendo o "pasando intenciones". Ambos métodos obtienen un * Bundle * de pares clave-valor. Presumiblemente eso es lo que querías decir. 'getIntent(). getExtras()' te da algo análogo a los parámetros pasados ​​a un constructor. 'savedInstanceState' se parece más al estado de la actividad que se guardó en algún momento. – LarsH

Respuesta

12

El primer caso le da los extras del intento que inició esta actividad, mientras que el segundo se usa cuando se invoca el onCreate el 2 y más tiempo, por ejemplo, en la rotación del dispositivo. Ese paquete debe estar poblado en onSaveInstanceState.

+0

Ahora trato de entender esto: si el usuario gira la pantalla, ¿la actividad recibe nuevamente la misma intención que recibió cuando se creó por primera vez? – leoneboaventura

+0

getIntent() devolverá el mismo intento con los mismos extras. Pero el argumento Bundle de onSaveInstanceState es una cosa diferente. – ernazm

11

getIntent() se utiliza para decirle que Intent comenzó Activity. Se puede acceder desde cualquier lugar en el Activity. Tiene un Bundle, pero también tiene otros metadatos.

onSaveInstanceState(Bundle) le pasa un Bundle, para persistir variables de instancia en su aplicación hasta el próximo inicio. Este Bundle solo viene en onCreate() y onRestoreInstanceState(), y no tiene otros datos.

+0

Gracias Nicholas! – jamen

Cuestiones relacionadas