Как приостановить и возобновить службу

Я новичок в Android, и, к сожалению, пока не нашел удовлетворительного ответа на свою проблему с обслуживанием. Я надеюсь, что вы можете мне помочь. Я думаю, что мой вопрос решает общую задачу.

Моя ситуация следующая: я реализовал свой собственный сервис, который просто записывает местоположения GPS и сохраняет их в списке. Как только служба останавливается, она записывает данные в базу данных.

Это работает хорошо, но теперь у службы должен быть какой-то «режим паузы», в котором она останавливает запись и может быть возобновлена ​​позже. Как лучше реализовать этот функционал?

На данный момент у меня есть две (по общему признанию, не очень удовлетворительные) идеи:

  1. Реализация собственного жизненного цикла службы (запуск, остановка, пауза, возобновление) и привязка графического интерфейса к службе. Кроме того, кажется, что привязка происходит асинхронно, что делает обновление графического интерфейса (включение и отключение элементов управления запуском/остановкой) немного запутанным.

  2. При паузе служба останавливается, а местоположения GPS добавляются в некоторый список в классе singleton. При возобновлении служба снова запускается и так далее. Проблема, которую я здесь вижу, заключается в том, что приложение может быть убито в режиме паузы, и данные будут потеряны.


person Dan    schedule 14.01.2013    source источник
comment
У меня есть вопрос, почему вы не можете использовать логику StartService и StopService для приостановки/возобновления обслуживания. Всякий раз, когда вы хотите приостановить вызов службы остановки и добавить ту же логику, которую вы планируете реализовать для паузы, поскольку вы знаете, когда служба должна остановиться или приостановиться, поэтому вы должны иметь лучший контроль в OnDestroy, чтобы знать, какая логика остановки или паузы для быть казненным. Не могли бы вы объяснить сценарии, когда предполагается возобновить/приостановить   -  person Ramesh Sangili    schedule 14.01.2013
comment
Вариант 2 правильный. Вы не приостанавливаете/возобновляете службу, вы запускаете и останавливаете ее. Если вам нужно сохранить его данные, вам нужно сделать это в службе, когда она остановлена.   -  person Squonk    schedule 14.01.2013
comment
Спасибо за совет выбрать вариант 2. Однако не означает ли это, что мне также нужно хранить флаг, указывающий, что служба была приостановлена, на случай, если приложение будет уничтожено во время приостановки?   -  person Dan    schedule 14.01.2013
comment
@RameshSangili, какой аргумент я должен передать, чтобы остановить сервисную функцию. Я нахожусь во фрагменте. Я пробовал это getActivity.getApplicationContext().stopService(Intent) . Каковы должны быть мои намерения.   -  person Sagar Devanga    schedule 08.01.2015
comment
Спасибо, проблема решена, я сослался на этот вопрос: activity-clas" title="как вызвать метод stopservice класса обслуживания из вызывающего класса активности"> stackoverflow.com/questions/3165190/   -  person Sagar Devanga    schedule 08.01.2015