Servicio de Android con devoluciones de llamada locationListener

Tengo una aplicación para Android. Según la ubicación geográfica actual del usuario, quiero recuperar algunos datos remotos en segundo plano y almacenarlos. Mi implementación es:

A intervalos específicos, una alarma activa mi servicio. El servicio utiliza una clase anónima para consultar la ubicación actual y registra una devolución de llamada locationListener. A petición de onLocationChanged (), inicio la recuperación remota de datos desde el servidor.

Sin embargo, una vez que mi servicio termina de registrar la escucha de ubicación utilizando la clase anonymos, regresa como se esperaba; ya que no espera la devolución de llamada antes de terminar. Dado que la devolución de llamada tarda un tiempo y hace una llamada cuando el servicio ya ha regresado, arroja un error que dice:

java.lang.RuntimeException: Handler{43e82510} sending message to a Handler on a dead thread

Lo cual es bastante comprensible. Una solución rápida para mí ahora es que puedo usar getLastKnownLocation de locationManager ya que eso no responde por devolución de llamada; pero ¿qué pasa si quiero la última ubicación en este momento, en un servicio y no en una actividad? ¿Cómo puedo esperar a que vuelva a ocurrir la devolución de llamada y detener la devolución de mi servicio?

Además, ¿en qué punto se actualiza lastKnownlocation? Cada vez que el GPS registra una nueva ubicación; lo actualiza? Lo que quiero saber es que si no es la última, ¿aún puede cerrarse a la última? Como no vi una opción en el emulador de Android para configurar el período de tiempo entre actualizaciones posteriores.

Cualquier ayuda es muy apreciada. Salud

Respuestas a la pregunta(1)

Su respuesta a la pregunta