我在RxAndroid中使用了Retrofit 2,我希望在配置更改期间保持请求。我认为我可以用Observable.cache()
这样做,如this blog post和我见过的其他人所描述的那样,但以下流程导致InterruptedException
。是否有可能重新订阅改造2可观察?
Observable<Result<List<Post>>> request =
postService.index(page).cache();
Subscription subscribeOne = request.subscribe();
subscribeOne.unsubscribe();
Subscription subscribeTwo = request.subscribe();
我敢肯定,在改装源下面的代码是负责取消的请求时unsubscribe
被调用。
// Attempt to cancel the call if it is still in-flight on unsubscription.
subscriber.add(Subscriptions.create(new Action0() {
@Override public void call() {
call.cancel();
}
}));
不取消订阅可以使所有的工作,但这可能会导致泄漏。有没有人设法通过Retrofit 2处理配置更改?我可以使用不同的方法吗?
看到这是如何在活动环境中发挥作用,考虑到潜在的内存泄漏,必须在活动破坏后坚持主体/观察性等等。 – AndroidEx
我只是在这个阶段真正尝试,但我有一个保留片段与演示者的“WeakHashMap”。在关闭活动时,主题取消订阅,并且主讲人为GC'd。但是,我不认为用户在请求期间返回会取消请求。保留片段的'onDestroy()'中的某种关闭代码可能是解决方案的一部分。 – Jimeux