Ciclo de vida actividades Android

CrIpI

Hola,

Estoy trabajando en un segundo proyecto android y no tengo ni idea de las cosas mas simples ya que solo tuvimos una clase en la universidad solo para "Android" que fue más para enseñar las herramientas a utilizar por asi decirlo.

Bueno mi duda es que me muevo por la aplicación de esta manera:

LoadPage -> Login -> Registro -> Login -> Main -> ...

Y cuando le das para atras hace el mismo recorrido. Me gustaría que en Main al darle para atras cerrara la aplicación sin matarla. Creo que es importante los Flags de los intents pero no tengo ni idea. Utilizo este FLAG_ACTIVITY_NEW_TASK.

Si alguien me echa una mano se lo agradecería. Thx

snakeIV

Buenas, no me acuerdo muy bien como iba pero creo que yo hice algo de esto así:

Intent i = new Intent(this, NextActivity.class);
startActivity(i);
finish();

Creo recordar que el finish() quitaba esa activity de la cola y así cuando le dabas atrás es como si no hubieras pasado por esa.
Esto deberías ponerlo en la de LoadPage, Login, Registro y Login al iniciar la siguiente activity.

También podría reventarte el móvil, vete tu a saber. Lo use hace un par de años y lo mismo no es esa parte la que lo hacia.

Ya me cuentas.

2 2 respuestas
zoeshadow

Lo que dice #2 te servirá, también podrías sustituir el botón back ( sin llamar a super ) y cambiar su funcionamiento, pero mejor que vayas cerrando todas las actividades si no quieres que el usuario pueda volver a ellas.

1 respuesta
CrIpI

#2 #3 Ya medio consegui solucionar el problema y al cargar el main lo cargo de esta manera

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);

Lo unico que al volver a la aplicación varias veces con un servicio inicializado en background a lo mejor tengo:

main-> main-> main -> ...

Segun las veces que lo haya inicializado desde fuera por si teneis alguno idea. Tambien aprovecho para preguntar por este caso...

main-> A -> B -> C

Se puede dar al boton de atras y retroceder pero en C al dar un boton ir a la actividad A y eliminar A y C tal que asi:

main-> A

Gracias por las contestaciones.

snakeIV

No me queda del todo claro lo que quieres hacer pero modificando el onBackPressed podrías montártelo como quieras.

@Override
public void onBackPressed() {
    //aqui mandas al usuario donde quieras. Así por ejemplo:
    Intent myIntent = new Intent(this, NextActivity.class);
    startActivity(myIntent);
}
1 respuesta
CrIpI

#5 Se podria decir que tenemos estas actividades

Main - Activity A

Y tu abres una actividad B y despues una actividad C que estan modificando la base de datos de lo que muestra A. Entonces al dar en un supuesto boton en C, guardas los datos de un formulario en la base de datos y cargas de nuevo A.

Podria limpiar todo el stack de actividades y en A si le das atras vuelva a main pero me parece una solucion un poco guarra y me imagino que hay algun FLAG que haga lo que quiero.

Gracias de todas formas si no lo consigo lo hare de esa manera.

snakeIV

Mírate algo de esto que lo mismo lo puedes montar por aquí
http://stackoverflow.com/questions/10407159/how-to-manage-start-activity-for-result-on-android

1 respuesta
CrIpI

#7 Ya estuve probando eso pero como llamo al boton desde un onclicklistener que es otra clase me costaba comunicarme con la clase padre (el hijo llama a onclicklistener). Me devolvía siempre 0.

Voy a mirar un permiso del manifest para manejar las tareas, TASK no se que, aunque no se si manejara todas las tareas del dispositivo que no me haria mucha gracia eso.

Muchas gracias por la ayuda. Aun no tengo prisa asi que lo ire viendo con el tiempo.