¿Cuáles son los componentes básicos?
- Activity: Representa una pantalla con interfaz de usuario.
- Ejemplo: de la App de correo, la pantalla de redactar un correo
- Service: Se ejecuta en segundo plano, para realizar operaciones de larga duración o para realizar trabajo proveniente de procesos diferentes.
- Ejemplo: escuchar música sin tener la App en primer plano
- Content Provider: Permite a otras Apps consultar o modificar los datos almacenados en otra App.
- Ejemplo: la App de contactos integrada en Android permit que otras App accedan a estos, como Whatsup que puede agregar contactos o consultarlos de ahí
- Broadcast Receiver: Responde a mensajes difundidos a todo el sistema. Se puede notificar al usuario mediante la barra de notificaciones del sistema.
- Ejemplo: notificar a la App que la batería del dispositivo está baja; o recibir mensajes push y mostrar al usuario un mensaje de recibido en la barra de notificaciones
Todos hay que declararlos en el AndroidManifest.xml.
Activity
És algo enfocado a lo que el usuario puede hacer (de ahí que sea una “Actividad”). Por lo que interactúa con el usuario directamente. Es la ventana que llena a toda la aplicación, que contiene a la interfaz de usuario. Si cambiamos de ventana cambiaremos de Activity.
¿Se puede dividir en otras Activities más pequeñas contenidas en una Activity?
No, de eso se encargan los Fragments.
¿Cómo se le asocia un Layout?
Justo después de la llamada al padre del método onCreate() con setContentView(R.layout.mi_layout)
¿Cómo se abre una nueva Activity?
Con Context.startActivity(Intent miIntent) (Veremos esto en profundidad más adelante)
¿Cómo se declara en el AndroidManifest.xml?
Con el tag <activity>
¿Cómo se comporta una Activity cuando otra la sustituye?
Cuando una Activity se inicia, comienza en la cima de la pila de Activity. La Activity que está en la cima de la pila es la que se está ejecutando y mostrando al usuario. El resto de Activities quedarán por debajo en la pila. En el momento en que la Activity sobre la cima se desapile (deje de existir; por ejemplo al pulsar el botón de “atrás”), la que está por debajo será la que ahora ocupe la cima de la pila y por tanto la que estará al frente del usuario.
Ciclo de la activity:
Una Activity se caracteriza por tener un ciclo de vida. Se llama igual que el ciclo de vida de un ser vivo, ya que son semejantes: nace, crece, come, se reproduce y muere.
Supongamos que tenemos un en la mano un dispositivo con una aplicación iniciada. Por tanto habrá una Activity en pantalla, que podrá seguir varios caminos durante su vida, como:
- Arrancar la Activity: Pasará por Crear, Empezar y Continuar, para llegar a la ejecución normal.
- Usar de manera normal la Activity: estamos en la Activity propiamente, estamos en ejecución.
- Una ventana emergente se ha abierto: Pasará por Pausar.
- Cambiar a otra Activity o bloquear el móvil: Pasará por Pausar y Parar. (Nota aclaratoria: si se cambia a otra Activity pasa necesariamente por pausar y parar, no ha tenido que surgir una ventana emergente para pasar por pausar, si se cambia de Activity se pasa por ambos estados directamente; esto se da con otras acciones que pasen por varios estados).
- Apagar el móvil: Pasará por Pausar, Parar y Destruir.
El ciclo de vida completo que hemos visto en el gráfico anterior se traduce en el siguiente código (Todos los métodos son opcionales, aunque el onCreate() se recomienda usar siempre):
Activity con todos los métodos de su ciclo de vida
public class miActividad extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Nuestro código a ejecutar en este momento
}
@Override
public void onStart() {
super.onStart();
//Nuestro código a ejecutar en este momento
}
@Override
public void onRestart() {
super.onRestart();
//Nuestro código a ejecutar en este momento
}
@Override
public void onResume() {
super.onResume();
//Nuestro código a ejecutar en este momento
}
@Override
public void onPause() {
super.onPause();
//Nuestro código a ejecutar en este momento
}
@Override
public void onStop() {
super.onStop();
//Nuestro código a ejecutar en este momento
}
@Override
public void onDestroy() {
super.onDestroy();
//Nuestro código a ejecutar en este momento
}
}