재귀적인 계층 적 레이아웃을 구축 중입니다.재귀 적으로 삽입 된 레이아웃을 최적화하는 방법은 무엇입니까?
이<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/toggleReplies"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_expand_replies" />
<LinearLayout
android:id="@+id/replies"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
자바 코드에서, 나는이 레이아웃 항목을 팽창하고 응답로를 포함 : 여기 내 message_with_replies.xml이다 (I 명확한 아이디어를 만들기 위해 정렬 속성과 일부 항목을 삭제했습니다) 부모의 레이아웃하고 아이들과 함께이 작업을 반복, 그래서 그들은 나무 형성 : 모든 보이는 내가 최상위 수준 또는 상단에서 2 ~ 3 단계에있을 때 잘 수행
root item
- child 0 of root
- - child 0 of child 0 of root
- - child 1 of child 0 of root
- - - child 0 of child 1 of child 0 of root
- child 1 of root
- child 2 of root
- child 3 of root
- - child 0 of child 3 of root
을하지만, 내가 갈수록 레이아웃은 느리고 느리게 반응합니다. 감속은 비선형이며, 약 7 또는 8의 깊이에서 UI가 완전히 멈 춥니 다 (에뮬레이터는 약 30 분 동안 생각한 후에 예외를 발생시킵니다).
분명히 문제는 삽입 된 레이아웃입니다. 나는 상대적 레이아웃에 선형 레이아웃을 포함 시키므로, 새로운 계층 구조는 UI 레이아웃과 관련하여 두 가지 추가 임베딩을 의미합니다.
최적화하는 방법?
선형 레이아웃을 제거하려고 할 수는 있지만 문제가 해결되지 않을 것으로 예상되지만 더 깊은 레벨로만 지연됩니다. 왜냐하면 여전히 포함시킬 것이기 때문입니다.
다른 레이아웃으로 하위 항목을 부 풀리면 일반적으로 계층 구조를 평평하게 유지할 수 있습니까? 아이템을 부 풀린 다음 콘테이너없이 내용물을 가져갈 수 있습니까?
추가 : 나는이 문제를 해결했습니다. 이제 마진을 사용하여 트리를 만들었으므로 레이아웃이 포함되지 않고 UI가 멈추지 않습니다. 모든 것이 잘 보이고 잘 작동합니다.
그러나 원래 질문은 아직 답변되지 않았습니다.
*와 함께 제공되는 평면 뷰 계층 구조는 실제로 원래 질문에 대한 유효한 대답입니다. 원래의 질문은 "나는이 매우 비싼 작업을 수행하고 있는데 어떻게 최적화 할 수 있습니까?"라고 바꿔 말할 수 있습니다. 때로는 정답은 "일을 덜하십시오"입니다. 너무 많은 레이아웃 레이어를 사용하면 Android에서 항상 비용이 많이 듭니다. – kabuko