Android: Управление запуском и остановкой активности сервиса

#android #service #android-activity

#Android #Обслуживание #android-активность

Вопрос:

Привет, Android-гуру для API уровня 7 и выше -> Я сильно поражен, пытаясь найти решение следующей проблемы:

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

Возможно ли что-то подобное? Прямо сейчас моя служба заблокирована, и я не могу закрыть действие, поскольку служба работает вечно, и я также не могу остановить работу службы.

Примеры кода были бы большим подспорьем!!! Заранее спасибо…

Ответ №1:

Множество вопросов:

  1. Вы можете отключиться / повторно подключиться к службе с помощью bind . К сожалению, лучший совет, который можно дать там, — внимательно прочитать документацию по сервису наhttp://developer.android.com/reference/android/app/Service.html : внимательно посмотрите на пример локальной службы, поскольку он демонстрирует, что вам нужно сделать, чтобы привязать / отменить привязку к липкой службе.

  2. Чтобы остановить это, после привязки вы можете вызвать stopSelf.

Комментарии:

1. Я не получил информацию, необходимую для отключения службы от активности. После запуска службы из activity мне нужно закрыть activity и продолжить работу службы… Возможно ли что-то подобное в Android??? Здесь мне понадобилась бы дополнительная помощь

2. ДА. Если вы запустите службу с помощью STICKY, при вызове unbind активность отключится, и служба продолжит работу. Затем вы можете вызвать bind при следующем запуске активности.

3. Спасибо Femi … за помощь … я запущу службу с помощью startservice, а затем вызову unbindservice для отключения .. надеюсь, это сработает 🙂 еще раз спасибо, с благодарностью

Ответ №2:

Запустите службу без привязки к действию.

В службе логически управляйте потоком, скажем, вызывая onStart() , чтобы он продолжал работать. Вызывайте onDestroy() , когда вам нужно остановиться.