PDA

Ver la Versión Completa : Problema servicio y wakelock wifi lock


Dild0
21/10/17, 12:04:49
Buenos días tengo un pequeño problema y no se exactamente que hago mal.

Tengo un servicio en segundo plano donde hago uso de la api de play services para Location, con los datos parametrizados en Location me obtiene los datos de mi localización cada 15 min y los envió a un servidor a traves de un webservice con retrofit.

Para evitar que la CPU se duerma y el Wifi he creado un PowerManager y un WifiManager wakelock y wifilock los cuales activo al iniciar el servicio y desactivo cuando el servicio muere por cualquier evento automáticamente. Si el servicio muere lo reinicio con un broadcast reciver.

Todo funciona genial, el servicio muere y se reinicia, cada 15 envia los datos al servidor, traceo los wakelock y me dicen que están activos, pero todas las noches al acostarme y dejar el móvil en reposo todo se apaga :(:(:( no entiendo por que los wake lock y wifi lock no funcionan.

Debo poner tambien wakelock en el broadcast reciver? debo hacer las llamadas al servidor fuera del servicio?

necesito un poco de ayuda:besito:

kriogeN
21/10/17, 16:59:39
Desde Android 6 no basta el WakeLock para que el dispositivo no entre en reposo, si se activa el Doze tu aplicación dejará de funcionar igualmente.

Tienes que añadir tu aplicación a la lista de aplicaciones que no usan optimización de batería para usar un WakeLock correctamente.

De todas formas para tu caso lo mejor es establecer una alarma cada 15 minutos, en lugar de estar continuamente con la CPU en marcha, la diferencia de gasto es considerable.

Dild0
21/10/17, 17:35:19
Lo acabo de cambiar y la verdad que tienes razón, he creado una alarma para q se ejecute cada 15 min sin afectar al Doze y me ejecute el pending intent que ejecuta un servicio solo una vez y asi no esta a la escucha constantemente


muchisimas gracias

Dild0
22/10/17, 14:36:22
kriogeN

Una pregunta, ¿que es mejor? ¿crearse un servicio start_no_stiky que solo se ejecute una vez y destruirlo o simplemente dejarlo creado y luego iniciarlo cada vez que lo quiera usar?

kriogeN
22/10/17, 15:31:29
kriogeN

Una pregunta, ¿que es mejor? ¿crearse un servicio start_no_stiky que solo se ejecute una vez y destruirlo o simplemente dejarlo creado y luego iniciarlo cada vez que lo quiera usar?

Supongo que el segundo caso, de hecho no se si puedes volver a lanzar un servicio que ya ha terminado sin crear una instancia nueva del mismo.

Dild0
22/10/17, 18:52:31
Gracias, seguí investigando y la gente opina tambien q la segunda, ya que el servucio se queda cacheado sin consumir nada y solo hay q iniciarlo