Android布局嵌套太多层会Crash

Home / Android new software 2017-10-28 3820

我们先放一张Hierarchy Viewer的图:(模拟器Android4.4)

看到数字6了吗,那个RelativeLayout是MainActivity的根ViewGroup, 而在RelativeLayout之前还有5层, 即系统默认的界面DecorView(FrameLayout) --> LinearLayout --> FramelLayout-- >ActionBarOverlayLayout --> ContentFrameLayout.

 直接说结果吧,用模拟器在API19  也就是Android4.4 上最大可以嵌套39层,包含系统默认的5层,也就说我们最大可以写34层的嵌套。

当嵌套层数达到40层时报如下异常,

FATAL EXCEPTION: main Process: com.aquarius.customview, PID: 25582 java.lang.StackOverflowError

在API23 Android6.0上嵌套层数可以更多,实验了四十多层还依旧没有crash

至于具体低于4.4的版本是什么样的结果,我并没有测试,且Android开源各大手机厂商可能会修改逻辑。不过考虑到向下兼容的问题,还是不应该嵌套太多层数,

当自己写的布局层级超过10层的时候就该考虑优化布局了,因为即使应用不因为嵌套的太多而crash,也会造成渲染时间过长等问题,影响UI流畅度。

 

特别声明:如果转载,请保留出处信息,感谢您的关注和推荐!!


本文链接:https://www.it72.com/12277.htm

推荐阅读
最新回复 (0)
返回