使用 Reactive Android 拉动刷新时添加更多订阅
Add more Subscription when pull to refresh with Reactive Android
我编写代码从服务器获取数据并显示到列表视图。
而且我还添加了下拉刷新功能。
我想知道我们是否在调用拉动刷新时添加更多订阅,这是最佳做法还是我应该在添加新订阅之前取消订阅?
CompositeSubscription mSubscription = new CompositeSubscription();
private void pullToRefresh() {
Subscription subscription = mMatchingApi.getRequest(new GetRequest(
new GetRequest.Builder().setRequestIds(orderIds)))
.subscribe(new Subscriber<GetRequestResponse>() {
//update list
}
});
mSubscription.add(subscription);
}
我也在onDestroy中清除了订阅
@Override
public void onDestroy() {
if (mSubscription != null) {
mSubscription.clear();
}
}
例如,如果我多次调用函数 pullToRefresh()(两次或三次)。
例如:
result 1 = pullToRefresh();
result 2 = pullToRefresh();
result 3 = pullToRefresh();
那么如果result 1还没完成,result 2先于result 1完成,那么list的数据会显示错误? (显示结果 1 但它应该显示结果 2)
我应该在添加新订阅之前清除订阅 1 吗?
使用单独的 SerialSubscription
只保持最新的请求:
CompositeSubscription mSubscription = new CompositeSubscription();
SerialSubscription mPullRequest = new SerialSubscription();
{
mSubscription.add(mPullRequest); // Stop all requests if mSubscription is unsubscribed
}
private void pullToRefresh() {
/* same code as before */
mPullRequest.set(subscription);
}
关于您的第一个订阅,当您的数据加载并调用 onComplete() 方法时,此订阅会自动取消订阅。
关于下拉刷新,我不知道你是如何实现的,但是例如Android RefreshLayout,禁止调用刷新回调,除非之前的刷新已经结束。所以也许你可以做到。
如果你真的想要有多个刷新事件,那么我建议你取消订阅旧的刷新订阅,如果它存在,然后再创建一个新的。
我编写代码从服务器获取数据并显示到列表视图。 而且我还添加了下拉刷新功能。 我想知道我们是否在调用拉动刷新时添加更多订阅,这是最佳做法还是我应该在添加新订阅之前取消订阅?
CompositeSubscription mSubscription = new CompositeSubscription();
private void pullToRefresh() {
Subscription subscription = mMatchingApi.getRequest(new GetRequest(
new GetRequest.Builder().setRequestIds(orderIds)))
.subscribe(new Subscriber<GetRequestResponse>() {
//update list
}
});
mSubscription.add(subscription);
}
我也在onDestroy中清除了订阅
@Override
public void onDestroy() {
if (mSubscription != null) {
mSubscription.clear();
}
}
例如,如果我多次调用函数 pullToRefresh()(两次或三次)。 例如:
result 1 = pullToRefresh();
result 2 = pullToRefresh();
result 3 = pullToRefresh();
那么如果result 1还没完成,result 2先于result 1完成,那么list的数据会显示错误? (显示结果 1 但它应该显示结果 2) 我应该在添加新订阅之前清除订阅 1 吗?
使用单独的 SerialSubscription
只保持最新的请求:
CompositeSubscription mSubscription = new CompositeSubscription();
SerialSubscription mPullRequest = new SerialSubscription();
{
mSubscription.add(mPullRequest); // Stop all requests if mSubscription is unsubscribed
}
private void pullToRefresh() {
/* same code as before */
mPullRequest.set(subscription);
}
关于您的第一个订阅,当您的数据加载并调用 onComplete() 方法时,此订阅会自动取消订阅。
关于下拉刷新,我不知道你是如何实现的,但是例如Android RefreshLayout,禁止调用刷新回调,除非之前的刷新已经结束。所以也许你可以做到。
如果你真的想要有多个刷新事件,那么我建议你取消订阅旧的刷新订阅,如果它存在,然后再创建一个新的。