android布局太深導致的 java.lang.StackOverflowError

來源:互聯網
上載者:User

標籤:

E/AndroidRuntime( 1900): java.lang.StackOverflowError 
E/AndroidRuntime( 1900):     at android.graphics.Canvas.drawText(Canvas.java:1269) 
E/AndroidRuntime( 1900):     at android.text.Layout.draw(Layout.java:337) 
E/AndroidRuntime( 1900):     at android.widget.TextView.onDraw(TextView.java:4006) 
E/AndroidRuntime( 1900):     at android.view.View.draw(View.java:6057) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1545) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.View.draw(View.java:6060) 
E/AndroidRuntime( 1900):     at android.view.View.buildDrawingCache(View.java:5823) 
E/AndroidRuntime( 1900):     at android.view.View.getDrawingCache(View.java:5661) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1481) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.widget.AbsListView.dispatchDraw(AbsListView.java:1322) 
E/AndroidRuntime( 1900):     at android.widget.ListView.dispatchDraw(ListView.java:2841) 
E/AndroidRuntime( 1900):     at android.view.View.draw(View.java:6164) 
E/AndroidRuntime( 1900):     at android.widget.AbsListView.draw(AbsListView.java:2169) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1545) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.View.draw(View.java:6060) 
E/AndroidRuntime( 1900):     at android.widget.FrameLayout.draw(FrameLayout.java:352) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1545) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.drawChild(ViewGroup.java:1543) 
E/AndroidRuntime( 1900):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1281) 
E/AndroidRuntime( 1900):     at android.view.View.draw(View.java:6060) 
E/AndroidRuntime( 1900):     at android.widget.FrameLayout.draw(FrameLayout.java:352) 
E/AndroidRuntime( 1900):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2038) 
E/AndroidRuntime( 1900):     at android.view.ViewRoot.draw(ViewRoot.java:1233) 
E/AndroidRuntime( 1900):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1042) 
E/AndroidRuntime( 1900):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1502) 
E/AndroidRuntime( 1900):     at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 1900):     at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 1900):     at android.app.ActivityThread.main(ActivityThread.java:3972) 
E/AndroidRuntime( 1900):     at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 1900):     at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime( 1900):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
E/AndroidRuntime( 1900):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:543) 
E/AndroidRuntime( 1900):     at dalvik.system.NativeStart.main(Native Method) 
I/Process (  833): Sending signal. PID: 1900 SIG: 3

 

解決方式:減少布局嵌套層數,特別是用到類似tabHost,ViewPager的控制項時,要考慮到最底層的 activity 的

contentView的布局,盡量簡化,多用RelativeLayout替代LinearLayout

 

同樣再最佳化列表滑動效率的時候,簡化item布局也能帶來巨大的體驗提升

android布局太深導致的 java.lang.StackOverflowError

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.