Stackoverflow: ¿Causado por vistas anidadas?

Estoy teniendo un accidente cuando refresco una vista dentro de un SlidingTray (SlidingDrawer personalizado que viene desde la parte superior).

No estoy seguro de lo que lo causa … pero mi primera suposición es que es debido al número de diseños anidados …

¿Cuál es el número máximo de diseños anidados?

¿Es específico del dispositivo, cómo puedo estar seguro de si esa es la causa?

Si no lo es, cualquiera de estas cosas lo está causando .. ¿cuál es?

El stacktrace:

E/AndroidRuntime( 2199): FATAL EXCEPTION: main E/AndroidRuntime( 2199): java.lang.StackOverflowError E/AndroidRuntime( 2199): at android.graphics.Paint.measureText(Paint.java:1057) E/AndroidRuntime( 2199): at android.text.Styled.drawDirectionalRun(Styled.java:267) E/AndroidRuntime( 2199): at android.text.Styled.measureText(Styled.java:430) E/AndroidRuntime( 2199): at android.text.Layout.measureText(Layout.java:1655) E/AndroidRuntime( 2199): at android.text.Layout.getLineMax(Layout.java:689) E/AndroidRuntime( 2199): at android.text.Layout.draw(Layout.java:340) E/AndroidRuntime( 2199): at android.text.BoringLayout.draw(BoringLayout.java:365) E/AndroidRuntime( 2199): at android.widget.TextView.onDraw(TextView.java:4168) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6880) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.widget.FrameLayout.draw(FrameLayout.java:357) E/AndroidRuntime( 2199): at android.widget.ScrollView.draw(ScrollView.java:1409) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.buildDrawingCache(View.java:6640) E/AndroidRuntime( 2199): at android.view.View.getDrawingCache(View.java:6428) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1571) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1392) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.widget.FrameLayout.draw(FrameLayout.java:357) E/AndroidRuntime( 2199): at android.widget.ScrollView.draw(ScrollView.java:1409) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6986) E/AndroidRuntime( 2199): at android.widget.FrameLayout.draw(FrameLayout.java:357) E/AndroidRuntime( 2199): at android.widget.HorizontalScrollView.draw(HorizontalScrollView.java:1409) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at com.vodafone.onm.components.SlidingTray.dispatchDraw(SlidingTray.java:426) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.widget.FrameLayout.draw(FrameLayout.java:357) E/AndroidRuntime( 2199): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) E/AndroidRuntime( 2199): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) E/AndroidRuntime( 2199): at android.view.View.draw(View.java:6883) E/AndroidRuntime( 2199): at android.widget.FrameLayout.draw(FrameLayout.java:357) E/AndroidRuntime( 2199): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java) 

UPDATE : Instantánea del Visor de Jerarquía

  • Http://d.pr/kXnp

.

Algunos piensan que creo que están relacionados: http://www.mail-archive.com/android-developers@googlegroups.com/msg48036.html

¿Cuál es el número máximo de diseños anidados?

No hay un valor específico. Se queda sin espacio en la pila cuando se queda sin espacio en la pila, y eso dependerá de lo que esté haciendo. El hilo principal de la aplicación tiene una pila de 8KB, la última vez que escuché.

Dicho esto, si la vista de jerarquía muestra una profundidad de 10 o más (raíz a la hoja más profunda), empiezo a ponerme nerviosa, y para el 15 es probable que comience a correr con excepciones. Su imagen, que es casi ilegible, parece tener una profundidad sustancialmente mayor que eso.

Usted parece tener un número de capas desperdiciadas. Si tiene una capa en la vista de jerarquía, en la ruta crítica, que tiene un padre y un hijo, que es un candidato principal para ser eliminado, ya que puede no agregar ningún valor. Usted tiene al menos 5 de estos candidatos. Incluso la limpieza de todo eso hasta puede no ser suficiente, pero es un punto de partida.

  • La ficha Diseño gráfico no aparece para algunos archivos de diseño en Eclipse
  • Cómo obtener N texto que se puede caber en la pantalla / TextView con un tamaño específico?
  • ScrollView hace invisible un diseño personalizado
  • Android: cómo crear un botón con imagen y texto que están centrados
  • Mutiple fragmentos en un vertical Linearlayout
  • Cómo hacer que RatingBar muestre cinco estrellas
  • Android: Alineación de cuatro cuadrados
  • En Android, ¿cómo configuro los márgenes en dp mediante programación?
  • Androide: pregunta LinearLayout y fill_parent simple
  • ImageView adjustViewBounds no funciona con Disposición relativa
  • Cómo estructurar correctamente mi aplicación de Android, clases, vistas, bases de datos, Made Simple?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.