弱势订阅Observable

时间:2019-07-03 13:13:36

标签: java rx-java2

我有一个其实例由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)));

这项工作会按预期进行吗?

0 个答案:

没有答案