variable studio lateinit example ejemplo databinding data android variables android-activity

studio - global variable kotlin android



variable estática pública o use el método putExtra de clase intención (2)

Aquí tengo una pregunta general sobre el rendimiento, y ¿cuál debo hacer y cuál no debería usar? De hecho, estoy usando en mi aplicación dos actividades, vamos a llamar a la actividad "primero" y "segundo".

En la primera actividad tengo un objeto público estático, en mi caso, es una lista de un objeto personalizado creado por mí, llamado Conjunción.

Cuando llamo a la segunda actividad deseo obtener el contenido de esta lista. Entonces, ¿debería usar la variable pública estática? ¿Hay algún problema? Solo habrá una instancia de la primera actividad, ¿verdad? Entonces no hay problema usando la variable estática pública ..? Supongo.

¿O debería calcular la lista completa y poner la información en una cadena grande y enviarla a la segunda actividad usando el método putExtra?

Una buena explicación sobre esto sería muy buena y realmente lo apreciaría :)


No se recomienda usar variables estáticas. Las variables estáticas se almacenan en una sección PermGen del montón. Incluso si la clase termina, funciona, las variables estáticas permanecen en el montón. El recolector de basura marca y barre. Si tiene variables estáticas en la primera actividad a la que se hace referencia en la segunda actividad, el enlace permanece largo. Es posible que tenga pérdidas de memoria si usa más variables estáticas. También reduce el uso de objetos innecesarios.

Las variables estáticas son referenciadas por los objetos de Clase a los que hace referencia ClassLoaders; a menos que el ClassLoader deje de lado la Clase de alguna manera o que el ClassLoader sea elegible para la recolección de basura, las variables estáticas no serán recolectadas. Por lo tanto, si utiliza variables estáticas referenciadas en muchas clases, esas clases y aquella en la que se declaran las variables estáticas no se pueden recolectar como basura, a menos que esas clases estén disponibles para la recolección de basura. Por lo tanto, esto lleva a la expansión de memoria de pila que conduce a pérdidas de memoria.

Recomiendo usar puExtra para tipos de primitivos. En su caso, usar singleton debería ayudar.

En este video, el chico habla sobre por qué no se deben usar variables estáticas y cómo evitar fugas de memoria. http://www.youtube.com/watch?v=_CruQY55HOk . El chico habla sobre el uso de MAT Analyzer para verificar si hay pérdidas de memoria.

También eche un vistazo a este enlace. http://developer.android.com/guide/faq/framework.html. Consulte los detalles en el encabezado * ¿Cómo paso datos entre Actividades / Servicios dentro de una sola aplicación?


público estático no es una buena idea. La actividad "theFirst" puede ser terminada por el sistema en algunos casos. Reciba: El ciclo de vida de la actividad puede ayudarlo a cómo funciona la actividad.

Mejor use putExtra no como una cadena, sino también mire putExtra para objeto Parselable o Serializable. ver aquí para serializable