Rendimiento: ViewGroup with Children VS. Vista personalizada

Estoy desarrollando una aplicación con muchas vistas personalizadas y he tenido problemas de rendimiento con una muy compleja de ellas. El tiempo que toman para medir y dibujar es alto (> = 30ms típico). Para dar algunos más detalles: Es un ViewGroup personalizado (extendiendo RelativeLayout ) con vistas personalizadas (extendiendo RelativeLayout aunque) como son los niños.

Así que me encontré con mi mente lo que podría ser el mejor / más rápido enfoque para deshacerse de este problemas de rendimiento: Optimizar los niños y los diseños o cambiar a una vista completamente dibujado a medida (líneas, rectángulos y cosas como estas)?

¿Alguno de ustedes tiene experiencia en uno u otro? ¿O incluso algunos hicieron algunos puntos de referencia y está dispuesto a compartirlos?

El enfoque simple sería trabajar en simplificar y aplanar la jerarquía de vista actual y tal vez usted será capaz de hacer el proceso de medición y dibujo mucho más barato (o decente por lo menos). No has publicado un diseño por lo que no hay algo específico que decir, que he visto mencionó RelativeLayouts en RelativeLayouts , tal vez podría quitar uno y mover las vistas hasta un nivel (incluso con el gasto de añadir otras vistas de ayuda) , Cada nivel cuenta (especialmente con nesting RelativeLayouts ). Usted probablemente ya lo sabe, pero la merge y la include etiquetas en los diseños podría resultar muy útil.

RelativeLayout estar en el SDK estándar se construyó como un widget general por lo que muy probablemente no puede lograr el rendimiento de un diseño personalizado. Tendría mucho más sentido hacer que tus diseños actuales extendieran RelativeLayout para extender ViewGroup e implementar la medición y el diseño de los niños manualmente, especialmente como probablemente sabes los escenarios de casos de uso en tus aplicaciones (por ejemplo, un RelativeLayout siempre tiene que manejar toda la restricción de tamaño Casos que podría estar en su diseño personalizado por otro lado podría manejar esto mucho más rápido si sabes que la vista personalizada tendrá un cierto tamaño).

Relacionado con una vista dibujada totalmente personalizada , es una opción, pero depende de la complejidad de su diseño.

¿O incluso algunos hicieron algunos puntos de referencia y está dispuesto a compartirlos?

No veo cómo los varios puntos de referencia de la visión (que muy probablemente no se aplicarán a su situación específica) ayudarán.

  • ObjectAnimator con la propiedad scale hace bg black?
  • Listview dentro de un ViewPager con SlidingTabLayout - Problemas de altura
  • Cómo agregar un marcador pin en la vista de la imagen en android
  • Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
  • Cómo detener Android ViewFlipper de bucle?
  • ¿Es posible llamar manualmente onCreateView en un fragmento?
  • System.gc () provocando una desaceleración desde el segundo inicio de la Actividad
  • Estilo oficial de la semana del despertador oficial de Android
  • Android: inversión de peso extraño en LinearLayout
  • Android: Añadir fragmentos con android.R.id.content
  • View.getContext devuelve null, ¿por qué?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.