我正在使用 RxJava 的 Observable.zip 方法将两个 API 调用组合成一个结果。出于某种原因,尽管我取消了订阅,但我还是遇到了内存泄漏。我不确定这是否是我的错误,或者我是否需要创建 Observable。
protected void onCreate(Bundle bundle) {
...
subscription = Observable.zip(
api.getConfiguration(),
api.getSettings().map(r -> r.getData()),
new Func2<ConfigurationResponse, List<Datum>, Struct>() {
@Override
public Struct call(ConfigurationResponse config, List<Datum> data) {
return new Struct(data, config.getCopy(), config.getSettings());
}
}
)
.compose(Schedulers.applyApiSchedulers())
.subscribe(
struct -> {
configurationManager.set(struct.data, struct.copy, struct.settings);
startNextActivity();
},
error -> {
startNextActivity();
}
);
}
protected void onDestroy() {
if (!subscription.isUnsubscribed()) {
subscription.unsubscribe();
}
}
这是来自 Leak Canary 的踪迹。
任何帮助,将不胜感激。