如果 ViewModel 持有此 Activity 实现的接口引用,GC 会收集 Activity 引用吗?
Will GC collect Activity reference if ViewModel holds interface reference which this Activity implements?
假设我有 Activity A 实现接口 I。我的 ViewModel class (VM) 持有对实现接口 I 的对象的引用:
class A extends Activity implements I{
...
onCreate(){
mViewModel.setI(this);
}
}
class B extends ViewModel {
private I iRef;
...
}
如果 activity A 销毁,GC 会收集 activity 对象吗?或者由于 ViewMode 中的接口引用,对象将不符合 GC 的条件 class ?
更新:
在我的项目中,所有 VM 存储在一些 VMHolder class 中以快速将其分配给视图(activity),因此当 activity 销毁时 VM 对象不会销毁。
Will GC collect activity object if activity A destroys ?
是的,只要 I iRef
不是 static
并且没有在某些线程中使用,您的 activity 和其中的所有对象都可以进行垃圾回收
Object will be ineligible for GC because of interface reference in ViewMode
class ?
不,mViewModel
对象的生命周期较短或取决于 activity 的生命周期,所以当 activit 的对象死亡时,它的所有成员也死亡,不会有垃圾收集问题
假设我有 Activity A 实现接口 I。我的 ViewModel class (VM) 持有对实现接口 I 的对象的引用:
class A extends Activity implements I{
...
onCreate(){
mViewModel.setI(this);
}
}
class B extends ViewModel {
private I iRef;
...
}
如果 activity A 销毁,GC 会收集 activity 对象吗?或者由于 ViewMode 中的接口引用,对象将不符合 GC 的条件 class ?
更新: 在我的项目中,所有 VM 存储在一些 VMHolder class 中以快速将其分配给视图(activity),因此当 activity 销毁时 VM 对象不会销毁。
Will GC collect activity object if activity A destroys ?
是的,只要 I iRef
不是 static
并且没有在某些线程中使用,您的 activity 和其中的所有对象都可以进行垃圾回收
Object will be ineligible for GC because of interface reference in ViewMode class ?
不,mViewModel
对象的生命周期较短或取决于 activity 的生命周期,所以当 activit 的对象死亡时,它的所有成员也死亡,不会有垃圾收集问题