У меня есть IntentService, который запускается из действия, и я хотел бы иметь возможность немедленно остановить службу из действия с помощью кнопки «Отмена» в действии. Как только эта кнопка «отмена» нажата, я хочу, чтобы служба прекратила выполнение строк кода.
Я нашел ряд вопросов, похожих на этот (, то есть здесь , здесь , здесь , здесь), но нет хороших ответов. Activity.stopService()
и Service.stopSelf()
выполняют метод Service.onDestroy()
немедленно, но затем позволяют коду в onHandleIntent()
завершиться до конца, прежде чем уничтожить службу.
Поскольку, по-видимому, нет гарантированного способа немедленно завершить поток службы, единственное рекомендуемое решение, которое я могу найти(здесь)состоит в том, чтобы иметь логическую переменную-член в службе, которую можно переключать в методе onDestroy()
, а затем иметь почти каждую строку кода в onHandleIntent()
, заключенную в собственное предложение «if», смотрящее на эту переменную. Это ужасный способ написания кода.
Кто-нибудь знает лучший способ сделать это в IntentService?