代码之家  ›  专栏  ›  技术社区  ›  Vlad Morzhanov

如果ViewModel持有该活动实现的接口引用,GC会收集活动引用吗?

  •  1
  • Vlad Morzhanov  · 技术社区  · 7 年前

    假设我有实现接口i的活动A。我的ViewModel类(VM)在实现接口i的对象上持有一个引用:

    class A extends Activity implements I{
      ...
      onCreate(){
        mViewModel.setI(this);
      }
    }
    
    class B extends ViewModel {
       private I iRef;
       ...
    }
    

    更新: 在我的项目中,所有虚拟机都存储在一些VMHolder类中,以便快速将其分配给视图(活动),所以当活动被破坏时,虚拟机对象不会被破坏。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Pavneet_Singh    7 年前

    如果活动A破坏,GC会收集活动对象吗?

    是的,只要 I iRef 不是 static 如果没有在某些线程中使用,那么您的活动和其中的所有对象都可以进行垃圾收集

    由于ViewMode中的接口引用,对象将不符合GC 班

    不,寿命 mViewModel