[Imagen obtenida de: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGS2_Ipn4v6AxJFk9IYuu57E8B0HZwUp4-qr-AyHRFf27KFIFmQ_ZhWgYBqEYJt4HUYVN6meJMx1Ckt8wqYCCy4AUzHwX_4W4n81F-TNq-2JxTbUryOKuqJdBcZl2YRitjhjRygPRlq8Y/s1600/Android%2540home.jpg]
Actividades en Android
Las actividades en android según mi punto de vista son una forma de estructurar todo lo que pasa en una pantalla en la aplicación, se podría decir que son estados de la aplicación. Normalmente toda aplicación esta compuesta de un grupo de actividades estrechamente relacionadas unas con otras.
El ciclo de vida de una actividad
Dentro de Android las actividades son automáticamente administradas por la maquina virtual. Existen tres estados en los cuales puede estar una aplicación, en ejecución, pausada y detenida. Estos tres estados se pueden manejar instanciando la clase actividad para crear un hijo donde se definan las clases:
onCreate(): Este método es llamado cuando se crea la actividad podría decirse que es el constructor pues es el primer método que podemos definir al cúal se llama cuando se crea la actividad
onResume(): Este método se llama cuando la actividad empieza a interactuar con el usuario
onRestart(): Este método es llamado después de haber sida la aplicación.
onStart(): Esté método es llamado cuando la actividad se vuelve visible para el usuario, despues se puede llamar "onResume()" si vuelve al frente o "onStop()" ssi es escondida.
onPause(): Este método es llamado cuando el control se va a pasar a otra actividad, normalmente sirve para guardar estados que queremos que sean persistentes, el objetivo aquí es que las instrucciones sean pocas para que se ejecute bastante rapido y tome el control la siguiente actividad.
onStop(): Este se llama cuando la actividad ya no es visible por el usuario, las causas posibles son que la actividad es destruida, o por que otra actividad pasa a ejecución y esta es opacada. En el primer caso se llama después "onDestroy()" y en el segundo caso a "onRestart()".
onDestroy(): Este método se llama cuando la actividad sera destruida y es la ultima llamada que la actividad va a recibir.
[Imagen obtenida de:http://developer.android.com/images/activity_lifecycle.png]
Guardando el estado de la actividad
Bueno a todo esto, ¿qué utilidad tiene que tenga todas estas llamadas?, bueno si llegaramos a una situación donde nuestra actividad es destruida por falta de memoria o de carga en la bateria, estas llamadas que hace la maquina virtual pueden sernos utiles para retener información de la actividad en proceso si esto llegara a pasar. Como pudimos darnos cuenta en nuestro hola mundo o en cualquier actividad en Android, el método "onCreate()" siempre recibe como parametro un objeto "Bundle", este objeto sirve justo para guardar información valiosa de la ejecución de la actividad y los datos pueden ser almacenados justo antes de detener, pausar o destruir la actividad y pueden ser recuperados justo después de volver a ejecución la actividad.
Agregando una actividad a mi proyecto
En mi caso hasta ahora solo tengo una actividad que servirá para mi ventana principal, ahora yo quisiera tener una segunda actividad donde se lleve a cabo la partida de ajedrez dibujando el tablero y moviendo piezas. Lo primero que hice fue crear un nuevo archivo llamado Partida.java en el paquete en el cuál se encontraba la actividad principal(main), y agregue el paquete a la cabecera y extendí de la clase actividad. Pero me encontré con un error a pesar de pertenecer al mismo paquete, la aplicación no reconocía la clase como si no existiera, esto debido a que toda nueva actividad debe de declararse en el archivo "AndroidManifest.xml" que se encuentra en la raíz del proyecto, por lo cuál fui directamente ahí y agregue la actividad quedando así el archivo:
Una vez hecho esto me fue posible llamar a la actividad "Partida" dentro del archivo Partida.java".
Ahora así es como quedo mi código. En el caso de guardar el estado de la actividad, cuando la maquina virtual percibe que esta en peligro de ser eliminada una actividad, manda a llamar al método "onSaveInstanceState" el cual recibe un objeto "Bundle" en el cuál podemos poner los valores que queramos que sean necesarios para volver a recuperar el estado de la actividad. En mi código ejemplo se puede ver como utilizo esta posibilidad para guardar el estado de quien tiene el turno en la partida de ajedrez, y en caso de no existir un estado anterior, el jugador uno es el que tiene el turno y el primer movimiento.
package ajedrez.principal;
public class Partida extends Activity {
String players[] = { "Player1","Player2" };
String JugadorEnTurno = ""
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState != null){
this.jugadorEnTurno = savedInstanceState.get("turno");
}else{
this.jugadorEnTurno = Players[0];
}
}
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putString("turno", this.jugadorEnTurno);
}
};
Referencias:
http://developer.android.com/guide/topics/fundamentals/activities.html
http://miragemiko.wordpress.com/2010/03/20/android-using-bundle-for-sharing-variables/
http://stackoverflow.com/questions/6525698/how-to-use-onsavedinstancestate-example-please

No hay comentarios.:
Publicar un comentario