Android のメディアアプリが kill されないようにしたい
Service で音楽を再生しているとアプリが kill されてしまい困っている、という相談を受けた。
動作確認をしていないので、必要に迫られたら動作確認をする。
kill されにくい Service を作るには Service.startForeground
を利用し、 Service が Foreground で動いているか確認する とよいらしい。が、記事を参考に adb を確認してみても isForegroud
が無くて困っているとのこと。
詳しくないものの、せっかくの機会なので軽くググってみた。
調査結果(動作未確認)
自分で動作確認をしていないが、ひとまず次の理解をもって前に進んだらどうかという流れになった。
Service.startForeground
で kill されにくくするのは一般的なノウハウらしい- ExoPlayer 一番のコントリビューターである ojw28 さん が 「フォアグラウンドで死を防げる(直訳)」とコメントしている ので、ひとまず信頼して良さそう
- adb で
isForeground
は確認できなかったらしいが、RunningServiceInfo.foreground
が代替になるらしい
参考リンク
- Service | Android Developers)
- ExoPlayer Demo Process being killed automatically when playing a track in the background. · Issue #421 · google/ExoPlayer
- Service が Foreground で動いているか確認する - Qiita
- How to determine if an Android Service is running in the foreground? - Stack Overflow
- ActivityManager.RunningServiceInfo | Android Developers
RunningServiceInfo.foreground
を見る
- ActivityManager.RunningServiceInfo | Android Developers