轻松实现Rxjava定时器功能
2018-06-28 11:28
1066 查看
使用RxJava实现定时器功能可以通过两种方式来实现,具体实现如下:
一、使用 timer 操作符
private Disposable mDisposable; /** * 启动定时器 */ public void startTime() { Observable.timer(10, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Long>() { @Override public void onSubscribe(Disposable d) { mDisposable = d; } @Override public void onNext(Long value) { //Log.d("Timer",""+value); } @Override public void onError(Throwable e) { } @Override public void onComplete() { // TODO:2017/12/1 closeTimer(); } }); } /** * 关闭定时器 */ public void closeTimer(){ if (mDisposable != null) { mDisposable.dispose(); } }
二、使用使用 interval 和 take 操作符
在1.x 中 timer 可以执行间隔逻辑,在2.x中此功能已过时,交给了 interval 操作符,当然只使用 interval 还不能实现定时器功能,必须再结合take 操作符。具体代码如下:
private Disposable mDisposable; /** * 启动定时器 */ public void startTime() { int count_time = 10; //总时间 Observable.interval(0, 1, TimeUnit.SECONDS) .take(count_time+1)//设置总共发送的次数 .map(new Function<Long, Long>() { @Override public Long apply(Long aLong) throws Exception { //aLong从0开始 return count_time-aLong; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Long>() { @Override public void onSubscribe(Disposable d) { mDisposable = d; } @Override public void onNext(Long value) { //Log.d("Timer",""+value); } @Override public void onError(Throwable e) { } @Override public void onComplete() { // TODO:2017/12/1 closeTimer(); } }); } /** * 关闭定时器 */ public void closeTimer(){ if (mDisposable != null) { mDisposable.dispose(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 使用RxJava实现定时器功能
- 用定时器实现逐渐放大层的功能
- WPF程序也可以很轻松的实现类似QQ那样最小化到任务栏的功能。
- springboot实现定时器功能
- jCallout 轻松实现气泡提示功能
- quartz实现定时功能实例详解(servlet定时器配置方法)
- U-Mail缓存功能 轻松实现“内网”邮件系统互联
- 轻松实现Linux下的互联网过滤功能
- 操作系统内核开发:实现定时器功能
- 文件批量上传的工具,要实现暂停继续、断点续传等功能(使用QtNetwork和QHttpMultiPart,和定时器检查超时)
- 使用QRCode轻松实现二维码扫描下载的功能
- boost中的asio实现定时器功能
- 用线程实现定时器功能
- HTML5轻松实现拍照上传功能[转载]
- 响应WM_TIMER实现定时器功能
- Delphi的DLL里如何实现定时器功能?
- 使用Spring framework实现定时器功能
- Linux使用一个定时器实现设置任意数量定时器功能
- jQuery插件timers定时器实现javascrip定时或按钮控制功能