2017-03-02 7 views
0

ネストされたレイアウトサンプル:Androidのネストされたレイアウトで最も時間のかかる部分は何ですか?

<FrameLayout> 
<FrameLayout> 
    <FrameLayout> 
    ...(almost 100 for example) 
    <FrameLayout/> 
<FrameLayout/> 
<FrameLayout/> 

フラットレイアウトサンプル:

<FrameLayout> 
    <FrameLayout/> 
    <FrameLayout/> 
    ...(almost 100 for example) 
<FrameLayout/> 
  • Q1:1がより速くなります
  • Q2:?のために最も時間のかかる部分は何ですか遅いですか?

答えて

0

Q1:2番目のサンプルは、より少ないレベルels。

documentation

パフォーマンスがレイアウト作り、むしろ狭くて深いよりも、レイアウトが浅く広いを平坦化することにより向上することがあります。

Q2:

典型的には、フレームワークは、単一パスで、非常に迅速にレイアウトまたは測定段階を実行します。しかし、より複雑なレイアウトの場合、最終的に要素を配置する前に、複数のパスを解決する必要がある階層の部分に対して、フレームワークを複数回反復する必要があります。複数のレイアウトとメジャーの繰り返しを実行することは、二重課税と呼ばれます。

したがって、基本的にレイアウトが多ければ複雑になり、二重課税を受ける機会は増えます。

documentation

0

第二ケースは、少なくとも理論的には、良好であるべきです。

深いビュー階層に問題がViewGrouponLayoutonMeasureは通常、あなたがRelativeLayout.onMeasureためのコードをチェックするとView秒、おそらく複数回(子供たちのすべてを反復しなければならないということである、例えば、あなたが見ることができますそれは何度も起こるかもしれない)。今度は、ViewGroupがすべてその子を少なくとも2回反復し、その子のそれぞれがそれ自身の子のすべての子を少なくとも2回繰り返すと、ビュー階層の反復の総量は指数関数的に増加します。

これ

はまた、あなたが好む理由です FrameLayout可能な場合、その位置のメカニズムは非常に簡単で、それが何回も反復する必要がないので、その子 View

のすべて
関連する問題