【发布时间】:2015-11-06 16:00:48
【问题描述】:
我正在使用 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 的踪迹。
任何帮助将不胜感激。
【问题讨论】:
-
你能告诉我们来源,api.getConfiguration(),api.getSettings()吗?
-
api只是一个 Retrofit 接口所以没有。 -
什么版本的改造?
-
我正在使用 Retrofit - 1.9.0、RxJava 1.0.14 和 RxAndroid 1.0.0。
标签: memory-leaks retrofit rx-java rx-android leakcanary