Al usar mi aplicación Android, cuando un usuario realiza una determinada acción, se inicia un servicio en segundo plano que recupera la ubicación actual del GPS y la guarda en una base de datos, además de hacer otras cosas. En ese servicio, yo uso el requestLocationUpdates()
de la clase LocationManager
y esperar hasta que el onLocationChanged()
de mi LocationListener
(que es implementado por el servicio) se dispara. Pero, ¿cuál es la mejor manera de esperar a que se dispare el onLocationChanged
? ¿Debería simplemente sondear una variable y esperar hasta que esté configurada? ¿Algun consejo?¿Cuál es la mejor manera de esperar una reparación de ubicación GPS?
Nota: No puedo simplemente escribir en la base de datos en el onLocationChanged()
debido a algunas otras cosas.
EDITAR: Para borrar mi situación, puedo presentar un ejemplo similar a mi caso: Digamos que el usuario presiona un botón y se dispara un método myMethod
que devolverá algún objeto. Entonces, en este myMethod me registraré para actualizaciones de ubicación desde el GPS (usando requestLocationChanged
) y además espero la ubicación de los usuarios y la utilizo para algo. En otras palabras, myMethod
no puede regresar antes de que la ubicación esté presente. No sé cómo puedo usar onLocationChanged
en este caso.
Probablemente porque el oyente GPS está en un segundo plano y no en su proceso principal. – Segfault
Cuando el usuario realiza la acción que desencadena el servicio de búsqueda de ubicación, mi aplicación debe obtener la ubicación actual antes de que continúe. Digamos que el usuario presiona un botón y se activa un método myMethod que devolverá algún objeto.Luego, en este myMethod, me registraré para actualizaciones de ubicación desde el GPS (usando requestLocationChanged) y además esperaré la ubicación de los usuarios y la usaré para algo. En otras palabras, myMethod no puede regresar antes de que la ubicación esté presente. No sé cómo puedo usar onLocationChanged en este caso. – qtips
¿Desea detener la ejecución en myMethod mientras espera que se sincronicen los gps y le proporcione una ubicación? No deberías hacer eso. Si eso es lo que necesita hacer, debe mostrar un cuadro de diálogo de progreso que se descartará cuando se active onLocationChanged. Y luego también en el final de LocationChanged todo lo que myMethod necesita hacer con la ubicación. –