Androidの最適実践性能(三)性能レイアウトの向上(レイアウトの階層構造の最適化)

4698 ワード

レイアウトの階層構造を最適化する
前の課から次の課へ行く
この授業はあなたに教えます
あなたのレイアウトを確認します.
あなたのレイアウトを変更します.
リントを使うあなたも読むべきです
XMLレイアウトレイアウトリソース基本的な配置構造を用いて最も効率的な配置をもたらすと考えられる一般的な誤解である.しかし、あなたのアプリケーションに追加するには、各ウィンドウのウィジェットとレイアウトを初期化し、レイアウトと描画する必要があります.例えば、使用されている入れ子の例 LinearLayoutは、深度ビューレベルを引き起こす可能性がある.さらに、ネストされた複数の例 LinearLayoutは、このlayout_weightパラメータを使用して、各子供のために2回測定する必要がある場合が特に高い.この点は特に重要であり、レイアウトが繰り返しガス充填されると、 ListViewまたはGridView のように使用される.
本授業では、Herarchy Viewer階層構造ビューアとLayoutt検査とレイアウトの最適化を勉強します.
あなたのレイアウトを確認します
Android SDKにはツールHurarchy Viewerという階層構造ビューアが含まれています.あなたのアプリケーションであなたのレイアウトを分析できます.このツールを使うと、レイアウトの性能のボトルネックを発見するのに役立ちます.
階層構造ビューアの動作原理は、実行中のプロセスに接続されたデバイスまたはエミュレータを選択して、ツリーを表示させることです.信号の各ブロックは、その計量、レイアウト、グラフィック性能を表しています.潜在的な問題を識別するのに役立ちます.
例えば、図1は、プロジェクトとしての会社のレイアウト ListViewを示している.このレイアウトは、右側の左とテキストの2つの重複したアイテムの小さなビットマップ画像を表示します.これは特に重要な配置で,何度も空気を充填し,このように最適化された性能優勢は倍に増加する.
図1.概念レイアウトの項目はListView です.hierarchyviewerツールは、  <SDK> / /.開くと、階層構造ビューアは、利用可能なデバイスとその動作するコンポーネントのリストを表示します.クリック ビューの階層を読み込み、選択したコンポーネントのレイアウトレベルを表示します.例えば、図2は、図1に示すリスト項目のレイアウトを示している.
図2は、図1のレイアウトビュー階層構造において使用される入れ子の例 LinearLayoutである.
図3です.階層構造のノードをクリックして、その性能時間を表示します.
図2では、いくつかの問題がテキスト項目の3層構造を打ち立てているのを見ることができます.クリックした項目は、撮影したプロセスの各段階(図3)の時間を表示します.どの項目が一番長い時間をかけて測定され、レイアウトとレンダリングされているのかが分かります.そこでは時間をかけて最適化するべきです.
このレイアウトを使って、完全なリスト項目を表示します.
措置:0.977 ms レイアウト:0.677 ms 抽選:2.177 ms レイアウトを変更します
上のレイアウト性能が遅くなるので、ネスト LinearLayoutにより、性能がフラットになって配置が改善される可能性があり、レイアウトが浅くて広くなるので、狭くて深くないです.1つのRelativeLayoutは、ルートノードとしてこのようなレイアウトを可能にする.したがって、このような設計がRelativeLayoutを使用するように変換されると、レイアウトが2層構造になることがわかる.新しいレイアウトチェックはこのように見えます.
図4は、図1のレイアウトビューの階層構造であり、RelativeLayoutを使用する.
現在、レンダリングリスト項目が必要です.
措置:0.988 ms レイアウト:0.10 ms 抽選:2.46 ms 小さな改良のように見えるかもしれませんが、この時間は数倍になります.このようなレイアウトは各項目のリストに使用されます.
このような時間差の多くは、layout_weightを使用した設計によるもので、測定速度を遅くすることができる.どのように配置されているかはそれぞれ用途があります.レイアウトの重さを考慮する必要があるのは例だけです.
Lintを使う
これは常に良い方法です.Lintのレイアウトファイルのツールを実行して、ビューの階層構造の最適化を探します.皮绵はすでにLayouttツールに取って代わられました.もっと强力な机能を持っています.Lintのいくつかの例の規則は以下の通りです.
1つのLinearLayout と1つのLinearLayout と1つのImageView とを含む化合物を使用して、より効果的に1つの化合物として描画することができる.統合ルートフレーム-もし一つのTextView がレイアウトのルートであり、背景や塗りつぶしなどを提供しないなら、統合ラベルに置き換えられてもいいです.それはやや効果的です.無駄な葉-よりフラットで、より効率的なレイアウトレベルを持っています.子供がいないか、あるいは背景がないかは、通常削除されます.無用の親-子供の配置がありますが、兄弟姉妹がありますか?FrameLayout ですか? あるいはルートの配置、1つの背景がなくて、削除されることができて、その子が直接父に移動して1つの更に引き分けして、更に効率的な配置のレベル. ScrollViewまたは
  • - 。 , RelativeLayoutは、 を させます.デフォルトの さは10です.
  • GridLayout

     Lint , Android Eclipse(ADT 16 +)。Lint  APK, XML , PCB 。 Lint  Eclipse 。

    Eclipse ,Lint  , 。 Eclipse ,Lint , 。 , tools.android.com。





    142