Jetpack Compose はすぐに使える優れたパフォーマンスを提供します。よくある問題を回避し、Compose アプリケーションのパフォーマンスを最適化できるように、ベスト プラクティスに従ってアプリを構成します。
主要なコンセプト
Compose のパフォーマンスに関する主なコンセプトは次のとおりです。
- フェーズ: Compose が UI を更新する方法を最適化するには、コンポジション、レイアウト、描画のフェーズを理解することが不可欠です。
- ベースライン プロファイル: これらのプロファイルは重要なコードをプリコンパイルします。これにより、アプリの起動が高速化され、操作がよりスムーズになります。
- 安定性: アプリの安定性を高め、不要な再コンポーズをより効率的にスキップし、パフォーマンスを向上させます。
アプリを適切に構成する
アプリのパフォーマンスが低い場合は、構成に問題がある可能性があります。まず、次の構成オプションを確認することをおすすめします。
- R8 を使用してリリースモードでビルドする: アプリをリリースモードで実行してみます。デバッグモードは多くの問題の検出に役立ちますが、パフォーマンス コストがかかり、他の問題を特定するのが困難になる可能性があります。また、リリースビルドのパフォーマンスと効率性を高めるため、R8 コンパイラを使用して最適化と圧縮を有効にする必要があります。
- ベースライン プロファイルを使用する: ベースライン プロファイルは、クリティカル ユーザー ジャーニー用にコードをプリコンパイルすることでパフォーマンスを改善します。Compose にはデフォルト プロファイルが含まれていますが、アプリ固有のプロファイルを作成することが理想的です。ベースライン プロファイルの詳細については、Android のパフォーマンスに関する一般的なドキュメントをご覧ください。
ツール
Compose アプリのパフォーマンスの測定と分析に役立つ一連のツールに慣れておく。
ベスト プラクティス
Compose を使用してアプリを開発する場合は、次のベスト プラクティスを念頭に置いてください。
- コストの高い計算を避ける:
remember
を使用して、コストの高い計算の結果をキャッシュに保存します。 - 遅延レイアウトに関するヘルプ:
key
パラメータを使用して遅延レイアウトに安定したキーを提供し、不要な再コンポーズを最小限に抑えます。 - 不要な再コンポーズを制限する: 状態が急速に変化する場合は、
derivedStateOf
を使用して再コンポーズを制限します。 - 状態の読み取りを延期する: ラムダ関数で状態の読み取りをラップすることで、状態の読み取りを可能な限り延期します。
- 状態の変更にラムダ修飾子を使用する: 頻繁に変化する状態変数には、
Modifier.offset { ... }
などのラムダベースの修飾子を使用します。 - 後方書き込みを避ける: コンポーザブルですでに読み取られた状態には書き込まないでください。
詳しくは、ベスト プラクティス ガイドをご覧ください。
回視聴
Compose ではなくビューを使用する場合は、専用のレイアウト パフォーマンスの改善ガイドをご覧ください。
その他のリソース
- アプリのパフォーマンス ガイド: Android でのパフォーマンスを向上させるためのベスト プラクティス、ライブラリ、ツールを確認できます。
- パフォーマンスの検査: アプリのパフォーマンスを検査します。
- ベンチマーク: アプリのパフォーマンスをベンチマークします。
- アプリの起動: アプリの起動を最適化します。
- ベースライン プロファイル: ベースライン プロファイルについて理解します。