您当前的位置: 首页 >  Java

Kevin-Dev

暂无认证

  • 0浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- RxJava】RxJava2.0 实践(五),采用 interval 操作符实现轮询操作

Kevin-Dev 发布时间:2019-03-19 17:48:20 ,浏览量:0

前言

本文介绍在 RxJava 2.x 中,采用 interval 操作符实现间隔任务。

效果图

在这里插入图片描述

应用场景

今天,我们介绍一种新的场景,轮询操作。也就是说,我们会尝试间隔一段时间就向服务器发起一次请求,在使用 RxJava 之前,该需求的实现一般有两种方式:

  • 通过 Handler 发送延时消息,在 handleMessage 中请求服务器之后,再次发送一个延时消息,直到达到循环次数为止。
  • 使用 Java 提供的定时器 Timer。
具体实现 1. 添加依赖
	//Butter Knife
    implementation 'com.jakewharton:butterknife:10.2.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'

    //TitleBar
    implementation 'com.github.getActivity:TitleBar:8.6'

    //RxJava
    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
2. 心跳处理之 RxJava 2
/**
 *
 * 心跳处理之 RxJava 2
 *
 * 在 RxJava 2.x 中,采用 interval 操作符实现间隔任务
 *
 */
public class MainActivity extends BaseActivity {
    private static final String TAG = "MainActivity";

    private Disposable mDisposable;

    @BindView(R.id.rx_operators_btn)
    protected Button mRxOperatorsBtn;
    @BindView(R.id.rx_operators_text)
    protected TextView mRxOperatorsText;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {

    }

    @OnClick(R.id.rx_operators_btn)
    public void onViewClicked() {
        mRxOperatorsText.append("\n");
        doSomething();
    }

    private void doSomething() {
        mDisposable = Flowable.interval(1, TimeUnit.SECONDS)
                .doOnNext(new Consumer() {
                    @Override
                    public void accept(@NonNull Long aLong) throws Exception {
                        Log.e(TAG, "accept: doOnNext : "+aLong );
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer() {
                    @Override
                    public void accept(@NonNull Long aLong) throws Exception {
                        Log.e(TAG, "accept: 设置文本 :"+aLong );
                        mRxOperatorsText.append("accept: 设置文本 :"+aLong +"\n");
                    }
                });
    }

    /**
     * 销毁时停止心跳
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mDisposable != null) {
            mDisposable.dispose();
        }
    }
}
关注
打赏
1658837700
查看更多评论
立即登录/注册

微信扫码登录

0.3822s