ユーザーがアプリを閉じるまでサービスを継続的に実行しようとしています。
メインアクティビティのstartService()
メソッドのonCreate()
メソッドとstopService()
メソッドのonDestroy()
を使用しています。
デバイスを回転させたり、画面をオフにしたりすると、メインアクティビティが停止して再作成されるように見えるため、問題が発生しました。
ユーザーが手動でアプリを停止した場合にのみサービスを停止するにはどうすればよいですか?
マニフェストファイルのサービスタグに以下の属性を設定します。
_<service Android:name="service" Android:stopWithTask="true"/>
_
これを追加すると、タスクが削除されたときにサービスのondestroy()
が呼び出されます(最近のアプリリストからアプリが閉じられます)。
意図的にアプリを閉じるという意味です。ユーザーが「最近のアプリ」画面でアプリをスワイプした後。
Androidの観点からは、これは「アプリを閉じる」ことではありません。それは「タスクを削除する」(または「タスクを停止する」こともあります。Googleの用語はあまり一貫していません)。
タスクが削除されると、サービスは with onTaskRemoved()
と呼ばれます。ただし、それは、ユーザーが概要画面(別名、最近のタスクリスト)を介して手動でタスクを削除するときと、タスクがAndroid 4.4以下で自然に消えるとき)の両方のはずです。古すぎる。