如果我们有这样的 Object
object Repo { var activeMovies: ArrayList<Movie>? = null }
然后我们这样称呼它来分配值
Repo.activeMovies = movieList
实例化它的活动完成之后,它会收集垃圾吗?
我知道这可能是一个非常基本的问题,但是如果object
输入科特林,我将无法理解生命周期。
答案 0 :(得分:4)
如果我们创建这样的对象:
object Test {
// some functions and properties
}
并将其反编译为 Java ,我们将看到下一个代码:
public final class Test {
public static final Test INSTANCE;
static {
Test var0 = new Test();
INSTANCE = var0;
}
}
从反编译的代码中,我们可以看到object
创建了一个 Singleton 。初始化发生在静态块上。在 Java 中,静态块在类加载时执行。 Test
类的实例是在类加载器加载该类时创建的。这种方法可以保证延迟加载和线程安全。单例对象的实例保存在该对象类内的静态字段中。因此,它不符合垃圾收集的条件。 Test
是 Singleton ,其寿命与应用程序的寿命一样长。
以下是有关静态变量Android static object lifecycle和static variable null when returning to the app的一些有用信息。