«

»

nov 02 2011

Fundamentos de una Aplicación Android

A la hora de entender los fundamentos básicos de una aplicación en Android debemos de tener claro una serie de conceptos, vamos a explicaros los cuatro tipos de componentes a utilizar en nuestras aplicaciones en función del objetivo que desempeñan así como el ciclo de vida y distintos estados de las aplicaciones en Android:

 

 

  • Activity: Las actividades son el componente mas requerido en una aplicación Android. Se utiliza típicamente para representar una pantalla individual en nuestro terminal. Por ejemplo, en un juego básico, tendríamos un splash (pantalla previa al menú), un menú, y el juego propiamente dicho, cada una de estas pantallas podría ser un Activity. Cuando una actividad se abre, la anterior se pone en pausa y sólo se ejecutará de nuevo cuando se requiera.
  • Service: Un servicio no tiene una interfaz gráfica, suele ejecutarse en segundo plano, por ejemplo para obtener el estado de un sensor (acelerómetro por ejemplo) cada cierto tiempo para poder mostrarlo en un widget. Mientras el usuario puede interactuar con el resto sin notar la presencia de este componente.
  • Broadcast receivers: Este componente se usa para recibir y reaccionar ante ciertas notificaciones broadcast. No tienen interfaz gráfica y pueden reaccionar a eventos como llamadas, cambio de hora, batería.. Todos los receivers heredan de la clase base BroadcastReceiver.
  • Intent: Es el componente esencial que utiliza la plataforma Android para moverse de una pantalla a otra.

 

A su vez todo software tiene un ciclo de vida característico, y android tiene uno muy particular. Cuando ejecutamos una aplicación es el sistema quien asigna la memoria necesaria. Una característica muy particular es que el tiempo de vida de un proceso no es controlado por la aplicación, sino que es el sistema quien decide basándose en el uso y la capacidad del sistema.

 

Los controles dentro de un Activity son:
 

  • onCreate() Se invoca al abrir la actividad por primera vez. Aquí se suelen cargar las vistas y los datos necesarios. Siempre se abre después el onStart().
  • onRestart() Se invoca al parar una actividad, antes de volver a invocarla. viene siempre después del onStart().
  • onStart() Se invoca cuando la actividad está siendo visible por el usuario, se pasará al onResume() si es visible o al onStop() si es invisible.
  • onResume() Se invoca cuando empieza a interactuar el usuario. Después de un onResume() siempre viene un onPause().
  • onPause() Se invoca al iniciar una nueva actividad, para parar todo lo que esté haciendo.
  • onStop() Aqui la actividad ya no es visible para el usuario, hay otra actividad en primer plano. puede invocar el onRestart() al volver al primer plano o al onDestroy() si se hace invisible al usuario.
  • onDestroy() Con ésta invocación se destruye la actividad.

 
Quedan resumidos en esta imagen, que nos facilita su comprensión mas general:
 

 

Android prioriza los procesos bajo una jerarquía asignando una importancia a cada proceso dentro del sistema. Siguiendo esta jerarquía determinada, existen diferentes procesos:

 

  • Foreground Process: Es un proceso en primer plano, el cual posee un Activity en la plantalla , y con el que el usuario esta interactuando (onResume() ha sido llamado) o un IntenReceiver esta en ejecución. Éste proceso será eliminado como último recurso en el caso de que el sistema necesitara memoria.
  • Visible Process: Este proceso posee un Activity pero no está e primer plano (onPause() ha sido llamado). Por ejemplo es muy tipico el caso de un dialogo para interactuar con el usuario. Este proceso no se eliminará a no ser que sea necesario para mantener los procesos en primer plano.
  • Service Process: Es un proceso que posee un service iniciado con startService(). Estos procesos no son visibles para el usuario y suelen ser importantes (conexiones, música, vídeo).
  • Background Process: Este es un proceso que posee un Activity no visible actualmente para el usuario (onStop() ha sido invocado). El último proceso de éste tipo visto por el usuario será último en ser eliminado al requerir memoria.
  • Empty Process: Este proceso no aloja ningún compononente, sólo es necesario para reservar memoria para una ejecución de una aplicación. Suelen eliminarse con frecuencia.

 

Para completar esta información os recomiendo leeros el Application Fundamentals .
 
Espero que os haya sido útil, o al menos interesante. Hasta la próxima!
 

Acerca del autor

Breogangf

Desarrollador de Android, estudiante de Teleco, fundador @cogiloo, co-fundador @redinput , redactor @androcode.

  • http://androjuegos.com/author/s3rch/ S3rCh

    Muy buen articulo. La verdad es que me va de perlas ahora que estoy empezando (o intentando empezar) a hacer mis primeros pasitos programando en android :D