淮阴网站建设,公司部门解散调岗不同意有赔偿吗,做原型网站,搭建网站架构是什么意思最近新作的项目上线#xff0c;出现了一个让人抓狂的问题。在此记录一下#xff01; 现在的项目中#xff0c;制作了一个界面非常复杂。整个结构是最外层一个Layout#xff0c;封装了Menu键吊起的菜单#xff0c;整个内容使用一个FrameLayout装载#xff0c;这个layout中… 最近新作的项目上线出现了一个让人抓狂的问题。在此记录一下 现在的项目中制作了一个界面非常复杂。整个结构是最外层一个Layout封装了Menu键吊起的菜单整个内容使用一个FrameLayout装载这个layout中会有三个V4 Fragment。一个主Fragment和两个弹出的Fragment。主Fragment中分上中下结构上部分展示图片中部展示信息下部分是一个可滑动的带4个Tab的ViewPager这个ViewPager包在一个TabHost里面。整个嵌套的结构由于各种原因达到了15层并且在最里面的ViewPager中有两个View里面带了ListViewItem已经用RelativeLayout打平为一层。 这样一个布局在3.0以上的手机上都表现良好问题但是在2.x的手机上会出现 Android 2.3 Im getting a StackOverflowError when the layout is drawn: at android.view.View.draw(View.java:6880) at android.view.ViewGroup.drawChild(ViewGroup.java:1646) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) at android.view.View.draw(View.java:6883) at android.view.ViewGroup.drawChild(ViewGroup.java:1646) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) ... 栈溢出问题。各种谷歌之后发现很多人在2.x上也会有这个问题究其原因就是View的层次嵌套过多而2.x上Android给UI主线程分配了大概8KB的栈空间。大概最多只会有60到80层的stack frame。这个空间存储不了我的这个布局后分析发现由于最里层嵌套了Listview 每个Item都有很深而且每个Item在不断的进行着重绘。最终导致了2.x机型的栈溢出问题。 大部分的方法就是优化布局减少嵌套。 和网上说的一样接下来就是不断的优化能减极简。但是到最后优化到评论的listview的层次大概为16层在部分的android 2.x上依旧报这个问题。如果要继续优化下去就得去掉fragment。因为在观看布局时发现v4包的fragment会在最外层添加一个NosavestateFramelayout。而我用到的是Fragment中嵌套了Fragment这就导致平白无故多了两层。如果要保持我现在的布局就得考虑去掉Fragment全部改用View。但是项目紧张根本来不及切换过来。于是只能进行降级。 当然还有一些比较不太优雅的解决方式 比如在你最深层次容易爆崩溃的View中把所有的View都重写Draw方法 privateHandler mHandler newHandler(); Overridepublicvoid draw(Canvas canvas){try{super.draw(canvas);}catch(StackOverflowError e){ mHandler.postDelayed(newRunnable(){publicvoid run(){ invalidate();}},1);}} 虽然最好的方法仍然是去优化你的布局解嵌套不仅能加快页面渲染速度还能解决此问题。但是实在是没有任何可优化的时候只能先使用这种比较脏的方式。我最后使用的是进行了降级因为项目紧张而且不容有失所以降级成了最保险的选择。对于2.x系统这种强加的限制表示真的是太蛋疼了 The stack size of UI thread in Android 2.x is 12KB and in Android 4.x is 16KB. These 4KB make all the difference - since the above layout crashes on 2.x with StackOverflow. 对于嵌套过深的地方尤其当有listview时一定要注意能去fragment就去掉fragment尽量直接换用ViewGroup 转载于:https://www.cnblogs.com/xgjblog/p/4268264.html