elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Android]Evitar que el sistema cierre la aplicación cuando pasa a segundo plano.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Android]Evitar que el sistema cierre la aplicación cuando pasa a segundo plano.  (Leído 2,342 veces)
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
[Android]Evitar que el sistema cierre la aplicación cuando pasa a segundo plano.
« en: 7 Noviembre 2019, 19:11 pm »

Resumen análisis del problema: Estoy haciendo una App, en concreto un navegador para Android y tengo un problema. Cuando el usuario se va a otro programa/app o minimiza la mía... Mi programa se va al background/segundo plano poniendo la actividad en pausa y finalmente en onstop de forma batante arbitraria según la decición tomada por el Android Garbage Collector del sistema que cierra aplicaciones en background para liberar memoria, ahorrar batería...
Cuando el usuario trae la app al frente/foreground desgraciadamente se "reinicia" mi app, o si manejo programaticamente los estados de mi actividad en el mejor de los casos recargo la pagina.

Estoy mirando soluciones y encontré
https://developer.android.com/training/scheduling/wakelock.html pero no encaja en absoluto con el fincionamiento de mi aplicación. Entonces no sé como afrontar este problema correctamente.

Problemática en el funcionamiento actual: El usuario utiliza mi aplicación para navegar por internet. Se loggea en alguna página y por ejemplo escribe un documento online. Mientras escribe este documento online, decide ir a la calculadora de su móvil para realizar un par de operaciones y añadirlas al documento, por lo que mi aplicación se minimiza. Tras hacer las operaciones vuelve a mi aplicación, la página se recarga o la aplicación se reinicia y pierde todo el documento que estaba escribiendo. Esto debido a que el Garbage Colector de Android decide finalizar mi aplicación porque cree que es conveniente para el usuario.

También si el usuario decide acceder a la cámara o cualquier otra funcionalidad del dispositivo para subir contenido online mediante mi aplicación, como sacarse una foto con la cámara del sistema para ponerla como foto de perfil de una red social, es posible y frecuente que el Garbage Colector finalice mi aplicación o la recarge, haciendo imposible para el usuario subir la imagen.

Funcionamiento deseado: La aplicación debería permanecer activa en el background, quizás en pausa, y a la vez no debería de recargarse la página al volver a traerla al frente tras acceder a otra aplicación del sistema. Si simplemente manejo el estado de la actividad seteándolo en onpause, el Garbage Colector sigue pudiendo finalizar la aplicación cuando quiera.

Qué puedo hacer al respecto?


« Última modificación: 7 Noviembre 2019, 19:13 pm por string Manolo » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: [Android]Evitar que el sistema cierre la aplicación cuando pasa a segundo plano.
« Respuesta #1 en: 8 Noviembre 2019, 03:40 am »

Lo primero es que la respuesta de Android me parece acertada, aunque quizás exagerada a veces.. quiero decir que el usuario puede elegir que aplicaciones tratar de modo privilegiadas para que se mantengan en segundo plano sin cerrarse. Aunque esto, eviendentemente no soluciona tu caso, ya que lo deja en manos del usuario... si la considera lo suficientemente importante la marcaría y si no, no.

Otra opción más interesante aún por parte de Android, sería tener alguna casilla que al marcarla permitiera mantenerla en segundo plano, debería ser preferiblemente una acción hardware, porque si no cualquiera se la saltaría a la torera... así que no va hacer el caso. La diferencia del caso previo, es en el previo, el usuario elegiría las aplicaciones desde 'Ajustes', por lo que sería ianlterable hasta que el usuario de nuevo las cambiara... este otro modelo, sería al instante (sin necesidad de ir a ajustes) y solo tendría efecto hasta que el usuario cerrase él mismo la aplicación.

Si no recuerdo mal, una aplicación declarada como servicio, se mantiene en segundo plano, salvo que el propio usuario la cierre. Declarar una aplicación como servicio, tiene sus requisitos... si no los cumples es mejor que tampoco lo fuerces.

Una solución mejor sería prever por tu parte la posibilidad de que Android la cierre, así que lo adecuado sería guardar correctamente TODO el estado actual, salvo que el estado, sea un estado crítico de seguridad, que en tal caso, no conviene guardar, si no tener un punto anterior guardado para acometer ese proceso de una sola pasada o rechazarlo...

Una opción intermedia, aunque indeseable, sería guardar cada cierto tiempo el  estado del programa, ante un cierre inesperado siempre se podrá rescatar desde la última vez que guardaste y continuar desde allí. Pero sería el caso más desafortunado.


« Última modificación: 8 Noviembre 2019, 03:43 am por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
codigo para cuando se cierre la aplicación « 1 2 »
Programación Visual Basic
dimitrix 16 5,560 Último mensaje 24 Junio 2007, 20:01 pm
por Xerok1!
Evitar cierre de aplicacion vb
Programación General
Buggcon 2 3,936 Último mensaje 4 Abril 2013, 02:23 am
por Buggcon
[Android]Procesos en segundo plano.
Java
kondrag_X1 0 2,070 Último mensaje 21 Octubre 2015, 12:53 pm
por kondrag_X1
Chrome OS 64 Beta permite ejecutar aplicaciones de Android en segundo plano ...
Noticias
wolfbcn 0 1,782 Último mensaje 30 Diciembre 2017, 01:55 am
por wolfbcn
Ejecutar mi aplicación de VB en segundo plano.
Programación Visual Basic
Alvaros59 1 2,693 Último mensaje 21 Mayo 2019, 22:10 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines