You are on page 1of 12

En esta actividad vas a trabajar con los mtodos del ciclo de vida.

Para
ello debes descargarte el siguiente proyecto: CCC19.zip.
Tras completar esta actividad sers capaz de
1.

Identificar en qu orden se realiza la secuencia de llamadas a los


mtodos del ciclo de vida cuando se cambia de actividad.

2.

Identificar en qu orden se realiza la secuencia de llamadas a los


mtodos del ciclo de vida cuando se cierra una actividad al apretar al
botn back.

3.

Identificar en qu orden se realiza la secuencia de llamadas a los


mtodos del ciclo de vida cuando se gira el dispositivo.

ARRANCAR
(1/1 punto)
Arranca la app del proyecto CCC19 e indica qu mtodos del ciclo de
vida de la actividad se ejecutan mirando el LogCat (Para abrir la pestaa
de la vista LogCat debes seleccionar Window -> Show View -> Other ->
Abrir carpeta Android y seleccionar LogCat). A continuacin muestra la
secuencia arrastrando los elementos correspondientes sobre la imagen
de la vista LogCat:
Nota: filtra los mensajes de la vista LogCat para que solo aparezcan
aquellos con la etiqueta LifeCycleTest.

C
orrecto

EXPLICACIN

La respuesta correcta es created, started y resumed. Estos mtodos


se ejecutan en rpida sucesin. Cuando terminan la app pasa a estar
en primer plano.
OCULTAR RESPUESTA
Usted ha realizado 2 de 2 intentos de envo

BOTN BACK
(1/1 punto)
Pulsa el botn
de la vista LogCat para borrar todos los mensajes y a
continuacin, con la aplicacin en primer plano en el mvil o emulador,
pulsa el botn Atrs (botn Back) Qu mtodos se ejecutan? Sobre la
imagen siguiente de la vista LogCat muestra la secuencia de mtodos
ejecutados arrastrando los elementos correspondientes. Solo debes
poner los mtodos que son llamados tras apretar el botn back:
Nota: filtra los mensajes de la vista LogCat para que solo aparezcan
aquellos con la etiqueta LifeCycleTest.

C
orrecto

EXPLICACIN

La respuesta correcta es: paused, stopped y destroyed.


OCULTAR RESPUESTA
Usted ha realizado 1 de 2 intentos de envo

ESTADO DE LA ACTIVIDAD TRAS DAR A BACK


(1/1 punto)
En el caso de la pregunta anterior tras apretar el botn back Cul es el
estado en el que queda la actividad de nuestra app?
Parada

En pausa

Activa

Destruida Destruida - Correcto

EXPLICACIN

Cuando se aprieta al boton back la actividad se destruye


completamente.
OCULTAR RESPUESTA
Usted ha realizado 1 de 1 intentos de envo

CAMBIAR DE APP
(1/1 punto)
Ahora con la app en primer plano, pulsa el botn
de la vista LogCat
para borrar todos los mensajes y a continuacin, navega a otra app (sin
dar al botn back) Qu mtodos se ejecutan en este caso? Navega de
vuelta a la actividad. Qu mtodos se ejecutan en esta ocasin? Sobre
la imagen siguiente de la vista LogCat muestra toda la secuencia de
mtodos ejecutados arrastrando los elementos correspondientes.
Nota: filtra los mensajes de la vista LogCat para que solo aparezcan
aquellos con la etiqueta LifeCycleTest.

C
orrecto

EXPLICACIN

Cuando la app pasa a segundo plano la secuencia es: paused(),


onSaveInstanceState() y stopped(). Cuando la app vuelve al primer
plano la secuencia es restarted(), started() y resumed().
OCULTAR RESPUESTA
Usted ha realizado 2 de 2 intentos de envo

ESTADO DE LA ACTIVIDAD
(1/1 punto)
En el caso de la pregunta anterior cuando otra app pasa a estar en
primer plano Cul es el estado en el que queda la actividad de nuestra
app?
Parada Parada - Correcto

En pausa

Activa

Destruida

EXPLICACIN

Cuando se cambia de actividad o aplicacin no se destruye la


actividad, simplemente se pausa primero y a continuacin se para con
lo que queda en segundo plano. Aunque en situaciones de falta de
recursos puede ser destruida por el sistema.
OCULTAR RESPUESTA
Usted ha realizado 1 de 1 intentos de envo

INTENTS

(2/2 puntos)
Ahora aade al proyecto otra actividad con nombre OtraActivity y de tipo
"EmptyActivity" (La secuencia para crear la activiadad es botn derecho
sobre el proyecto->New->->Activity). Ahora vamos a aadir el cdigo
necesario para arrancar esta actividad desde MainActivity. Para ello crea
un botn en MainActivity y asciale un evento con el cdigo necesario
para arrancar OtraActivity.
Marca todas las opciones que permiten arrancar la actividad creada
(Prubalo en Android Studio):

Versin 1
Intent intent = new Intent(this, OtraActivity.class);
startActivity(intent);

Versin 2
startActivity(new Intent(this, OtraActivity.class));

Versin 3
Intent intent = new Intent("OtraActivity", OtraActivity.class);
startActivity(intent);

Versin 1

Versin 2

Versin 3

Versin 1, Versin 2, - Correcto


Ahora aade el siguiente cdigo al mtodo onPause() del ciclo de vida:
try {
Thread.sleep(10000);
} catch (Exception e) {
}

y contesta qu pasa al apretar el botn:


Da un error de ejecucin.

La ventana se queda bloqueada

durante 10 segundos antes de que aparezca OtraActivity. La ventana se


queda bloqueada durante 10 segundos antes de que aparezca

