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