サービスを実行する非常に簡単なAndroid GPSロギングアプリがあります。アクティビティは、サービスを制御するための開始/停止ボタンに過ぎません。ボタンをクリックすると、新しい背景サービス(START_STICKY)が開始されます。それから私はアクティビティを閉じ、サービスは正常に実行されます。私は再びサービスを停止するためにアプリを実行することができます。私のAndroidサービスが突然停止し、新しいサービスが作成されました
サービスは、単にGPS座標をファイルに記録します。私はすべてのメソッドとException catchでロギングしています。ある時点で、数分または数時間かかることがありますが、サービスは停止しますが、onDestroyは呼び出されず、例外もスローされません。ログには、最後に書き込まれたファイルが表示され、その後は何も表示されません。私はGCがそれを殺していると思われますが、私はSTART_STICKYは基本的に "できるだけ長く実行してください"と考えていました。 30秒後にサービスの新しいコピーが開始され(異なるPID)、onCreateとonStartServiceは通常どおり呼び出されます。
Androidの親のアクティビティやアプリケーションを強制終了すると、Androidはサービスを終了しますか?これを防ぐには、別のスレッドでサービスを実行する必要がありますか?完全なサービスのライフサイクルが完了しないのはなぜですか(onDestroyは呼び出されません)。
画面がロックされているとサービスが正常に動作するため、問題はないと思います。私が知る限り、サービスは一時停止も再開もしません –