我正在构建一个非常复杂的布局,它代表以下结构:
它具有以下布局 XML:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/Button01"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.1"
android:text="L" />
<Button
android:id="@+id/button2"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="M" />
<Button
android:id="@+id/Button03"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.1"
android:text="R" />
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="--------------------" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="100"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/Button05"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.1"
android:text="L" />
<Button
android:id="@+id/Button02"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="M" />
<Button
android:id="@+id/Button04"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.1"
android:text="R" />
</LinearLayout>
</LinearLayout>
现在我需要像这样嵌套这块:
该结构在过去更加复杂,由于调用堆栈大小为 8/16 KB,导致第 3 个嵌套级别的堆栈溢出。当前布局可以处理 12 个嵌套级别而不会溢出,但测量时间非常高(ANR 也是),因为我使用的是嵌套权重:
以毫秒为单位测量时间:从父母到孩子
2000 1950 970 1200 500 500 240 245 135 120 70 70 35 45 21 15 8 8 4 3 1 1 0.3 0.01
- 有没有办法进一步扁平化层次结构?
- 有没有办法摆脱嵌套的权重?
- 在单独的线程中测量并同时显示一个等待圈-> 如何?
- 从单独的线程调用 parent.addView 并在一个线程中完成整个工作以防止堆栈溢出......这将出现在 12 个嵌套级别之外的某个地方。如何实施?这里已经提到过:Android:增加调用堆栈大小