はじめに
先日Android15に関しての差分をまとめた記事を出しましたが、実は次期バージョンであるAndroid16に関して、すでに修正が必要になるであろう情報が部分的に開示されています。
そこで今回は、Android16対応時に慌てることがないよう、わかっている情報を現時点でまとめておこうと思います。
リリースは2025年6月
タイトルの通り、Android16は来年6月を予定しています。
リリースフローとしては以下です。
開発者向けプレビュー版の提供
第1回目: 2024年11月に提供開始。
第2回目: 2024年12月に提供開始。
ベータ版の提供
開始時期: 2025年1月に開始予定です。
正式リリース
予定時期: 2025年第2四半期(4月~6月)にリリース予定で、具体的には2025年6月3日にて予定されています。
上記の通りすでにプレビュー版は提供されているので、余裕のある方はプレビュー版にて影響範囲をご確認いただくと良いかと思います。
1. JobScheduler の割り当ての最適化
Android16では、JobSchedulerに関して以下の3つが最適化されているようです。
アプリのスタンバイバケット
アプリがどのスタンバイバケットに属しているかに応じて、ジョブの実行時間が割り当てられます。
特に、アクティブなスタンバイバケットに属するアプリには、より多くの実行時間が提供されます。
アプリの表示状態
ユーザーに表示されている(トップ状態)の間に開始されたジョブが、アプリが非表示になった後も続行される場合、そのジョブはランタイムの割り当てに従います。
フォアグラウンドサービスの実行中
フォアグラウンドサービスと同時に実行されているジョブも、ランタイムの割り当てに従います。
JobSchedulerは検証のしづらいAPIの一つだと思いますが、元々WorkInfoが持つ機能としてJobが停止した理由を以下APIにて追うことが可能です。
今回、上記に加えAndroid16より新たに JobScheduler#getPendingJobReasonsHistory が追加されています。
この関数の詳細は現時点ではまだドキュメント化されていませんが、Jobが実行されなかった理由を知ることができるようなので、Android16対応によりJobが正しく動かなかった際にはgetPendingJobReasonsHistoryとgetStopReasonを合わせて利用することで、これまでより詳細に原因を追うことができそうですね。
2. 非推奨APIの削除
Android16より、JobInfo#setImportantWhileForegroundがサポートを完全に終了するようです。
この関数はスケジュール設定アプリがフォアグラウンドにある間、またはバックグラウンドの制限を一時的に免除されている間のジョブの重要度を返す関数となっています。
Android12より非推奨となっておりましたが、Android16より完全にサポートを終了し、呼んでも無視されるのでご注意ください。
また、他にも非推奨となっている機能が今回のバージョンアップでサポートを終了するものがあるかもしれません。
アプリ内で非推奨となっている機能を利用しているケースがあるよであれば、これを機に見直しておくと安心かと思います。
3. ユーザー補助の妨げになる通知の非推奨
Android16でもUI周りの差分がいくつかありますが、その中でも影響がありそうなものがこの通知の差分になります。
announceForAccessibilityの使用やTYPE_ANNOUNCEMENTユーザー補助イベントのディスパッチを特徴とするユーザー補助機能の通知が非推奨となりました。
これにより、ユーザー補助機能の妨げになる通知のサポートが終了します、アプリ内でこれらの機能を使用している場合は、代替手段への移行が必要です。
さいごに
OSアップデートの間隔が短くなったので合わせていくのがより一層一苦労ですね。
来年になればより多くの情報が開示されていくはずなので、要チェックかと思います。