これまでのリリースと同様、Android 16 には、アプリに影響する可能性がある動作変更が含まれています。下記の動作変更は、Android 16 以上をターゲットとするアプリにのみ適用されます。アプリが Android 16 以上をターゲットとする場合は、必要に応じてアプリを変更し、下記の動作に適切に対応できるようにしてください。
アプリの targetSdkVersion
に関係なく、Android 16 で実行されるすべてのアプリに影響する動作変更のリストも必ずご確認ください。
ユーザー エクスペリエンスとシステム UI
Android 16 には、より一貫性があり直感的なユーザー エクスペリエンスを実現するための以下の変更が含まれています。
エッジ ツー エッジのオプトアウトの廃止
Android 15 强制为以 Android 15(API 级别 35)为目标平台的应用启用边到边,但您的应用可以通过将 R.attr#windowOptOutEdgeToEdgeEnforcement
设为 true
来选择停用。对于以 Android 16 为目标平台的应用,R.attr#windowOptOutEdgeToEdgeEnforcement
已废弃并处于停用状态,并且您的应用无法选择停用全屏显示。
如需在 Android 16 Beta 版 2 中进行测试,请确保您的应用支持边到边,并移除对 R.attr#windowOptOutEdgeToEdgeEnforcement
的任何使用。如需支持边到边,请参阅 Compose 和 View 指南。如有疑虑,请在反馈页面上通过问题跟踪器与我们联系。
予測型「戻る」に移行またはオプトアウトが必要
Android 16 以降をターゲットとし、Android 16 以降のデバイスで実行されるアプリの場合、予測型「戻る」システム アニメーション(ホームに戻る、タスク間、アクティビティ間)はデフォルトで有効になっています。また、onBackPressed
は呼び出されず、KeyEvent.KEYCODE_BACK
はディスパッチされなくなります。
アプリが「戻る」イベントをインターセプトしていて、予測型「戻る」にまだ移行していない場合は、サポートされている「戻る」ナビゲーション API を使用するようにアプリを更新するか、アプリの AndroidManifest.xml
ファイルの <application>
タグまたは <activity>
タグで android:enableOnBackInvokedCallback
属性を false
に設定して、一時的にオプトアウトします。
Elegant フォント API の非推奨と無効化
以 Android 15(API 级别 35)为目标平台的应用的 elegantTextHeight
TextView
属性默认设置为 true
,从而将紧凑字体替换为更易于阅读的字体。您可以通过将 elegantTextHeight
属性设置为 false
来替换此设置。
Android 16 弃用了 elegantTextHeight
属性,并且在您的应用以 Android 16 为目标平台后,系统会忽略该属性。这些 API 控制的“界面字体”即将停用,因此您应调整所有布局,以确保以阿拉伯语、老挝语、缅甸语、泰米尔语、古吉拉特语、卡纳达语、马拉雅拉姆语、奥里亚语、泰卢固语或泰语呈现一致且可持续的文字。

