1

Hierarchyviewer でタブレット UI を分析していて、測定時間に次のパターンがあることに気付きました (ツリーのベースから開始して上に移動します)。

... ~40 ミリ秒 ... ~80 ミリ秒 ... ~160 ミリ秒 ... ~320 ミリ秒 ... ~640 ミリ秒 ... ~1280 ミリ秒 ...

問題はネストされた重みを持つ LinearLayout であると想定したため、階層全体ですべての LinearLayout と重みを削除しました。今私はこれを持っています:

... ~40 ミリ秒 ... ~80 ミリ秒 ... ~160 ミリ秒 ... ~160 ミリ秒 ... ~160 ミリ秒 ... ~310 ミリ秒 ...

より良いですが、それでも数レベルごとに 2 倍になります。何が原因でしょうか?

このパスの完全な階層は次のとおりです (長すぎることをお許しください...最適化のヒントを私に投げかけてください):

[generated layouts]
 *RelativeLayout [309 ms]
   FrameLayout [164 ms]
    NoSaveStateFrameLayout [160 ms]
    *RelativeLayout [151 ms]
     *RelativeLayout [77 ms]
       ListView [45 ms]
        GridLayout [46 ms]
         Spinner [4.4 ms]
          TextView [0.1 ms]

※視聴時間は2倍

どんなアドバイスでも大歓迎です!前もって感謝します。

TL;DR

ネストされた重み以外に、測定時間が指数関数的に増加する原因は何ですか?

4

2 に答える 2

0

Androidは2パスでレイアウトを構築します。

1つ目は、すべての子供にどのくらいの大きさになりたいかを尋ねるメジャーパスです。次に、親が子供たちに子供たちの大きさを伝え、子供たちに絵を描くように要求すると、レイアウトパスが行われます。

したがって、ViewGroupレベルを追加すると、時間が約2倍になります。これはあなたが与えた例と一致しています。

于 2012-12-12T23:49:32.160 に答える