web-dev-qa-db-ja.com

IntentServiceを停止する適切な方法

IntentServiceを使用して画像をサーバーにアップロードしています。私の問題は、サービスをいつどのように停止するかわからないことです。 onHandleIntent(Intent ..)でstopself()を呼び出すと、IntentServiceキューで待機しているすべてのインテントが削除されます。しかし、アプリケーションが実行されていなくてもアップロードプロセスを完了したいので、アクティビティからサービスを停止したくありません。

20
malinjir

私の問題は、サービスをいつどのように停止するかわからないことです。

onHandleIntent()の実行中にコマンドが送信されなくなった場合、onHandleIntent()が終了するとIntentServiceは自動的に停止します。したがって、IntentServiceを手動で停止することはありません。

OnHandleIntent(Intent ..)でstopself()を呼び出すと、IntentServiceキューで待機しているすべてのインテントが削除されます。

それがあなたがそうしない理由です。

しかし、アプリケーションが実行されていなくてもアップロードプロセスを完了したいので、アクティビティからサービスを停止したくありません。

次に、IntentServiceを停止させます。

45
CommonsWare

IntentServiceは、処理するIntents(ジョブ)がなくなると自動的に停止します。 Intent(ジョブ)ごとにstopSelf(startId)を実行します。ここからIntentServiceソースまたはExtending the Service Classをご覧ください http://developer.Android.com/guide/topics/fundamentals/services.html

5
techiServices