RxJava-无限重复定时任务

  1. 1. 开启任务
  2. 2. 取消任务

开启任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private void getAllDatas(final long delay) {

//解除上次订阅
if (subscribe != null) {
subscribe.unsubscribe();
subscribe = null;
}

subscribe = Observable.timer(delay, TimeUnit.MILLISECONDS)
.flatMap(new Func1<Long, Observable<GetSomeThingResult>>() {
@Override
public Observable<GetSomeThingResult> call(Long aLong) {
//接口调用
return Api.getDefaultApi().getSomeThing();
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<GetSomeThingResult>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {
ToastUtils.showCustomBgToast(getString(R.string.no_net_text) + e.toString());
getAllDatas(Constants.AUTO_REFRESH_DURATION);
}

@Override
public void onNext(GetSomeThingResult result) {
//... do some thing with data

getAllDatas(Constants.AUTO_REFRESH_DURATION);
}
});

}

取消任务

1
2
3
4
5
6
7
8
9
10
11
@Override
protected void onDestroy() {
super.onDestroy();
try {
if (subscribe != null && !subscribe.isUnsubscribed()) {
subscribe.unsubscribe();
}
} catch (Exception e) {
e.printStackTrace();
}
}