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.

  • Comportamiento de updateViewLayout extraño
  • Fondo Android + texto + icono para un botón
  • Título de preferencia de Android / estilo de texto de resumen
  • Dibujar círculo en xml en android
  • ¿Cuál es la diferencia entre layout-large-v11 y layout-xlarge
  • ImageView rellena el ancho o altura de los padres, pero mantiene la relación de aspecto
  • Android: Alineación de cuatro cuadrados
  • widgets que faltan en la paleta de diseño gráfico (android en eclipse)
  • Android: agregar botones a un diseño existente mediante programación
  • Android: Añadir un EditText de forma programática cuando se pulsa un botón
  • GetLayoutInflater dentro de la costumbre simpleCursorAdapter
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.