假设我有一个实现接口I的Activity A.我的ViewModel类(VM)拥有一个实现接口I的对象的引用:
class A extends Activity implements I{
...
onCreate(){
mViewModel.setI(this);
}
}
class B extends ViewModel {
private I iRef;
...
}
如果活动A销毁,GC会收集活动对象吗?或者,由于ViewMode类中的接口引用,对象将不符合GC的条件?
更新 在我的项目中,所有VM存储在某个VMHolder类中以快速将其分配给视图(活动),因此VM对象在活动销毁时不会销毁。
答案 0 :(得分:2)
如果活动A销毁,GC会收集活动对象吗?
是的,只要I iRef
不是static
且未在某个线程中使用,您的活动及其中的所有对象就有资格进行垃圾回收
由于ViewMode中的接口引用,对象将不符合GC的条件 上课?
不,mViewModel
对象的生命周期较短或取决于活动的生命周期,因此当活动对象死亡时,所有成员也将死亡,垃圾收集不会出现问题