Android8からはバックグラウンド状態だとサービスに制限がかかる

現在関わっているアプリがエラーになっているということで調査を行ったところバックグラウンド回りでIllegalStateExceptionが発生していました。

いろいろ調査を行ったところAndroid8からは バックグラウンドサービスに制限事項があり
バックグラウンドにした状態でstartService()を呼んでしまうと、アプリがクラッシュしてしまうようです。

<回避方法>

回避方法としては以下2つがあるようです。

①バックグラウンド処理をJobSchedulerに置き換える

置き換える場合、JobSchedulerはAndroid 5.0(Lollipop)からの機能であるため、バージョンの分岐処理が必要

 

②Context.startForegroundService()を使用する

Context.startForegroundService()を使用する場合、フォアグラウンドに紐づけるため、通知バーに「アプリが電池を消費しています」という通知が表示されるようです。

 

調査のメモのような内容になってしまいましたが、以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です