Cómo detener y reanudar un servicio

Soy un principiante de Android, y por desgracia no pude encontrar una respuesta satisfactoria para mi problema de servicio hasta ahora. Espero que puedas ayudarme. Creo que mi pregunta se refiere a una tarea común.

Mi situación es la siguiente: He implementado mi propio servicio que simplemente registra las ubicaciones GPS y las almacena en una lista. Una vez que el servicio se detiene, escribe los datos en una base de datos.

Esto funciona bien, pero ahora el servicio debe tener algún tipo de " modo de pausa " donde detiene la grabación y se puede reanudar más adelante. ¿Cuál sería la mejor manera de implementar esta funcionalidad?

Hasta ahora me he planteado dos ideas (ciertamente no muy satisfactorias):

  1. Implementar mi propio ciclo de vida de servicio (inicio, detener, pausar, reanudar) y vincular la GUI al servicio. Por otra parte, parece que el enlace se produce de forma asincrónica, lo que hace que la actualización de la interfaz gráfica de usuario (habilitar y deshabilitar los controles de inicio / detención) sea un poco complicada.

  2. En pausa, el servicio se detiene y las ubicaciones GPS se anexan a alguna lista en una clase singleton. En reanudar, el servicio se inicia de nuevo y así sucesivamente. El problema que veo aquí es que la aplicación podría morir mientras está en modo de pausa y los datos se pierden.

  • Ciclo de vida de android onActivityResult vs onStop
  • Cómo manejar AsyncTask onPostExecute cuando se pausan para evitar IllegalStateException
  • ¿Cuál es el equivalente del ciclo de vida de la actividad en iOS?
  • Android: cómo registrar todas las llamadas a los métodos de actividad?
  • Activity.finish () se llama pero la actividad permanece cargada en la memoria
  • Android: onPostResume se llama después de que se reanude el fragmento
  • DialogFrag # show () de un lanzamiento de fragmentos "IllegalStateException: no se puede realizar esta acción después onSaveInstanceState"
  • ¿Puede Android Service superar el objeto de aplicación?
  • La onPause de la actividad y onResume que se llama después de comenzar, para ninguna razón
  • Android: onDestroy () o un método similar en la clase Application
  • Actividad con servicio duradero en el fondo que no se matará
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.