gpt4 book ai didi

java - 如果 ViewModel 持有此 Activity 实现的接口(interface)引用,GC 是否会收集 Activity 引用?

转载 作者:行者123 更新时间:2023-11-29 19:06:31 27 4
gpt4 key购买 nike

假设我有实现接口(interface) I 的 Activity A。我的 ViewModel 类 (VM) 持有对实现接口(interface) I 的对象的引用:

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

class B extends ViewModel {
private I iRef;
...
}

如果 Activity A 销毁了,GC 会回收 Activity 对象吗?或者由于 ViewMode 类中的接口(interface)引用,对象将不符合 GC 的条件?

更新:在我的项目中,所有 VM 都存储在某个 VMHolder 类中,以便快速将其分配给 View ( 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 的生命周期,所以当 Activity 的对象死亡时,它的所有成员也死亡,不会有垃圾问题 Collection

关于java - 如果 ViewModel 持有此 Activity 实现的接口(interface)引用,GC 是否会收集 Activity 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47012726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com