If we have an Object like this
object Repo { var activeMovies: ArrayList<Movie>? = null }
and then we call it like this to assign a value
Repo.activeMovies = movieList
after the Activity that instantiated it is finish, does it get Garbage Collected?
I know this may be very basic question but I cannot understand the lifecycle if the object
type in Kotlin.
If we create an object like this:
object Test {
// some functions and properties
}
and decompile it to Java, we will see next code:
public final class Test {
public static final Test INSTANCE;
static {
Test var0 = new Test();
INSTANCE = var0;
}
}
From the decompiled code, we can see that object
creates a Singleton. The initialization happens on a static block. In Java, static blocks are executed on class loading time. The instance of Test
class is created at the moment when the classloader loads the class. This approach guarantees lazy-loading and thread-safety. An instance of a singleton object is kept in a static field inside the class of that object. Therefore it isn’t eligible to the garbage collection. The Test
is a Singleton, whose lifespan is as long as the lifespan of an app.
Here are some useful information about static variables Android static object lifecycle and static variable null when returning to the app.