我有一个其实例由Java创建的类(通过GetInstance
)。
该类在其构造函数中订阅了一个observable。
我无法控制实例的生命周期,也无法知道何时不再需要实例,所以我不能只是取消订阅。
由于订阅了可观察对象,因此我的实例从不进行垃圾收集。
因此,我想以一种不会阻止垃圾收集的方式订阅可观察对象。 有可能吗?
这是我尝试过的方法,但是我不确定如何验证它是否确实应做的事情:
class WeakConsumer implements Consumer<ObsType> {
private final WeakReference<MyType> ref;
public WeakConsumer(WeakReference<MyType> ref) { this.ref = ref; }
@Override
public void accept(ObsType value) throws Exception {
MyType instance = ref.get();
if(instance != null) {
// Do something
}
}
}
在MyType
类中:
obs.subscribe(new WeakConsumer(new WeakReference<>(this)));
这项工作会按预期进行吗?