Activity不在のServiceから別のServiceを起動するとServiceが落ちる話
移転のお知らせ
ブログはこちらに移転しました。現在はこちらで更新をしています。
Activity起動中、もしくはバックグラウンドでまだActivityが生きている時には正しく動作する、しかしActivityを殺してから操作するとエラーでサービスが落ちる、しかもその内容はデバッグログに上がってこない上至る所でLog出力をさせてもServiceが落ちてしまう場所が変わってしまう。
こんな現象があり、デバッグのしようもなく途方に暮れていましたが、Logcatの出力から自作アプリのみのフィルタを外し、全出力を閲覧した時、ようやく原因が分かりました。サービスから起動した別のサービス上でandroid.os.DeadObjectExceptionが投げられていました。どうやら、Activityから起動したServiceが、Activityが死んでいる状態でさらに別のServiceを起動する場合には、起動対象のServiceを別プロセスに分離しなければならないようです。ということでandroidmanifest.xmlにandroid:process属性を追記してやってデバッグ完了です。
参考