アクティビティから開始された IntentService があり、アクティビティの「キャンセル」ボタンを使用して、アクティビティからすぐにサービスを停止できるようにしたいと考えています。その「キャンセル」ボタンが押されるとすぐに、サービスがコード行の実行を停止するようにします。
これに似た質問がいくつか見つかりました (つまり、 here、here、here、here ) が、適切な回答はありません。 メソッドをすぐに実行しますが、サービスを破棄する前にコードを完全にActivity.stopService()
終了Service.stopSelf()
させます。Service.onDestroy()
onHandleIntent()
サービスのスレッドをすぐに終了する保証された方法は明らかにないため、私が見つけることができる唯一の推奨される解決策 ( here ) は、メソッドで切り替えることができるサービスにブール値のメンバー変数を持ち、onDestroy()
ほぼすべての行を持つことです。コードはonHandleIntent()
、その変数を参照する独自の「if」句にラップされています。それはコードを書くためのひどい方法です。
IntentService でこれを行うためのより良い方法を知っている人はいますか?