ネストされた RelativeLayout が多数使用されている場合にパフォーマンスの問題が発生しました。
たとえば、UI ルートとして RelativeLayout があり、すべてのコンテナー (ボタン、ラベル、テキストビュー、イメージビュー) が RelativeLayout + Android ベースのコンポーネント (例: aButton = RelativeLayout + ImageView + TextView) である場合、4 の複雑なビューでボタン、3 つの画像、6 つのラベルで、最大 15 個の入れ子になった RelativeLayouts が得られます。
RelativeLayout には非常に複雑な onMeasure メソッドがあり、すべての子のサイズを計算してレイアウトのサイズを決定します。15 ~ 20 個の入れ子になった RelativeLayouts の複雑なビューのサイズを計算するには、5 秒かかります。これは多すぎます。onMeasure はすべての呼び出しの中で最もコストがかかります。描画は測定よりもずっと速く終了します。<=UPD=>
Android のネイティブ ビューを使用して複雑なものを構築するという提案が表示されないようにする
には、すべてにすべてを追加する機能が必要です。そのため、すべてのコンテナは単なる View ではなく、ViewGroup でなければなりません。また、重力や配置などの RelativeLayout 機能も大いに役立ちます。そのため、多くの RelativeLayout が使用されています。
<=/UPD=>
誰かがこれらのパフォーマンスの問題を抱えていましたか?
RelativeLayout を他のレイアウトに置き換えると問題が解決しますか?
または、これらのネストされたレイアウトをすべて削除することが、問題に対処する唯一の方法ですか?
パフォーマンスの問題が発生することなくネストできるレイアウトの数を知っている人はいますか?