動作の変更点: Android 16 以上をターゲットとするアプリ

これまでのリリースと同様、Android 16 には、アプリに影響する可能性がある動作変更が含まれています。下記の動作変更は、Android 16 以上をターゲットとするアプリにのみ適用されます。アプリが Android 16 以上をターゲットとする場合は、必要に応じてアプリを変更し、下記の動作に適切に対応できるようにしてください。

アプリの targetSdkVersion に関係なく、Android 16 で実行されるすべてのアプリに影響する動作変更のリストも必ずご確認ください。

ユーザー エクスペリエンスとシステム UI

Android 16 には、より一貫性があり直感的なユーザー エクスペリエンスを実現するための以下の変更が含まれています。

エッジ ツー エッジのオプトアウトの廃止

Android 15 enforced edge-to-edge for apps targeting Android 15 (API level 35), but your app could opt-out by setting R.attr#windowOptOutEdgeToEdgeEnforcement to true. For apps targeting Android 16, R.attr#windowOptOutEdgeToEdgeEnforcement is deprecated and disabled, and your app can't opt-out of going edge-to-edge.

For testing in Android 16 Beta 2, ensure your app supports edge-to-edge and remove any use of R.attr#windowOptOutEdgeToEdgeEnforcement. To support edge-to-edge, see the Compose and Views guidance. Let us know about concerns in our issue tracker on the feedback page.

予測型「戻る」に移行またはオプトアウトが必要

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 控制的“界面字体”即将停用,因此您应调整所有布局,以确保以阿拉伯语、老挝语、缅甸语、泰米尔语、古吉拉特语、卡纳达语、马拉雅拉姆语、奥里亚语、泰卢固语或泰语呈现一致且可持续的文字。

对于以 Android 14(API 级别 34)及更低版本为目标平台的应用,或者对于通过将 elegantTextHeight 属性设置为 false 而替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight 行为。
对于以 Android 16 为目标平台的应用,或者对于未通过将 elegantTextHeight 属性设置为 false 来替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight 行为。

コア機能

Android 16 には、Android システムのさまざまなコア機能を変更または拡張する次の変更が含まれています。

固定レートの勤務スケジュールの最適化

Prior to targeting Android 16, when scheduleAtFixedRate missed a task execution due to being outside a valid process lifecycle, all missed executions immediately execute when the app returns to a valid lifecycle.

When targeting Android 16, at most one missed execution of scheduleAtFixedRate is immediately executed when the app returns to a valid lifecycle. This behavior change is expected to improve app performance. Test this behavior in your app to check if your app is impacted. You can also test by using the app compatibility framework and enabling the STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS compat flag.

大画面とフォーム ファクタ

Android 16 では、大画面デバイスに表示されるアプリについて、次の変更が加えられています。

アダプティブ レイアウト

Android アプリは、さまざまなデバイス(スマートフォン、タブレット、折りたたみ式デバイス、デスクトップなど)と大画面のウィンドウ モード(分割画面やデスクトップ ウィンドウなど)で実行されるため、デベロッパーは、デバイスの向きに関係なく、あらゆる画面とウィンドウ サイズに適応する Android アプリを構築する必要があります。画面の向きやサイズ変更を制限するようなパラダイムは、今日のマルチデバイスの世界では制限が厳しすぎます。

画面の向き、サイズ変更、アスペクト比の制限を無視する

Android 16 をターゲットとするアプリの場合、Android 16 では、システムが向き、サイズ変更、アスペクト比の制限を管理する方法が変更されています。最小幅が 600dp 以上のディスプレイでは、この制限は適用されなくなります。また、アプリは、アスペクト比やユーザーが選択した画面の向きに関係なく、ディスプレイ ウィンドウ全体に表示されます。ピラーボックス表示は使用されません。

この変更により、新しい標準のプラットフォーム動作が導入されます。Android は、アプリがさまざまな画面の向き、表示サイズ、アスペクト比に適応することが期待されるモデルに移行しています。固定の画面の向きやサイズ変更の制限などの制約は、アプリの適応性を妨げるため、可能な限り優れたユーザー エクスペリエンスを提供するために、アプリを適応性のあるものにすることをおすすめします。

アプリの互換性フレームワークを使用して UNIVERSAL_RESIZABLE_BY_DEFAULT 互換性フラグを有効にすることで、この動作をテストすることもできます。

一般的な破壊的変更

向き、サイズ変更、アスペクト比の制限を無視すると、一部のデバイスでアプリの UI に影響する可能性があります。特に、縦向きでロックされた小さなレイアウト用に設計された要素に影響する可能性があります。たとえば、レイアウトの引き伸ばし、画面外のアニマーションやコンポーネントなどの問題が発生する可能性があります。アスペクト比や画面の向きについて想定すると、アプリの視覚的な問題が発生する可能性があります。これらの問題を回避し、アプリの適応型動作を改善する方法について詳細をご覧ください。

デバイスの回転を許可すると、アクティビティの再作成が増え、適切に保存されない場合、ユーザーの状態が失われる可能性があります。UI の状態を正しく保存する方法については、UI の状態を保存するをご覧ください。

実装の詳細

次のマニフェスト属性とランタイム API は、大画面デバイスで全画面モードとマルチウィンドウ モードの両方で無視されます。

screenOrientationsetRequestedOrientation()getRequestedOrientation() の次の値は無視されます。

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

ディスプレイのサイズ変更に関しては、android:resizeableActivity="false"android:minAspectRatioandroid: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、フォアグラウンド サービス タイプに影響します。

アプリがこれらの API を使用している場合は、それぞれ詳細な権限をリクエストする必要があります。

これらの権限は、健康、フィットネス、ウェルネス データ用の Android データストアである ヘルスコネクトからのデータの読み取りアクセスを保護する権限と同じです。