Android布局嵌套太深导致的错误:StackOverflowError

  Android项目的UI调整,下午调试了很久都不明白的一个错误,debug中报错如下:

  结果问了问XD,他就提出要看我的布局。。

  因为代码是分了好几层叠加在一起的,所以布局文件较多(一层一层找位置add进来的)。。

  然后他就告诉我是因为布局层数太深,就会导致堆栈溢出这样的崩溃。

  我大致算了一下,我的代码几个布局加起来大概有14层左右。然后还有底层其他部分的布局,可想而知。

 

  因为觉得不甘心,所以又写了一个小程序测试一下到底布局嵌套可以有多深。

  新建了一个HelloWorld程序,将布局改为如下:

   

  后面省略。。

  经过实验,加到第22层的时候就崩溃了,报错如下:

  应该跟具体软硬件环境也有关系,用的测试手机是MX 2.3.5的系统。

 

  附上布局文件,如果你也有兴趣试一试。

复制代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第1层" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第2层" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="第3层" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="第4层" />

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="第5层" />

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical" >

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="第6层" />

                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:orientation="vertical" >

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="第7层" />

                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:orientation="vertical" >

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="第8层" />

                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:orientation="vertical" >

                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text="第9层" />

                                    <LinearLayout
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:orientation="vertical" >

                                        <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="第10层" />

                                        <LinearLayout
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:orientation="vertical" >

                                            <TextView
                                                android:layout_width="wrap_content"
                                                android:layout_height="wrap_content"
                                                android:text="第11层" />

                                            <LinearLayout
                                                android:layout_width="wrap_content"
                                                android:layout_height="wrap_content"
                                                android:orientation="vertical" >

                                                <TextView
                                                    android:layout_width="wrap_content"
                                                    android:layout_height="wrap_content"
                                                    android:text="第12层" />

                                                <LinearLayout
                                                    android:layout_width="wrap_content"
                                                    android:layout_height="wrap_content"
                                                    android:orientation="vertical" >

                                                    <TextView
                                                        android:layout_width="wrap_content"
                                                        android:layout_height="wrap_content"
                                                        android:text="第13层" />

                                                    <LinearLayout
                                                        android:layout_width="wrap_content"
                                                        android:layout_height="wrap_content"
                                                        android:orientation="vertical" >

                                                        <TextView
                                                            android:layout_width="wrap_content"
                                                            android:layout_height="wrap_content"
                                                            android:text="第14层" />

                                                        <LinearLayout
                                                            android:layout_width="wrap_content"
                                                            android:layout_height="wrap_content"
                                                            android:orientation="vertical" >

                                                            <TextView
                                                                android:layout_width="wrap_content"
                                                                android:layout_height="wrap_content"
                                                                android:text="第15层" />

                                                            <LinearLayout
                                                                android:layout_width="wrap_content"
                                                                android:layout_height="wrap_content"
                                                                android:orientation="vertical" >

                                                                <TextView
                                                                    android:layout_width="wrap_content"
                                                                    android:layout_height="wrap_content"
                                                                    android:text="第16层" />

                                                                <LinearLayout
                                                                    android:layout_width="wrap_content"
                                                                    android:layout_height="wrap_content"
                                                                    android:orientation="vertical" >

                                                                    <TextView
                                                                        android:layout_width="wrap_content"
                                                                        android:layout_height="wrap_content"
                                                                        android:text="第17层" />

                                                                    <LinearLayout
                                                                        android:layout_width="wrap_content"
                                                                        android:layout_height="wrap_content"
                                                                        android:orientation="vertical" >

                                                                        <TextView
                                                                            android:layout_width="wrap_content"
                                                                            android:layout_height="wrap_content"
                                                                            android:text="第18层" />

                                                                        <LinearLayout
                                                                            android:layout_width="wrap_content"
                                                                            android:layout_height="wrap_content"
                                                                            android:orientation="vertical" >

                                                                            <TextView
                                                                                android:layout_width="wrap_content"
                                                                                android:layout_height="wrap_content"
                                                                                android:text="第19层" />

                                                                            <LinearLayout
                                                                                android:layout_width="wrap_content"
                                                                                android:layout_height="wrap_content"
                                                                                android:orientation="vertical" >

                                                                                <TextView
                                                                                    android:layout_width="wrap_content"
                                                                                    android:layout_height="wrap_content"
                                                                                    android:text="第20层" />

                                                                                <LinearLayout
                                                                                    android:layout_width="wrap_content"
                                                                                    android:layout_height="wrap_content"
                                                                                    android:orientation="vertical" >

                                                                                    <TextView
                                                                                        android:layout_width="wrap_content"
                                                                                        android:layout_height="wrap_content"
                                                                                        android:text="第21层" />

                                                                                    <LinearLayout
                                                                                        android:layout_width="wrap_content"
                                                                                        android:layout_height="wrap_content"
                                                                                        android:orientation="vertical" >

                                                                                        <TextView
                                                                                            android:layout_width="wrap_content"
                                                                                            android:layout_height="wrap_content"
                                                                                            android:text="第22层" />
                                                                                    </LinearLayout>
                                                                                </LinearLayout>
                                                                            </LinearLayout>
                                                                        </LinearLayout>
                                                                    </LinearLayout>
                                                                </LinearLayout>
                                                            </LinearLayout>
                                                        </LinearLayout>
                                                    </LinearLayout>
                                                </LinearLayout>
                                            </LinearLayout>
                                        </LinearLayout>
                                    </LinearLayout>
                                </LinearLayout>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
test_layout.xml
复制代码

  

  建议就是:首先,重新考虑并重写布局。

  其次,再搜索一下布局优化方法之类的。

 

posted @   圣骑士wind  阅读(6221)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示