Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 10/12/16, 13:54:33
Array

[xs_avatar]
navasfj navasfj no está en línea
Miembro del foro
 
Fecha de registro: mar 2013
Localización: Alcalá de Guadaíra(Sevilla)
Mensajes: 243
Modelo de smartphone: LeEco Le Max 2
Tu operador: Vodafone
Mi Service consume mucha RAM

Tengo un problema con una app que estoy realizando y no se como puedo solucionarlo, espero que me podáis ayudar, os cuento el caso.

Es una app de un calendario/agenda para el trabajo, ya que tenemos unos turnos un poco complicados de entender y de esta forma nosotros y nuestras familias pueden saber en todo momento de que turno estamos.

Mi Service es dependiente de un Alarmmanager que se activa a una hora concreta que el usuario a programado y lo que hace es activar el Service que abre una base de datos Sqlite para comprobar si en ese día hay alguna nota como haría cualquier agenda. Si la hay y coincide con la hora programada se lanza una notificación avisando al usuario de que tiene una notificación para ese día.

Este service tiene que estar activado evidentemente siempre y debería comprobar la fecha y la hora una vez al día, a la hora programada, a no ser de que el usuario desactive el servicio de notificaciones.

El problema es que este servicio que yo tengo creado consume 65Mb de Ram aproximadamente y android lo saca del sistema con el consiguiente problema de que deja de funcionar el sistema de notificaciones.

Como puedo crear el Service o el Alarmmanager o la Notificación o yo que sé que no consuma tantos recursos, porque estoy desesperado.

Muchas gracias por adelantado y por supuesto si necesitáis algo más de información o código, solo tenéis que pedirlo.
Responder Con Cita


  #2  
Viejo 10/12/16, 15:36:56
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
En primer lugar, no se porqué tienes un AlarmManager y luego dejas el servicio funcionando continuamente. ¿No es más fácil que si tienes que hacer la comprobación 1 vez al día establezcas un setRepeating en el AlarmManager y el servicio hace la comprobación y después se muere hasta el día siguiente?

Luego, en cuanto a los problemas de RAM, en un principio no deberían ser importantes, de hecho es de las pocas cosas "buenas" que tiene Java. La teoría es que mientras algo sea accesible el recolector no lo quitará, además de que el recolector pasa cuando le sale a él de los cataplines. ¿Cómo evitar que algo sea siempre accesible? No abusando de las variables globales, si algo tiene que ser local mételo dentro de una función, si algo tiene que ser global pero quieres asegurarte que el recolector lo quita, establécelo a null y después llama a System.gc() para asegurarte que el recolector es llamado lo antes posible.

Y por último, si quieres que tu servicio se levante él solo si se muere porque el sistema decide eliminarlo, basta con iniciarlo en modo START_STICKY o START_REDELIVER_INTENT, según necesidades.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 03:42:58 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /