General, software, Tecnologia en General

Mantener viva aplicación con phonegap (cordova) en android

Hace poco me encontre con un gran problema al hacer una aplicación con phonegap y es que esta aplicación debe hacer un proceso continuamente incluso si el usuario minimiza la aplicación o va a hacer otras cosas, el problema en si no era el proceso ese estaba bien controlado y se hacia sin problemas pero si pasaba que cada X tiempo en mi caso 20 minutos no entraba a la aplicación la próxima vez que entrara la aplicación se abria como si la hubiera abierto por primera vez y el proceso que estaba ejecutando se habia perdido hace varios minutos…

Al leer un poco la documentación de android me encontre con que el sistema operativo borra o resetea las “Actividades” que no están forzosamente en uso por ese periodo de tiempo, lo que provoca que basicamente mate el proceso de mi aplicación y cuando regrese tenga que volverse a ejecutar desde el principio.

Para evitar esto lo que se debe hacer es lo siguiente.

En el archivo androidmanifest.xml se debe localizar la sección de la “activity” y agregar la propiedad

android:alwaysRetainTaskState=“true”

De esta manera mi linea completa quedo de esta forma:

<activity android:alwaysRetainTaskState=“true”android:configChanges=“orientation|keyboardHidden|keyboard|screenSize|locale”android:label=“@string/app_name”android:name=“miAplicacion”android:screenOrientation=“portrait”android:theme=“@android:style/Theme.Black.NoTitleBar”>

Cada quien tendra el resto de las configuraciones según sus necesidades pero la importante es la de RetainTaskState, que por omisión esta en false y lo que hace es permitir al sistema operativo “limpiar” nuestra app después de un tiempo de inactividad, en este caso le decimos que no lo haga y así no perderemos nuestros procesos tras un tiempo de inactividad.

Anuncios

4 comentarios en “Mantener viva aplicación con phonegap (cordova) en android

  1. Hola Luis, buen tema y blog, una consulta, actualmente tengo un detalle parecido al que se te presento. Resulta que estoy en desarrollo de una aplicación para uso de una empresa, esta app permite rastrear el dispositivo que tienen la aplicación instalada, pero, si la aplicación esta cerrada o por ejemplo si reinician la terminal, el rastreo se pierde ya que la aplicación no se ejecuta. ¿Conoces algun modo de que la aplicacion siempre este activa?. Incluso, para mi lo ideal seria que la aplicación quede instalada de cierto modo oculta, incluso no es necesario que nadie la manipule, su unica actividad es la del rastreo.

    Bueno, espero darme a entender, saludos….

    1. Me parece que para algo así es necesario hacer la aplicación “nativa” ósea sin phonegap ya que al parecer no necesitas lo “grafico” de esta forma me parece puedes crear un “servicio” del sistema que se dedique a esto no eh hecho algo así pero con las opciones que eh visto me parece que si se puede incluso google ya lo hace si tienes activo el rastreo del dispositivo.

      1. Hola Luis, gracias por tu respuesta, una duda, a que te refieres con que ¿google lo hace si tengo el rastreo activo? Lo que he leído e investigado, entran mucho al tema de las notificaciones push, pero no se si esto garantizaría que mi app transmitiera su posición o solo estaría escuchando por una notificación. No se, no veo una luz clara en este tema, por lo menos no con phonegap. Saludosss

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s