Jelly Bean 4.1.1 (公式) を搭載した私の Galaxy Nexus では、OS が異常終了し、ログに次のようなエントリが記録されることがあります。
10-02 22:24:34.992 I/ActivityManager( 306): Killing 7517:com.google.android.apps.reader/u0a77: remove task
10-02 22:24:36.484 I/ActivityManager( 306): Killing 7465:com.tf.thinkdroid.sg:writedroid/u0a50: remove task
10-02 22:24:37.273 I/ActivityManager( 306): Killing 5924:com.metago.astro/u0a73: remove task
10-02 22:24:37.296 W/ActivityManager( 306): Scheduling restart of crashed service com.metago.astro/.jobs.JobService in 5000ms
10-02 22:24:37.656 I/ActivityManager( 306): Killing 7302:org.jtb.alogcat/u0a84: remove task
10-02 22:24:38.148 I/ActivityManager( 306): Killing 7120:com.google.android.gm/u0a19: remove task
残念ながら、強制終了されたプロセスの 1 つは、実行中のアプリがバインドされているリモート サービスです。実際、サービスは直後に再起動されますが、これによりアプリで一貫性のない動作が発生します。
サービスライフサイクルでは、次のように述べています。
サービスは、開始することも、接続をバインドすることもできます。このような場合、サービスが開始されているか、Context.BIND_AUTO_CREATE フラグを使用してサービスへの接続が 1 つ以上ある限り、システムはサービスを実行し続けます。
私のアプリはリモート サービスにバインドされてContext.BIND_AUTO_CREATE
いるため、メイン プロセスがバインドされている限り、リモート サービスは稼働し続けるという印象を受けました。Androidがリモートサービスを強制終了しないようにするにはどうすればよいですか?
注: 報奨金は、ドキュメントに従ってコードが機能しないように見える理由を説明するためのものです。