優れたアプリケーションのパフォーマンスを開発することは、すべてのAndroid開発者が通過しなければならない課題です。モバイルエンド前提の限られたリソースでは、アプリケーションのパフォーマンスを向上させる非常に重要です。レイアウトとレンダリングの最適化、メモリの最適化、消費電力の最適化:3のパフォーマンスを向上させるためのAPP共通の方向の最適化。
A:レイアウトの最適化
いわゆるレイアウトの最適化は不要なレイアウトを減らし、ネストされた階層のレイアウトを最小限に抑えることです。主な最適化手法は以下のとおりです。
(1)RelativeLayoutは、好ましくは、レイアウトのネストを減らすかのLinearLayoutを利用するために使用されます。複雑なレイアウトがシンプルなレイアウトのLinearLayoutは、好ましくは、パフォーマンスを向上させるために使用された場合、入れ子にすることなく完了することができRelativeLayoutからです。
(2)標識の使用は、合成レイアウトをマージするためにタグを使用して、再使用レイアウトを含みます。
(3)は、それをロードするために行く前に使用した場合にのみ、動的な負荷を達成するためにViewStubビューを使用します。
(4)不要なレイアウトを削除して、レイアウトを合理化します。
一般的に使用されるレイアウトの最適化ツールは、以下のとおりです。階層ビューアのように。
II:レンダリングの最適化
メインのレンダリングの最適化は、このように画面カトンを減らし、オーバードロー避け、レンダリング速度増加することです。主な最適化手法は以下のとおりです。
レイアウトレベルのレイアウトを最適化することにより減少した(1)は、レイアウトのレンダリングの速度を上げます。
同じフレームの画素が何度も描かれている場合、それは上書き問題(上書き)を有するであろう(2)は、資源の浪費をもたらす、過剰な図面を回避する必要があります。
成功し、60 FPSに作ることができれば、すべての16msのは、(3)システムは、ユーザーが画面カトンを感じていないように、毎回レンダリング、同期信号、UIのレンダリングを送信します。これは、論理的な時間のかかる操作を行うことはできませんonDraw()メソッドが必要です。
描画の最適化一般的に使用されるツールは、以下のとおりです。GPUレンダリングモード解析で開発者向けオプション、デバッグGPUオーバードローように。
3:メモリの最適化
メインメモリの最適化は、メモリリークを避けるためです。一般的なメモリリークは、次のとおりです。
(1)プロパティは静的と定義される静的またはコントロールを使用して
1)アクティビティインスタンスが原因引用のでGCする必要がある場合のインスタンスをもたらす静的部材の長寿命サイクルによるアクティビティアクティビティインスタンスアクティビティクラスへの参照の静的メンバ変数は、回収することができません。溶液をヌルに割り当てられたメンバ変数にonDestroy活性()メソッドです。
コンテキストのアクティビティビューが保持しているためビューは、静的に定義されている場合2)、それはまた、メモリリークが発生します。同時に復旧活動インスタンスの呼び出しonDestroy()メソッドリリースビューのViewソリューション。
(2)非静的内部クラスは、匿名内部クラスはメモリリークが発生します
非static内部クラスと匿名内部クラスのデフォルトに起因するライフサイクルはクラス外内部クラスはメモリリークが発生するよりも長い場合に、外部クラスへの強い参照を保持します。メモリリークの原因このような内部Handlerクラスの一般的な例。静的内部クラスは外側のクラスを参照しないので、内部クラスのための溶液は、静的として定義されます。あなたは、弱い参照を経由して、外部のクラスの内部クラスメンバーにアクセスする場合。
一般的なメモリリーク検出ツール:Leakcanary、MATのように。
3:消費電力の最適化
電力最適化アプリケーションは主に、消費電力を削減するなどの不要なネットワーク要求を減らします。
4:その他の最適化
このようなUIスレッドと同様に時間のかかる操作を避けて、インストールパッケージの量を減らすなど。
5:他の最適化ツール
IDEは、静的コード検出手段で、様々なAndroidMonitor; JDKは次のようにtraceViewが来ます。