Best practices for running background work on Android
https://www.youtube.com/watch?v=t1_8WSEguDY
一言で表すと
バッテリーを長持ちさせるために、いろんな改善がされている。
概要
誰しもバッテリーを長持ちさせたい。
そのためにAndroid OSは何をしているか。
https://scrapbox.io/files/6284e2e116f0bd001dd4c9cb.png
Androidのデバイスメーカーのカスタマイズに対応するのが大変だった。
バッテリーの寿命を長くするために何かしら制限を入れたりしてた。
アプリのエンジニアもそれを知ってた。
Go.iconメーカーごとに独自のバッテリーを長持ちさせる機能を入れたりしてたってことかな
App Restriction Level
https://scrapbox.io/files/6284e3f4f528da002332a196.png
https://scrapbox.io/files/6284e458d8354200238abada.png
制限なし
ユーザだけが選択可能
最適化された
アプリの使用頻度が多いほど、システムがアプリに割り当てるリソースが多くなる
制約つきバケット
非常に限られたジョブとアラームクォータを受け取る
バックグラウンドの制約
フォアグランドサービスもバックグラウンドサービスも使えない
Go.iconこのレベルの一貫性を各デバイスメーカーにも持たせたいみたい
Android 13 ではバッテリー効率とシステムの状態に焦点を当てたJobSchedulerの改善がされている。
https://scrapbox.io/files/6284e85da23a72001d3560be.png
Prefetch Jobs
これとしてマークされたジョブの処理方法を改善
Go.icon(多分)起動時にたくさんの処理を起動しても、ジョブがいい感じに延期されて、アプリの起動時間を短縮できるのに役立つ
JobScheduler Priority
(多分)複数のジョブがある場合に優先度が付けられる
システムのリソースが少なくなったりした時に、どのジョブを最初に停止するのが適切か判断する
デバイスが熱くなりすぎるのを防ぐためにジョブを停止したりする
優先度が低いやつから停止される
Android 13 でフォアグランドサービスの通知を消すことができるようになった。
フォアグランドタスクマネージャーから確認できる。
FCMの優先度
アプリのスタンバイバケットとは切り離す(?)
気になるポイント
メモ
コメント