Android: la mejor manera de implementar LocationListener en múltiples actividades

He estado atrapado en este problema durante bastante tiempo. Estoy trabajando en una aplicación que utiliza la ubicación de forma bastante extensa en varias actividades diferentes. Cada ejemplo que he encontrado utiliza un LocationListener separado en cada Actividad. Esto no es factible en mi situación.

Me pregunto cuál es la forma más eficiente de realizar un seguimiento de la ubicación del usuario en varias actividades. En este momento, he creado un servicio que implementa LocationListener y usa una transmisión para actualizar campos estáticos lat y long en una clase base de actividad. Esto significa que el servicio siempre se está ejecutando, lo cual no es ideal. Pero si apago el servicio y lo reinicio solo cuando lo necesito, lleva tiempo encontrar una buena ubicación. Necesito los datos de ubicación en onCreate () de la actividad. Es lo mismo si intento implementarlo en la clase base de actividad. Si constantemente registro al oyente en onResume / onCreate y lo anulo de registro en onPause (), me toma demasiado tiempo comenzar a recibir actualizaciones. También intenté crear un servicio al que pudiera vincularme, por lo que solo comienza cuando necesito una ubicación. Pero tengo el mismo problema, lleva demasiado tiempo vincularme al servicio y comenzar a recibir actualizaciones.

El servicio que estoy usando ahora funciona, pero de todo lo que he leído, no debería estar usando un servicio en ejecución constante para cosas triviales como esta. Pero el objetivo de la aplicación es proporcionar datos relevantes basados en la ubicación actual del usuario. Entonces, tengo un servicio que simplemente se ejecuta en segundo plano y proporciona actualizaciones periódicamente. El único problema importante que me ha llevado a volver a examinar el diseño en este punto es que recientemente descubrí que onProviderEnabled () no recibe una llamada si el usuario inicia la aplicación sin el GPS activado y luego lo habilita. En este escenario, la aplicación no tiene forma de reconocer que el GPS estaba habilitado para que pueda comenzar a escuchar las actualizaciones.

Pensé que entendía LocationManager y LocationListener al mirar los ejemplos, pero parece que no puedo aplicarlo a esta situación en la que necesito datos de ubicación en múltiples Actividades. Cualquier ayuda o consejo sería muy apreciado.

Respuestas a la pregunta(4)

Su respuesta a la pregunta