2010-09-28 13 views
11

Mi aplicación comprueba periódicamente la ubicación utilizando una alarma en un BroastcastReceiver que inicia un servicio. Sé que debería adquirir un wakelock antes de comenzar el servicio, pero mi pregunta es cuándo puedo lanzarlo.Android: cuando uso LocationManager.requestLocationUpdates, ¿necesito un WakeLock?

Si suelto el wakelock después de llamar al requestLocationUpdates, ¿puede el dispositivo ir a dormir y no llamar a mi LocationListener o el dispositivo siempre se activará para entregar actualizaciones y permanecerá despierto hasta que la devolución de llamada haya regresado? Soy reacio a aferrarme al wakelock porque eso evitaría que el dispositivo durmiera entre actualizaciones hasta que haya terminado con la ubicación.

+0

Mi conjetura educada poco es que solicitar actualizaciones de ubicación llevará a cabo una wakelock para que pueda liberar la suya. Sin embargo, ¿qué estás haciendo que necesitas actualizaciones de ubicación cuando el teléfono está dormido? – Falmarri

+2

Creo que probablemente hay muchos casos de uso para actualizaciones de ubicación mientras el dispositivo está dormido, p. grabando pistas GPS de un viaje. –

+0

Puede echar un vistazo a [CommonsKey 'WakefulService'] [1] que, de acuerdo con la documentación puede manejar las cosas de wakelock parciales para usted. [1]: http: //github.com/commonsguy/cwac-wakeful#readme –

Respuesta

2

Basado en mi experiencia (y confirmado en los comentarios aquí), liberar el bloqueo de activación después de llamar al requestLocationUpdates no parece ser un problema. Lamentablemente, la única forma de obtener una respuesta definitiva es preguntándole a un desarrollador de la plataforma, pero he recibido no response.

+1

Esto es correcto. No soy un desarrollador de plataforma, pero tengo una aplicación de seguimiento de GPS que funciona correctamente cuando el dispositivo está "dormido" ... Básicamente, cada actualización de ubicación posterior viene con su propio 'WakeLock', que le permite recibir el' Intento'. En su receptor, si desea procesar ese evento, necesita obtener (y luego liberar) su propio WakeLock. –

+0

¿Haría una diferencia qué método 'requestLocationUpdates' usted llama? @RichardLeMesurier: ¿estás usando la versión 'PendingIntent'? –

+0

@Mr_and_Mrs_D No sé y recomiendo que lo intentes para asegurarte. Estaba usando la versión 'PendingIntent'. –

0

verificar modo de ahorro de energía en la configuración del sistema Android: se debe desactivar para permitir que el administrador de ubicación genere la ubicación de actualización cuando la pantalla está apagada; probado en Samsung A5; Me tomó dos días para encontrar esta solución :-)

Cuestiones relacionadas