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


 
Herramientas
  #1  
Viejo 10/12/16, 13:54:33
Avatar de navasfj
navasfj navasfj no está en línea
Miembro del foro
Mensajes: 243
 
Fecha de registro: mar 2013
Localización: Alcalá de Guadaíra(Sevilla)
Mensajes: 243
Modelo de smartphone: LeEco Le Max 2
Tu operador: Vodafone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 09:32:52 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007