android - kotlin 中的 "object"是否被垃圾收集

标签 android kotlin object garbage-collection singleton

如果我们有一个这样的对象

object Repo { var activeMovies: ArrayList<Movie>? = null }

然后我们这样调用它来赋值

Repo.activeMovies = movieList

在实例化它的 Activity 完成后,它是否得到垃圾收集

我知道这可能是一个非常基本的问题,但我无法理解 objectKotlin 中的生命周期。

最佳答案

如果我们像这样创建一个对象:

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。初始化发生在一个静态 block 。在 Java 中,静态 block 在类加载时执行。 Test 类的实例是在类加载器加载该类的那一刻创建的。这种方法保证了延迟加载线程安全。单例对象的实例保存在该对象类内的静态字段中。因此它不符合垃圾收集的条件。 Test 是一个Singleton,其生命周期与应用程序的生命周期一样长。

这里有一些关于静态变量 Android static object lifecyclestatic variable null when returning to the app 的有用信息。

关于android - kotlin 中的 "object"是否被垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052761/

相关文章:

android - Recyclerview 不保留我的滚动位置

javascript - 向现有js对象添加多个属性

android - Stripe 连接安卓

android - ScrollView 不使用包含 Android 中动态内容的 LinearLayout 滚动

java - 注入(inject)构造函数和伴生对象

gradle - Kotlin 构建导致 JVM 段错误

Java战舰使用arraylist : comparing user input to array list

c# - 从抽象类型对象数组访问特定子类的对象

Java Android 处理程序递归上存在空点问题

android - 如何在 React Native 中构建调试 apk