Observable.timer(10,TimeUnit.SECONDS).subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
@Override
public void onNext(Long aLong) {
@Override
public void onError(Throwable e) {
@Override
public void onComplete() {
Observable.timer(10,TimeUnit.SECONDS).subscribe(new Observer<Long>() { @Override public void onSubscribe(Disposable d) { } ...
rx.Observable.create(new rx.Observable.OnSubscribe() {
@Override
public void call(Subscribersuper Long> subscriber) {
Long cur = System.currentTimeMillis();
项目进行的过程中有个需求是在20秒内每秒请求一次数据,请求成功的json中有个字段,如果有这个字段代表请求成功,如果没有则继续请求,直到20秒结束,20秒结束则失败本来最开始采用countDownTimer来做,很简单就搞定了,但是项目引进了rxjava,那肯定得用rxjava试一试啊
好东西不能错过
直接上代码,并不难class FourthActivity : BaseTitleActivi
Android-Rxjava 常用操作符
1.应用场景 延时执行操作 默认是子线程 可以通过observeOn 切换的是观察者的执行线程
Observable.just(1).delay(2000,TimeUnit.MILLISECONDS)
// .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Object>() {
@Override
public void a
implementation "io.reactivex.rxjava3:rxjava:3.0.4"
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
2、具体代码如下:
//点击按钮,开始倒计时
public void startTimeClick(View view) {
* start: 开始数值
* count:
RxJava 的 debounce 操作符会过滤掉在一段时间间隔之内发射的所有数据项。 具体来说,如果在这段时间内有多个数据项发射,那么 debounce 操作符将只发射最后一个数据项。
source.debounce(time, TimeUnit.MILLISECONDS);
使用示例:
Observable.create((ObservableOnSubscribe<Integer>) emitter -> {
for (int i = 0; i < 10; i++) {
emitter.onNext(i);
Thread.sleep(i * 100);
emitter.onComplete();
}).debounce(500, TimeUnit.MILLISECONDS)
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
@Override
public void onNext(Integer integer) {
Log.e("onNext", "onNext:" + integer);
@Override
public void onError(Throwable e) {
@Override
public void onComplete() {
结果: 只发射最后一个数据项
onNext:5
onNext:6
onNext:7
onNext:8
onNext:9