Android Do you know how many layers will be crash after the interface layout is nested?

Source: Internet
Author: User

Let's put a picture of hierarchy Viewer first: (Simulator Android4.4)

See the number 6, the relativelayout is mainactivity root viewgroup, and before relativelayout there are 5 layers, that is, the system default interface Decorview (framelayout)-- LinearLayout--framellayout-->actionbaroverlaylayout--and Contentframelayout.

Directly say the result, with the simulator in API19 that is Android4.4 on the maximum can be nested 39 layers, including the system default 5 layer, it is said that we can write the maximum 34 layers of nesting.

When the number of nesting layers reaches 40, the times are the following exceptions,

10-27 11:38:53.901 25582-25582/com.aquarius.customview e/androidruntime:fatal exception:main Process: Com.aquarius.customview, PID:25582Java.lang.StackOverflowError At Android.util.pools$synchronizedpool.acquire (pools.java:154) at Android.view.GLES20RecordingCanvas.ob Tain (Gles20recordingcanvas.java:43) at Android.view.GLES20DisplayList.start ( Gles20displaylist.java:61) at Android.view.View.getDisplayList (view . Java:13323) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.ViewGroup.dispatchDraw (V Iewgroup.java:2940) at Android.view.View.getDisplayList (view . Java:13357) at Android.view.View.getDisplayList (view . Java:13404) at Android.view.View.draw (view.java:14182) at Android.view.ViewGroup.drawChild (view Group.java:3103) at Android.view.View
View Code


The number of nesting layers on API23 Android6.0 can be more, experiment more than 40 layers still no crash

As for the specific version below 4.4, I did not test, and Android Open source major mobile phone manufacturers may modify the logic. However, due to the problem of backward compatibility, still should not nest too many layers,

When you write a layout hierarchy over 10 layers, you should consider optimizing the layout, because even if the application is not crash due to too many nesting, it can cause too much rendering time, which affects the smoothness of the UI.

Android Do you know how many layers will be crash after the interface layout is nested?

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.