rxjava-无限重复定时任务

开启任务

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 (final long delay) {
if (subscribe != null) {
subscribe.unsubscribe();
subscribe = null;
}
subscribe = Observable.timer(delay, TimeUnit.MILLISECONDS)
.flatMap(new Func1<Long, Observable<GetSomeThingResult>>() {
public Observable<GetSomeThingResult> call(Long aLong) {
//接口调用
return Api.getDefaultApi().getSomeThing();
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<GetSomeThingResult>() {
public void onCompleted() {
}
public void onError(Throwable e) {
ToastUtils.showCustomBgToast(getString(R.string.no_net_text) + e.toString());
getAllDatas(Constants.AUTO_REFRESH_DURATION);
}
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
protected void onDestroy() {
super.onDestroy();
try {
if (subscribe != null && !subscribe.isUnsubscribed()) {
subscribe.unsubscribe();
}
} catch (Exception e) {
e.printStackTrace();
}
}