Spanish La aplicación no arranca en el activity donde la dejé

jose sanjuan

Member
Licensed User
Longtime User
Hola,

Tengo un problema con mi aplicación que es el siguiente:

Tengo un activity central que necesito que permanezca siempre abierto aunque el usuario vuelva al launcher o el teléfono se apague.

El problema es que cuando le dan al icono de la aplicación vuelve a empezar en el main y arranca de nuevo la aplicación.

Si instalo el programa pulsando el botón listo, lo hace perfectamente, pero si le doy al botón abrir ya no funciona de la misma forma.

Cuando instalo desde Play Store tampoco me funciona correctamente y al darle al icono de la app, arranca en el main y me reinicia todo lo arrancado.

Alguien sabe como solucionarlo? Gracias
 

XbNnX_507

Active Member
Licensed User
Longtime User
publica un pequeño ejemplo demostrando ese comportamiento para poder ayudarte
 

jose sanjuan

Member
Licensed User
Longtime User
La puedes descargar en la play Store se llama gesruta appmoviles

el numero de serie es 8130274466 y en usuario y password pon JSR

Donde quiero que se quede es en la activity que tiene los mensajes y tareas del dia y cuando le dan a home y la lanzan de nuevo rearranca la aplicación.

En cambio si compilo y envío la apk y después de instalar le doy al botón listo, cuando le doy en el launcher al icono de la app, vuelve al activity que te comento de las tareas
 

jose sanjuan

Member
Licensed User
Longtime User
https://play.google.com/store/apps/details?id=es.plus42.gesruta.appmoviles

He encontrado otro post que presenta el mismo problema que me sucede:

https://www.b4x.com/android/forum/threads/al-actualizar-mi-app-crea-varias-instancias.35314/

La solución que aporta es correcta, ya que en vez de darle al botón abrir, si sale o pulsa el botón listo, funciona perfectamente, pero los usuarios van directos al botón abrir.

He probado a cambiar las siguientes propiedades en el fichero manifest en todas las actividades:

SetActivityAttribute([actividad],android:finishOnTaskLaunch, "false")
SetActivityAttribute([actividad],android:clearTaskOnLaunch, "false")
SetActivityAttribute([actividad],android:alwaysRetainTaskState, "true")
SetActivityAttribute([actividad],android:autoRemoveFromRecents, "false")
SetActivityAttribute([actividad],android:documentLaunchMode, "none")
SetActivityAttribute([actividad],android:launchMode, "singleTask") en vez de singleTop

pero no se inmuta, tras varias horas luchando no soy capaz...
 

edgar_ortiz

Active Member
Licensed User
Longtime User
Esto yo lo veo como una "recuperación"...

Cada vez que entrés a una actividad, guarda en la base de datos "cual es la ULTIMA actividad" y cuando entres a la actividad "main" revisas y levantas la "ULTIMA" actividad grabada.

Espero te sirva.

Saludos,

Edgar
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola,

Tengo un problema con mi aplicación que es el siguiente:

Tengo un activity central que necesito que permanezca siempre abierto aunque el usuario vuelva al launcher o el teléfono se apague.

El problema es que cuando le dan al icono de la aplicación vuelve a empezar en el main y arranca de nuevo la aplicación.

Si instalo el programa pulsando el botón listo, lo hace perfectamente, pero si le doy al botón abrir ya no funciona de la misma forma.

Cuando instalo desde Play Store tampoco me funciona correctamente y al darle al icono de la app, arranca en el main y me reinicia todo lo arrancado.

Alguien sabe como solucionarlo? Gracias

Hola José, a menos que tengas un problema en el código, creo que tendrias que mirarte el ciclo de vida de Android y entenderás por que te pasa, posiblemente no es un error, es simplemente el comportamiento "normal" de Android. Al menos es lo que entiendo sin ver el código.

https://www.b4x.com/android/forum/threads/b4a-tutorial-guia-rápida-del-ciclo-de-vida-de-android.38760/

Si quieres volver al ultimo activity, haz lo que te dice Edgar de guardarlo en una base de datos, o simplemente guardate en un fichero de forma numérica o texto el ultimo activity, algo asi (de modo muy rapido) :

B4X:
Sub Process_Globals
Dim UltimoEstado = 0 as Int
' .........
' .........
' .........
' .........

Sub Activity_Create(FirstTime As Boolean) ' De main

LeerFichero ' Pone en la variable UltimoEstado el valor leido
' .........
' .........
' .........
' .........

Sub Activity_Resume ' De main

if UltimoEstado>0 then
  ' salta a donde te interese
End if
' .........
' .........
' .........
' .........

Sub Activity_Pause (UserClosed As Boolean) ' De cualquier Activity


   GrabarFile ' cuando salgas de los activity, pon en la variable UltimoEstado el valor que te interese



' .........
' .........
' .........
' .........

Saludos
 
Top