uso studio quitar que for eliminar dummies constraintlayout constraint codelab cambiar and android android-layout relativelayout android-constraintlayout

android - studio - quitar constraint layout



ConstraintLayout Vs RelativeLayout & CardView-Espacio de caché y memoria (3)

He desarrollado una aplicación que recupera datos de json a la base de datos local en dispositivos móviles y los muestra desde una base de datos local con RecyclerView , y el diseño de mi contenedor es el siguiente:

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:focusable="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="end" android:layout_gravity="end" android:id="@+id/detailContainerLayout" android:baselineAligned="true" android:background="@drawable/border_bottom" > <TextView android:id="@+id/article_title" style="@style/TextAppearance.AppCompat.Subhead" android:layout_width="220dp" android:layout_height="wrap_content" android:paddingLeft="5dp" android:paddingTop="2dp" android:layout_marginRight="9dp" android:layout_marginLeft="4dp" android:textColor="@color/buttons_background" android:fontFamily="sans-serif-condensed" android:maxLines="2" android:textSize="@dimen/text_main" android:layout_gravity="end" android:gravity="start" android:layoutDirection="rtl"/> <TextView android:id="@+id/article_date" style="@style/TextAppearance.AppCompat.Body1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="8dp" android:paddingRight="9dp" android:textColor="@color/textColor" android:maxLines="1" android:layout_gravity="end" android:gravity="end" android:textSize="@dimen/date_size" android:layout_marginTop="8dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:layout_gravity="center_horizontal|bottom" android:gravity="center_horizontal|bottom" android:layout_marginTop="10dp" > <TextView android:id="@+id/article_place" style="@style/TextAppearance.AppCompat.Body1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/textColor" android:layout_gravity="start|bottom" android:gravity="start|bottom" android:layout_weight="1.1" android:maxLines="1" android:fontFamily="sans-serif" android:paddingBottom="5dp" android:layoutDirection="rtl" android:layout_marginRight="3dp" /> <TextView android:id="@+id/article_placeIcon" style="@style/TextAppearance.AppCompat.Body1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/textColor" android:maxLines="1" android:layout_gravity="start|bottom" android:gravity="start|bottom" /> <TextView android:id="@+id/article_subtitle" style="@style/TextAppearance.AppCompat.Body1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/textColor" android:maxLines="1" android:layout_gravity="start|bottom" android:gravity="start|bottom" android:layout_weight="1.4" android:fontFamily="sans-serif" android:layout_marginRight="3dp" android:paddingBottom="5dp" android:layoutDirection="rtl" /> <TextView android:id="@+id/article_subtitleICON" style="@style/TextAppearance.AppCompat.Body1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/textColor" android:maxLines="1" android:layout_gravity="start|bottom" android:gravity="start|bottom" android:fontFamily="sans-serif" android:layout_marginRight="9dp" android:paddingBottom="5dp" android:layoutDirection="rtl" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="100dp" android:layout_height="80dp" android:gravity="start|bottom" android:layout_gravity="start|bottom" > <elryad.harajsooq.ActionbarContent.AllAds.ui.DynamicHeightNetworkImageView android:id="@+id/thumbnail" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/photo_placeholder" android:layout_gravity="start|bottom" /> </LinearLayout>

Entonces, cuando utilicé CardView o RelativeLayout como contenedor para mis artículos, mi caché de aplicación y uso de memoria son muy altos, mis DATOS eran de 20 MB y Mi CACHE tenía 50 MB más, pero después cambié el diseño del contenedor a ConstraintLayout.

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:clickable="true" android:focusable="true" android:background="@drawable/border_bottom"> <TextView android:id="@+id/article_title" style="@style/TextAppearance.AppCompat.Subhead" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginRight="5dp" android:layout_marginTop="-10dp" android:gravity="right" android:fontFamily="sans-serif-condensed" android:maxLines="1" android:paddingLeft="5dp" android:paddingTop="2dp" android:textColor="@color/buttons_background" android:textSize="@dimen/text_main" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toRightOf="@+id/thumbLayout" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <items .... ....> </android.support.constraint.ConstraintLayout>

los datos y la memoria caché volvieron a un estado normal y a un tamaño pequeño como se muestra a continuación:

No sé qué pasó con CardView o RelativeLayout que hace que los datos y el caché de mi aplicación ocupen mucho espacio ... quizás alguien pueda explicar eso. Gracias por adelantado.


Intenta borrar la matriz almacenada y otras que utilizas en las vistas, también borra la variable y todo lo que hayas inicializado. Porque podría ser necesario espacio para eso. Intente borrar en el retroceso o cuando no tenga uso.


El diseño complejo, incluido LinearLayout anidado, tendrá más Object creados durante la representación. ConstraintLayout es un diseño plano para reducir esos gastos generales.


El diseño de Contraint tiene

Corrección de errores de izquierda a derecha (los parámetros de diseño se almacenaban en caché, lo que evitaba que los cambiara en tiempo de ejecución)

Mejoras de rendimiento en el primer diseño

El soporte de proporción se extendió para funcionar cuando ambas dimensiones están configuradas en MATCH_CONSTRAINT (0dp). Este trato con el caso cuando una dimensión está restringida y desea definir la otra dimensión como una relación.

Así que definitivamente tienes estos incrementos de rendimiento en el diseño de restricciones, por lo que es mejor usarlo en lugar de diseño relativo.

intenta descubrir más aquí