Android 9(Pie)の電源周りとアラームについて
IT技術
Android9(Pie)の電源周りについて
(株)ライトコードの秋山(あきやま)です!
Android開発していると、いろいろなバージョンのものを触る機会があると思います。
その中で2018年8月にリリースされたバージョンの、Android9(Pie)の電源周りについて色々と学ぶことがあったので、こちらで紹介しようと思います。
App Standby Buckets(アプリ スタンバイ バケット)
Android9では、「App Standby Buckets (アプリ スタンバイ バケット)」という電源管理の機能が導入されています。
これは、各アプリの使用頻度によって、システム側が5つの優先度に振り分けます。
優先度
優先度の高い順に並べるとこんな感じです。
- Active
- Working set
- Frequent
- Rare
- 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
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
あっきー(エンジニア)
元ファストフード店長代理のJava系ITエンジニア。 Webサイト系の開発や運用をいくらか経験し、 現在はAndroidアプリ開発を主に担当したり。 休みの日はゲームとか風景写真撮りに行ったりとかマラソンしたりとか。
おすすめ記事
移転したライトコード大阪オフィスを調査せよ!
広告メディア事業部
2024.04.03
日常
【GCP】BIG QUERYを触り程度に理解してみる
かねまさ(エンジニア)
2024.04.02
IT技術
【Android】Github ActionsでFirebase Test Labの実行を分散する
笹川(エンジニア)
2024.04.02
IT技術
【Next.js】App Router で使用できるキャッシュまとめ
モーリー(エンジニア)
2024.03.29
IT技術
GitHubActionsのランナーに触れてみた
こやまん(エンジニア)
2024.03.28
IT技術