Si tenemos un objeto como este
object Repo { var activeMovies: ArrayList<Movie>? = null }y luego lo llamamos así para asignarle un valor
Repo.activeMovies = movieListdespués de que finaliza la actividad que la instancia, ¿se recolecta la basura ?
Sé que esta puede ser una pregunta muy básica, pero no puedo entender el ciclo de vida si el tipo de object en Kotlin .
Si creamos un objeto como este:
object Test { // some functions and properties }y descompílelo a Java , veremos el siguiente código:
public final class Test { public static final Test INSTANCE; static { Test var0 = new Test(); INSTANCE = var0; } } Desde el código descompilado, podemos ver que el object crea un Singleton . La inicialización ocurre en un bloque estático . En Java , los bloques estáticos se ejecutan en el momento de carga de la clase. La instancia de la clase Test se crea en el momento en que el cargador de clases carga la clase. Este enfoque garantiza la carga diferida y la seguridad de subprocesos . Una instancia de un objeto singleton se mantiene en un campo estático dentro de la clase de ese objeto. Por lo tanto, no es elegible para la recolección de basura. La Test es un Singleton , cuya vida útil es tan larga como la vida útil de una aplicación.
Aquí hay información útil sobre las variables estáticas, el ciclo de vida del objeto estático de Android y la variable estática nula al regresar a la aplicación .