当前位置:编程学习 > wap >>

Android中layout的层级

最近做一个项目过程中发现一个问题,经常报StackOverflowError错误,查找资料后发现是因为布局嵌套层次太多。
因为项目UI比较复杂,我使用了ActivityGroup里面再嵌套TabHost,测试发现目前在其他手机上都没问题,只有在HTC手机某些型号上才会出现StackOverflowError的错误。我将布局精简后就可以在HTC机器上使用了。


难道java或者android中有对布局层级的限制吗?或者对栈空间(不是堆空间)的大小限制? --------------------编程问答-------------------- 嵌入布局最大深度为10!
太多的话根本画的很卡的。
建议你看这篇文章。
http://wiki.eoeandroid.com/Optimizing_Layout_Hierarchies --------------------编程问答--------------------
引用 1 楼 pengliangchina 的回复:
嵌入布局最大深度为10!
太多的话根本画的很卡的。
建议你看这篇文章。
http://wiki.eoeandroid.com/Optimizing_Layout_Hierarchies


这个10是怎么定义出来的呢?是统计的结果,还是Android本来就可以配置?现在在不同手机上嵌套最大层次还是不同的。另外,Android框架还会自动在布局上添加一些层级的 --------------------编程问答-------------------- 有人来回答一下吗?

这个问题好像资料很少啊 --------------------编程问答--------------------
引用 2 楼 AlecVon 的回复:
引用 1 楼 pengliangchina 的回复:嵌入布局最大深度为10!
太多的话根本画的很卡的。
建议你看这篇文章。
http://wiki.eoeandroid.com/Optimizing_Layout_Hierarchies

这个10是怎么定义出来的呢?是统计的结果,还是Android本来就可以配置?现在在不同手机上嵌套最大层次还是不同的。另外,A……

个人认为应该是统计的结果,超过所谓的10层,性能急剧下降,所以被认为陷入深度不超过10 --------------------编程问答-------------------- 统计结果。最好不要超过10.不然,单显示就很慢很慢了。 --------------------编程问答-------------------- 但是有时候对于比较复杂的布局,很难控制的
现在我使用的布局是ActivityGroup里面嵌套TabHost,TabHost里面再放具体的Activity。因为这三个东西添加的时候系统会自动添加PhoneWindow$DecorView——FrameLayout(id/content)——FrameLayout这三层,所以这时候我什么布局都不写就已经有3*3=9层布局了。再随便添加一些自定义的布局,随随便便就十六七层了。远远超过了要求的10层。
而且即使是十几层在一般手机上显示也都没有问题,就是有些手机不太支持
--------------------编程问答--------------------
引用 6 楼 AlecVon 的回复:
但是有时候对于比较复杂的布局,很难控制的
现在我使用的布局是ActivityGroup里面嵌套TabHost,TabHost里面再放具体的Activity。因为这三个东西添加的时候系统会自动添加PhoneWindow$DecorView——FrameLayout(id/content)——FrameLayout这三层,所以这时候我什么布局都不写就已经有3*3=9层布局了……

可以选择relativelayout啊。尽量少嵌入layout,你看android dev里面讲绘图那一章很清楚的说了是如何进行绘图的,布局是要来回计算两次以上才能确定,再一个一个绘制,所以多了会很慢很慢。 --------------------编程问答-------------------- 有谁知道Android中栈空间最大为多少?例如VC中的栈默认就分配2M --------------------编程问答-------------------- 2^10 = 1K字节
2^20 = 1M字节
2^30 = 1G字节

嵌套30层的话,就算每次函数调用只需要一个字节,也最起码总共需要1G字节的栈。所以不能嵌套太多的层。
Android的界面配置太方便灵活了,以至于容易忽略嵌套的层数。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,