Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sesión 3:
Programación de actividades
I. OBJETIVOS
• Actividad
• Creación de una actividad
• Declaración de una actividad
• Ciclo de vida
• Inicio de una actividad
ACTIVIDAD
Una actividad es un componente de aplicación que proporciona una pantalla con la cual los
usuarios pueden interactuar con la finalidad de realizar alguna acción (digitar un número de
teléfono, abrir una imagen, etc.). Cada actividad tiene una ventana en la que se dibuja la interfaz
de usuario.
Una aplicación consta generalmente de varias actividades. Típicamente, una actividad en una
aplicación es especificado como la actividad principal, la cual es presentado al usuario cuando se
lanza la aplicación por vez primera. Cada actividad puede luego iniciar otra actividad con el fin de
realizar diferentes acciones. Cada vez que una nueva actividad se inicia, la actividad previa es
detenida, pero el sistema preserva la actividad en una pila. Cuando una nueva actividad se inicia,
se inserta en la pila y se centra en el usuario.
Cuando una actividad es detenida a causa del inicio de una nueva actividad, es notificado de este
cambio en el estado a través de los métodos de llamada del ciclo de vida de la actividad. Existen
varios métodos de llamada que una actividad puede recibir, debido a cambios en el estado, y cada
llamada proporciona la oportunidad de realizar un trabajo específico apropiado para el cambio de
estado.
Para crear una actividad se debe crear una subclase de AppCompatActivity. En esta subclase será
necesario implementar métodos de llamada para que las realice el sistema cuando la actividad
pase entre varios estados de su ciclo de vida. Los dos métodos de llamada más importantes son:
onCreate():Este método es llamado cuando se crea una actividad. Se deben inicializar los
componentes esenciales de la actividad. Para definir el diseño para la interfaz de usuario de la
actividad debe invocarse a setContentView().
onPause(): El sistema llama a este método cuando el usuario deja la actividad (aunque no siempre
significa que la actividad sea destruida). Es usualmente donde se debería abordar cualquier
cambio que debería persistir más allá de la actual sesión del usuario.
Una actividad debe ser declarada en el archivo manifest.xml con el fin de que sea accesible al
sistema
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest
Hay varios atributos que pueden ser especificados para la actividad tales como la etiqueta, el icono
para la actividad, o un tema para el estilo de la interfaz gráfica de la actividad. El atributo
android:name es el único atributo requerido para especificar el nombre de la clase de la actividad.
Una vez que se publica la aplicación, este nombre no debe ser cambiado
CICLO DE VIDA
La gestión del ciclo de vida de las actividades para implementar los métodos de llamada es de
importancia para desarrollar aplicaciones robustas y flexibles. El ciclo de vida de una actividad está
directamente relacionado con la actuación de otras actividades. Una actividad comprende
inicialmente tres estados:
• Reanudado: La actividad se encuentra en primer plano y tienen el foco del usuario
• Pausado: Otra actividad se encuentra en primer plano y tiene el foco, pero esta es aún
visible. Esto es que otra actividad se encuentra visiblemente sobre ella o no cubre la
pantalla completamente. La actividad se encuentra viva, pero puede ser destruida por el
sistema en situaciones de baja batería.
• Detenido: la actividad es totalmente opacada por otra actividad, encontrándose en segundo
plano. Una actividad detenida es una actividad viva, sin embargo, no es visible al usuario y
puede ser aniquilada por el sistema en casos de insuficiencia de memoria
La transición de un estado a otro se notifica a través de varios métodos de llamada, los cuales
pueden ser sobre-escritos para realizar un trabajo apropiado según el cambio de estado de la
actividad. A continuación, se muestra la codificación de los diferentes métodos del ciclo de vida de
una actividad.
La figura de abajo muestra los bucles y los caminos que una actividad puede tomar entre estados.
Los rectángulos representan los métodos de llamada que se pueden implementar para realizar
operaciones cuando la actividad cambia entre estados.
Se puede iniciar otra actividad llamando al método startActivity() pasando un Intent que describe
la actividad que se desea realizar. El intent especifica la actividad exacta que se desea iniciar o
describe el tipo de acción que se desea realizar (el sistema selecciona la actividad apropiada, el
cual puede ser incluso una aplicación diferente). Un intent puede también llevar pequeñas
cantidades de datos que pueden ser usadas por la actividad que es iniciada.
startActivity(new Intent("com.example.SegundaActivity"));
1. Crea un nuevo proyecto Empty Activity, llene los datos que les solicita.
2. Para hacer el seguimiento de los estados de una actividad se va a ingresar una serie de
mensajes utilizando la herramienta de depuración llamada Dalvik Debug Monitor Server
(DDMS) el cual proporciona entre otros servicios, la posibilidad de mostrar los mensajes que se
desean imprimir, según se haya especificado de acuerdo con los estados de las actividades,
usando la clase Log. Para ello, copie en el archivo MainActivity.java el código encuadrado.
import android.os.Bundle;
import android.util.Log;
4. Cuando la actividad se carga por primera vez se debería ver algo muy similar a la imagen en la
pestaña Debug.
5. Si se hace click en el botón Back en el emulador Android, se puede observar los otros estados
en el debug.
1. Haga click derecho sobre el paquete donde se encuentra el código fuente y elija New / Activity
/ Empty Activity
…
<activity
android:label="Segunda Actividad"
android:name=".SegundaActividad"
android:exported="false">
<intent-filter>
<action android:name="com.example.SegundaActividad" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Esta es la Segunda Actividad!"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
7. Ejecute su actividad.
ProgressBar
import android.util.Log;
import android.widget.ProgressBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.segundaactivity);
nProgressBar = (ProgressBar)findViewById(R.id.progressBar);
final Thread timerThread = new Thread(){
@Override
public void run(){
nbActivo = true;
try{
int espera1 = 0;
while(nbActivo && (espera1 < TIMER_RUNTIME)){
sleep(200);
if(nbActivo){
espera1 += 200;
actualizarProgress(espera1);
}
}
} catch(InterruptedException e){
} finally{
onContinuar();
}
}
};
timerThread.start();
}
V. Ejercicios
VI. Cuestionario
1. ¿Explique cómo se gestiona la pila de actividades al pasar de una de ellas hacia otra?
2. ¿Es posible pasar de un estado a otro sin mantener el flujo del ciclo de vida de la actividad
mostrado en el gráfico?
1. Luján Castillo, José Dimas, Android Studio. Aprende a desarrollar aplicaciones, AlfaOmega,
2018
2. https://developer.android.com/guide/components/activities/activity-lifecycle