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í