Flex アプリのパフォーマンスを改善するための非常によく知られた事実は、入れ子になったコンテナーの量を減らすことですが、これを行うのは特に難しいように思えます。
私はモバイルアプリを開発していますが、実行時に一部のコンポーネントのサイズを変更するのが非常に遅くなります (コンポーネントをフルスクリーンに切り替えて元に戻すことができます)。それほど複雑ではないコンポーネントは、目立った遅延なしで即座にサイズ変更されます。これは、すべてのコンポーネントで私が望んでいることです。
次のコンポーネントを想定してみましょう (もちろん簡略化されており、一部のグループはそれ自体がコンポーネントですが、ネスト レベルは非常に正確です)。
<VGroup "the component's base">
// I guess this is fine
<HGroup "the component's title bar">
<SkinnableContainer "title bar skin">
<title bar components, labels etc. />
</SkinnableContainer>
</HGroup>
<HGroup "options bar that has switchable components">
<button />
<array "holds 'views' for the options bar that can be switched">
<HGroup "one option view">
<option view contents, labels etc. />
</HGroup>
<HGroup "another option view">
<option view contents, labels etc. />
</HGroup>
</array>
<button />
</HGroup>
基本的なコンポーネントのレイアウトは以上です。オプションバーを最適化できるかどうかはわかりません.2つのボタンは、ボタンの間に配置されるコンテンツを切り替えるために使用されるため、上部HGroup
. 配列内のコンポーネントも水平方向に整列する必要があるため、子HGroup
s. これは、このコンポーネントのネスト レベル 3 に達しており、それ自体が既にレベル 3 のコンテナーになっています (私のナビゲーションによる)。
コンポーネントのコンテンツ領域へ。
<Group "this is the content area">
// this group needs two different layouts (vertical and horizontal) that
// are switched based upon the user's choice of having the component maximised
// or minimised
<layouts />
// this list changes it's size based on the selected layout
<List />
this group also changes it's size based on the layout
<VGroup>
<scroller>
// the group here holds a large label that needs to be scrollable
<group>
</scroller>
<HGroup>
<some basic components like `SkinnableContainer` and `Label` />
</HGroup>
</VGroup>
</Group>
そして、それは私の最悪のパフォーマンス(レイアウトのサイズ変更が賢明)コンポーネントのレイアウトであり、タグを閉じています...
</VGroup>
...これで完了です。
大きな問題ですが、これを最適化する余地はありますか? もしそうなら、どこから始めればよいですか?明らかに、レイアウト マネージャーは、レイアウトの切り替えプロセス中にかなりの量を計算する必要があります。残念ながら、これはモバイル アプリであるため、このアプリをさまざまなプラットフォームと解像度で動作させる必要があるため、絶対的なサイズで作業することはできません。したがって、すべてのグループには相対的なサイズが割り当てられており、通常は幅と高さの両方で 100% です。 .
これを合理化したいのですが、どこから始めればよいのかわかりません。私ができることのヒントはありますか?