• トップ
  • ブログ一覧
  • Android 9(Pie)の電源周りとアラームについて
  • Android 9(Pie)の電源周りとアラームについて

    あっきー(エンジニア)あっきー(エンジニア)
    2019.06.18

    IT技術

    Android9(Pie)の電源周りについて

    秋山秋山先生

    (株)ライトコードの秋山(あきやま)です!

    Android開発していると、いろいろなバージョンのものを触る機会があると思います。

    その中で2018年8月にリリースされたバージョンの、Android9(Pie)電源周りについて色々と学ぶことがあったので、こちらで紹介しようと思います。

    App Standby Buckets(アプリ スタンバイ バケット)

    Android9では、「App Standby Buckets (アプリ スタンバイ バケット)」という電源管理の機能が導入されています。

    これは、各アプリの使用頻度によって、システム側が5つの優先度に振り分けます。

    優先度

    優先度の高い順に並べるとこんな感じです。

    1. Active
    2. Working set
    3. Frequent
    4. Rare
    5. Never

    優先度が低いほどアプリの使用制限がかかります。

    これにより『使わないアプリが裏で動いて電源を消費する』といったことを減らし、全体としてバッテリーを長持ちさせることができます。

    Active

    「Active」は、主に現在使用中のアプリに適用されます。

    こちらは制限がかかりません

    Working set

    「Working set」は、しばしば実行されてはいるが現在アクティブではない場合になります。

    こちらには、制限が少しかかります。

    例えば、アラームが最大6分ほど遅れたりします。

    Frequent

    「Frequent」は、毎日ではないが定期的に使用されるアプリに適用されます。

    こちらは、「Working set」よりも強めの制限がかかります。

    例えば、アラームが最大30分ほど遅れたりします。

    Rare

    「Rare」は、あまり使用されないアプリに適用されます。

    こちらは、「Frequent」よりもさらに強めの制限がかかります。

    例えば、アラームが最大2時間ほど遅れたりします。

    Never

    「Never」は、インストールしたものの一度も使用してないアプリに適用されます。

    こちらは、一番強い制限がかかります。

    制限について

    制限についての詳細は、以下のサイトにあります。

    https://developer.android.com/topic/performance/power/power-details.html?hl=ja

    では、『どれくらいの頻度でアプリの優先度が変わるのか?』というと、特に詳しいことも書いてないです(笑)

    実際に端末を触ってみましたが、モノによって差があるようなので『これだけアプリを放置にしてたら優先度が変わる』と言い切ることはできなさそうです。

    これは、システム側が自動的に判断してくれるものなので…。

    秋山秋山先生
    電池消費をおさえてくれるのは嬉しいけど、バックグラウンドで動くアプリ等に影響あるので、ちょっと困ったりもするかもしれません

    アプリのバックグラウンドでの使用の制限

    上記は省電力にするために、OS側が自動で判別してアプリの制御等をしていきましたが、ユーザが手動で各アプリに対して制限をかけることも出来ます。

    手順

    手順として一例ではありますが、

    「設定」→「アプリと通知」→「(対象のアプリ)」→「詳細設定」→「バッテリー」→「バックグラウンドでの使用の制限」

    とタップして進めていくと、手動でアプリのバックグラウンドでの制限がかけられます。

    こちらも制限がかかることによって「省電力化」することは出来ます。

    しかし、アラームなど一部機能の制限がかかります。

    アラームの扱いについて

    電源管理についてお話をしましたが、それに対して影響が大きそうなのが「アラーム」です。

    バックグラウンドにあるアプリにアラーム機能があり、「時間になればアプリ側からお知らせアラームが鳴る」というものは結構あるかと思います。

    そういった類のものが電源管理の制限により遅延が発生し、結果、時間通りに鳴らなくなるということが起きます。

    お知らせしてくれないのは困る

    時間通りにお知らせしてくれるものが、してくれないのは困りますよね?

    AlarmManagerクラスの「setRepeating」や「setExactAndAllowWhileIdle」あたりでも制限がかかると遅延がありそうです。

    ここは、まだ検証中ではあります…(遅れたり遅れなかったりしたので…勉強不足ですいません)

    setAlarmClock

    個人的に、アラームとして良さそうなのは、Android5.0(APIレベル21)から使えるようになった「setAlarmClock」というものです。

    こちらを使えば時間がズレることなく通知されます。

    2つの注意点

    ただし、2つ注意点もあります。

    1.画面上部のステータスバーに『アラームアイコン』が出る

    画面上部のステータスバーに『アラームアイコン』が出るようになります。(目覚ましアプリ設定でも表示されるもの)

    アラームアイコンを出す出さないはアプリによっては悩みどころですね。

    2.電池の消費が激しくなる可能性

    通知が正確になるということは、「電源周りの制限をかけないようにする」ということでもありますので、使いすぎると電池の消費は激しくなる可能性があります。

    処理をたくさん使うような高機能なアプリも増えてきているので、電池を持たせるのも大事になってきます。

    とはいえ、制限をかけすぎると正常に処理がされない恐れも出てくるので、アプリ製作の際は、この辺のバランスを注意しながら作っていきましょう!

    参考サイト
    https://developer.android.com/about/versions/pie/power?hl=ja

    あっきー(エンジニア)

    あっきー(エンジニア)

    おすすめ記事