技術者にとって、多くの場合、やり方がわからないのではなく、何をすべきかわからないのです?今日は、その方法についていくつかの経験を集めました。 Android アプリケーションを最適化します。合計 8 つの次元です。
#1. レイアウトの最適化
Android システムは、UI のレンダリングをトリガーするために 16 ミリ秒ごとに VSYNC 信号を送信します。スムーズなインターフェイスを実現するには、60fps である必要があります。これは、ほとんどの操作を 16 ミリ秒以内に完了する必要があることを意味します。
上記のインターフェイスが複雑すぎてレンダリングが時間内に完了しないことに加えて、過剰描画の問題もあります。オーバー描画と呼ばれるのは、特定のピクセルが同じフレーム内で複数回描画されることを意味します。マルチレベル UI インターフェイスでは、非表示の UI も描画されている場合、これらの重複領域のピクセルが複数回描画されるため、無駄が発生します。大量の CPU および GPU リソース。背景が重なっている場合にもオーバードローが発生します。たとえば、レイアウトには独自の背景があり、サブビューには独自の背景があります。
HierarchyViewer を使用して、アクティビティのレイアウトが複雑すぎますか?を確認します。
開発者向けオプションで [GPU オーバードローの表示] オプションを開いて、オーバードローがあるかどうかを観察します。
開発者で、オプションで [GPU レンダリングのプロファイル] を選択し、バーとして [画面上] を選択します。
TraceView を使用して CPU を観察します。実行
なぜですか?リソースは常に限られており、メモリはもリソースです。Android では、メモリ リソースの過度/不適切な占有により、アプリケーションが頻繁に強制終了され、最終的には全体的なユーザー エクスペリエンスにも影響します。開発者はメモリの節約を念頭に置く必要があります。
##LeakCanary を使用する
メモリをアクティブに解放し、onLowMemory() および onTrimMemory() でメモリを適切に解放します。
音楽プレーヤー クラスなどの複数プロセスの合理的な使用は、メイン プロセスと再生プロセスに分けることができます。
使用する場合は、境界付きキューを考慮してください。非同期キュー
HashMap のサイズが明確にわかっている場合は、初期化中にその容量を設定します
3. バッテリーの最適化
バッテリーはモバイル デバイスにとって非常に貴重なリソースです。開発者として、ユーザーのことを考えて消費電力を削減する必要がある 調査によると、通常、インターフェイスのレンダリングなどプログラムのコア機能で消費される電力は 30% 程度で、残りの 70% はレポート データで消費されます、位置情報の更新、バックグラウンド通知。
電話オプションでアプリの消費電力統計を表示します
Battery Historian ツールを使用して詳細な消費電力を表示します
画面を起動する回数を減らします。持続時間に応じて、WakeLock を正しく使用してください。
ログのレポートなど、必須ではない操作を充電状態まで遅らせる場合、夜間充電中に完了します。JobScheduler と組み合わせて使用できます
センサーを使用してデータを収集する場合は、必要がなくなったら必ず登録をキャンセルしてください。
ネットワーク通信を削減し、通信を統合します。
測位機能を合理的に使用し、位置更新の頻度を減らし、実際の状況に応じて異なる精度の測位要件を使用します
4. ネットワークの最適化
#5. 最適化を開始します##なぜですか?
Systrace を使用する (onCreate に Trace.beginSection() および trace.endSection()
を追加するなど)使用 adb shell am start -W [パッケージ名]/[パッケージ名.MainActivity]
コールド スタート時間を測定する
アクティビティの onCreate() での複雑で時間のかかる操作を削減します。
アプリケーションの onCreate()、attachBaseContext () も複雑で時間のかかる操作を軽減しますが、多くのアプリでは、コンポーネントとサービスの多数の初期化操作がここで実行されます。可能であれば、並列初期化を検討してください。テーマを設定して起動ウィンドウとして画像を表示するなど、起動ウィンドウをカスタマイズします。
レイアウトの最適化
理由?
##最適化する方法は?##Reduce不要な依存ライブラリ/Jar を削除し、ニーズを満たしながら小さいライブラリ/Jar を優先します。
#対応する解像度の画像を選択的に提供しますリソース
既存の画像を再利用します。主にコードを通じて既存の画像を変換します。
プラグイン テクノロジを使用します (プロジェクトが単純な場合は使用しないでください)
を使用できます。自分の能力を 100% 発揮する場合は、次のことを行ってください。そのうちの 50% だけを使用するわけではありません。これはアプリケーションにとって悪いことではありません。2 台の車が同じ価格でユーザーに販売された場合、ほとんどの人はよりパフォーマンスの高い方を選択すると思います。
Android Studio の [分析] -> [コードの検査] で、Lint を使用して静的分析を実行します。
ターン開発者向けオプションで StrictMode をオンにするか、コードでオンにします
Android を使用して、HashMap の代わりに ArrayMap を使用するなど、より効率的なコンテナを提供します。さらに、SparseBoolMap、SparseIntMap、SparseLongMap があります
各製品のビジネスは同じではないため、一般的な最適化計画を立てるのは困難です。考慮に値するさらに 2 つの目標があります:
可能であれば、シリアル ビジネス並列化
可能であれば、ビジネス プロセスを簡素化します。象を冷蔵庫に入れる方法は、冷蔵庫を開け、象を中に入れ、最後に冷蔵庫を閉めることです。
ビジネスの最適化が最後に置かれる根本的な理由は、ビジネスの最適化には高いリスクがあり、完了するにはチーム全体の協力が必要であるためです。
Android には画像のカラー形式が 4 つあります。
##デフォルトは です。 ARGB_8888<span style="font-size:14px;"></span>
, ここで、ARGB はそれぞれ透明度、赤、緑、青を表し、各値は 8 ビットで記録されます。つまり、1 ピクセルは 4 バイト、合計 32 ビットを占有します。 AndARGB_4444<span style="font-size:14px;"></span>
は上記と非常によく似ていますが、各値は 4 ビットで記録されます。つまり、1 ピクセルは合計 2 バイトを占有します。 16ビットの。 RGB_565<span style="font-size:14px;"></span>
は、5 ビット、6 ビット、および 5 ビットを使用して各値を記録します。透明度はなく、各ピクセルは 2 バイトを占めます。合計 16 ビット ALPHA_8<span style="font-size:14px;"></span>
: このピクセルは透明度のみを保存し、1 バイト、合計 8 ビットを占有します。 実際のアプリケーションでは、ARGB_8888<span style="font-size:14px;"></span>
および RGB_565<span style="font-size:14px;"></span># を使用することをお勧めします # #、透明性が必要ない場合は、
RGB_565<span style="font-size:14px;"></span> を選択してください。これにより、メモリ使用量が半分に削減されます。
[おすすめコース:
以上がAndroidアプリ最適化事典についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。