elegantTextHeight
属性设置为 false
而替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight
行为。
elegantTextHeight
属性设置为 false
来替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight
行为。コア機能
Android 16 には、Android システムのさまざまなコア機能を変更または拡張する次の変更が含まれています。
固定レートの勤務スケジュールの最適化
在以 Android 16 为目标平台之前,如果 scheduleAtFixedRate
因不在有效的进程生命周期内而错过了任务执行,则当应用返回到有效的生命周期时,所有错过的执行会立即执行。
以 Android 16 为目标平台时,当应用返回到有效的生命周期时,系统会立即执行最多 1 次未执行的 scheduleAtFixedRate
执行。此行为变更预计会提升应用性能。在您的应用中测试此行为,检查您的应用是否受到影响。您还可以使用应用兼容性框架并启用 STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
兼容性标志进行测试。
デバイスのフォーム ファクタ
Android 16 では、大画面デバイスに表示されるアプリについて、次の変更が加えられています。
アダプティブ レイアウト
Android アプリは、さまざまなデバイス(スマートフォン、タブレット、折りたたみ式デバイス、デスクトップ、自動車、テレビなど)と大画面のウィンドウ モード(分割画面やデスクトップ ウィンドウなど)で実行されるため、デベロッパーは、デバイスの向きに関係なく、あらゆる画面とウィンドウ サイズに適応する Android アプリを構築する必要があります。画面の向きやサイズ変更の制限などのパラダイムは、今日のマルチデバイスの世界では制限が厳しすぎます。
画面の向き、サイズ変更、アスペクト比の制限を無視する
Android 16 をターゲットとするアプリの場合、Android 16 では、システムが向き、サイズ変更、アスペクト比の制限を管理する方法が変更されています。最小幅が 600dp 以上のディスプレイでは、この制限は適用されなくなります。また、アプリは、アスペクト比やユーザーが選択した画面の向きに関係なく、ディスプレイ ウィンドウ全体に表示されます。ピラーボックス表示は使用されません。
この変更により、新しい標準のプラットフォーム動作が導入されます。Android は、アプリがさまざまな画面の向き、表示サイズ、アスペクト比に適応することが期待されるモデルに移行しています。固定の画面の向きやサイズ変更の制限などの制約は、アプリの適応性を妨げるため、可能な限り優れたユーザー エクスペリエンスを提供するために、アプリを適応性のあるものにすることをおすすめします。
この動作は、[アプリ互換性フレームワーク][a16-kilo-14] を使用して UNIVERSAL_RESIZABLE_BY_DEFAULT
互換性フラグを有効にすることでもテストできます。
一般的な破壊的変更
向き、サイズ変更、アスペクト比の制限を無視すると、一部のデバイスでアプリの UI に影響する可能性があります。特に、縦向きでロックされた小さなレイアウト用に設計された要素に影響する可能性があります。たとえば、レイアウトの引き伸ばし、画面外のアニマーションやコンポーネントなどの問題が発生する可能性があります。アスペクト比や画面の向きについて想定すると、アプリの視覚的な問題が発生する可能性があります。これらの問題を回避し、アプリの適応型動作を改善する方法について詳細をご覧ください。
デバイスの回転を許可すると、アクティビティの再作成が増え、適切に保存されない場合、ユーザーの状態が失われる可能性があります。UI の状態を正しく保存する方法については、UI の状態を保存するをご覧ください。
実装の詳細
次のマニフェスト属性とランタイム API は、大画面デバイスで全画面モードとマルチウィンドウ モードの両方で無視されます。
screenOrientation
resizableActivity
minAspectRatio
maxAspectRatio
setRequestedOrientation()
getRequestedOrientation()
screenOrientation
、setRequestedOrientation()
、getRequestedOrientation()
の次の値は無視されます。
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
ディスプレイのサイズ変更に関しては、android:resizeableActivity="false"
、android:minAspectRatio
、android:maxAspectRatio
は効果がありません。
Android 16 をターゲットとするアプリの場合、デフォルトでは、大画面でアプリの向き、サイズ変更、アスペクト比の制約は無視されますが、完全に準備ができていないすべてのアプリは、オプトアウトすることでこの動作を一時的にオーバーライドできます(これにより、互換モードに置かれるという以前の動作になります)。
例外
Android 16 の画面の向き、サイズ変更、アスペクト比の制限は、次の状況では適用されません。
- ゲーム(
android:appCategory
フラグに基づく) - ユーザーがデバイスのアスペクト比設定でアプリのデフォルトの動作を明示的に有効にしている
sw600dp
より小さい画面
一時的にオプトアウトする
特定のアクティビティをオプトアウトするには、PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
マニフェスト プロパティを宣言します。
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
アプリの多くの部分が Android 16 に対応していない場合は、アプリケーション レベルで同じプロパティを適用して、完全にオプトアウトできます。
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
健康&フィットネス
Android 16 では、健康とフィットネスのデータに関連する次の変更が加えられています。
健康とフィットネスの権限
Android 16 以降をターゲットとするアプリの場合、BODY_SENSORS
権限は、ヘルスコネクトでも使用される android.permissions.health
のきめ細かい権限に移行されます。以前 BODY_SENSORS
または BODY_SENSORS_BACKGROUND
を必要としていた API には、対応する android.permissions.health
権限が必要になります。これは、次のデータ型、API、フォアグラウンド サービス タイプに影響します。
- Wear ヘルスサービスから
HEART_RATE_BPM
- Android Sensor Manager の
Sensor.TYPE_HEART_RATE
- Wear
ProtoLayout
のheartRateAccuracy
とheartRateBpm
FOREGROUND_SERVICE_TYPE_HEALTH
:BODY_SENSORS
の代わりに、それぞれのandroid.permission.health
権限が必要
アプリがこれらの API を使用している場合は、それぞれ詳細な権限をリクエストする必要があります。
- 心拍数、血中酸素ウェルネス、皮膚温の使用中のモニタリングの場合:
android.permissions.health
で詳細な権限をリクエストします(BODY_SENSORS
ではなくREAD_HEART_RATE
など)。 - バックグラウンド センサーへのアクセスの場合:
BODY_SENSORS_BACKGROUND
ではなくREAD_HEALTH_DATA_IN_BACKGROUND
をリクエストします。
これらの権限は、健康、フィットネス、ウェルネス データ用の Android データストアである ヘルスコネクトからのデータの読み取りアクセスを保護する権限と同じです。