OtraActivity. - Correcto

En apariencia no cambia nada con respecto a

la anterior ejecucin.
EXPLICACIN

Las dos primeras opciones permiten arrancar la actividad OtraActivity.


La tercera opcin no es vlida. Para arrancar OtraActivity usando una
accin especificada como cadena debemos aadir un elemento intentfilter a la actividad en el fichero de manifiesto y darle un nombre de
accin a poder ser nico. Por ejemplo se puede crear el intent
como Intent intent = new
Intent("es.uam.eps.android.OtraActivity"); si se aade lo
siguiente al fichero de manifiesto:

<activity
android:name=".OtraActivity"
android:label="@string/title_activity_otra" >
<intent-filter>
<action
android:name="es.uam.eps.android.OtraActivity" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity >

La respuesta correcta a la segunda pregunta es "La ventana se queda


bloqueada durante 10 segundos antes de que aparezca OtraActivity".
Hasta que no acaba de ejecutarse el mtodo onPause() no empieza la
creacin de la siguiente actividad. Por ello, es importante no poner el
cdigo que requiera de mucha cpu en el mtodo onPause() y dejarlo
para onStop().
OCULTAR RESPUESTA
Usted ha realizado 2 de 2 intentos de envo

PASANDO DATOS CON INTENTS


(2/2 puntos)
Ahora vamos a pasar un dato (en este caso simplemente la cadena de
texto "Hola Otra Actividad") a la actividad OtraActivity desde la actividad
MainActivity.
Selecciona la forma correcta para enviar la cadena desde MainActivity
(primera pregunta) y la opcin correcta para recibir la cadena en el
mtodo onCreate() de OtraActivity (segunda pregunta). En los
fragmentos de cdigo de ms abajo se usan mtodos que no hemos
visto en la documentacin. No es necesario saber exactamente su
cometido. Debes probar cul es la combinacin correcta, para luego
entender su funcionamiento.
Prueba el cdigo antes de responder. Selecciona la opcin correcta para
enviar datos:

Versin 1
Intent intent = new Intent(this, OtraActivity.class);
intent.putExtra("CLAVE_INPUT1", "Hola Otra Actividad");
startActivity(intent);

Versin 2
Intent intent = new Intent(this, OtraActivity.class);
intent.setData("CLAVE_INPUT1", "Hola Otra Actividad");
startActivity(intent);

Versin 3
Intent intent = new Intent(this, OtraActivity.class);
intent.setData(Uri.parse("Hola Otra Actividad"));
startActivity(intent);

Versin 1 Versin 1 - Correcto

Versin 2

Versin 3

Marca la opcin para recibir los datos en el mtodo onCreate() de


OtraActivity y para a continuacin mostrarlos en un TextView con id
tvHola:

Versin 1
String cadena = savedInstanceState.getString("CLAVE_INPUT1");
((TextView)findViewById(R.id.tvHola)).setText(cadena);

Versin 2
Intent intent = getIntent();
String cadena = intent.toUri(0);
((TextView)findViewById(R.id.tvHola)).setText(cadena);

Versin 3
Intent intent = getIntent();
String cadena = intent.getExtras().getString("CLAVE_INPUT1");
((TextView)findViewById(R.id.tvHola)).setText(cadena);

Versin 1

Version 2

Versin 3 Versin 3 - Correcto

EXPLICACIN

Para enviar datos extra desde la actividad invocadora (MainActivity)


hay que usar el mtodo putExtra(), asociando una clave al dato en
cuestin. En esta caso le asociamos la clave "CLAVE_INPUT1".

Para recibir los datos en la actividad invocada (OtraActivity en este


caso) debemos recuperar el intent que se ha usado para llamar a la
actividad (llamando al mtodo getIntent()) y de ah recuperar el dato
en cuestin usando la clave, en este caso "CLAVE_INPUT1".
OCULTAR RESPUESTA
Usted ha realizado 1 de 1 intentos de envo

INTENTS PARA LLAMAR A ACTIVIDADES DEL SISTEMA


(2/2 puntos)
Ahora pon el siguiente cdigo cuando se pulse el botn de MainActivity:
Intent i = new Intent(Intent. ACTION_DIAL );
i.setData(Uri.parse( "tel://111111111" ));
startActivity(i);

Ejecuta la app e indica qu sucede al pulsar el botn


Se arranca el teclado del telfono, pero no llama. Se arranca el
teclado del telfono, pero no llama. - Correcto

Se arranca el teclado

del telfono y comienza a llamar al nmero especificado.

Da un error

de ejecucin al apretar el botn.


Ahora cambia la accin ACTION_DIAL por ACTION_CALL y vuelve a
ejecutar la app. No incluyas ningn permiso en el fichero de manifiesto.
Qu sucede al apretar el botn:
Se arranca el teclado del telfono, pero no llama.

Se arranca el

teclado del telfono y comienza a llamar al nmero especificado.


un error de ejecucin al apretar el botn. Da un error de ejecucin al
apretar el botn. - Correcto
EXPLICACIN

Da

En el caso de ACTION_DIAL, se abre el marcador del telfono con el


nmero premarcado pero no llama. La app no necesita ningn
permiso especial para ejecutar esta accin.

En el caso de ACTION_CALL, la aplicacin intenta llamar


directamaente al nmero indicado sin intervencin del usuario. Para
que la aplicacin pueda llamar hay que incluir el permiso
android.permission.CALL_PHONE en el fichero de manifiesto. En este
caso al intentar llamar sin ese permiso se produce un error en
ejecucin y la app se detiene.
OCULTAR RESPUESTA
Usted ha realizado 1 de 1 intentos de envo

You might also like