#android #service #android-activity
#Android #Обслуживание #android-активность
Вопрос:
Привет, Android-гуру для API уровня 7 и выше -> Я сильно поражен, пытаясь найти решение следующей проблемы:
У меня есть действие, которое я бы использовал для запуска службы. Это служба бесконечного цикла, которая может выполняться вечно. Я хотел бы отключить службу от активности, и в более поздний момент времени я снова вызову действие, которое должно сообщить мне текущее состояние службы, и я смогу остановить службу.
Возможно ли что-то подобное? Прямо сейчас моя служба заблокирована, и я не могу закрыть действие, поскольку служба работает вечно, и я также не могу остановить работу службы.
Примеры кода были бы большим подспорьем!!! Заранее спасибо…
Ответ №1:
Множество вопросов:
-
Вы можете отключиться / повторно подключиться к службе с помощью
bind
. К сожалению, лучший совет, который можно дать там, — внимательно прочитать документацию по сервису наhttp://developer.android.com/reference/android/app/Service.html : внимательно посмотрите на пример локальной службы, поскольку он демонстрирует, что вам нужно сделать, чтобы привязать / отменить привязку к липкой службе. -
Чтобы остановить это, после привязки вы можете вызвать stopSelf.
Комментарии:
1. Я не получил информацию, необходимую для отключения службы от активности. После запуска службы из activity мне нужно закрыть activity и продолжить работу службы… Возможно ли что-то подобное в Android??? Здесь мне понадобилась бы дополнительная помощь
2. ДА. Если вы запустите службу с помощью STICKY, при вызове
unbind
активность отключится, и служба продолжит работу. Затем вы можете вызватьbind
при следующем запуске активности.3. Спасибо Femi … за помощь … я запущу службу с помощью startservice, а затем вызову unbindservice для отключения .. надеюсь, это сработает 🙂 еще раз спасибо, с благодарностью
Ответ №2:
Запустите службу без привязки к действию.
В службе логически управляйте потоком, скажем, вызывая onStart()
, чтобы он продолжал работать. Вызывайте onDestroy()
, когда вам нужно остановиться.