使用Rxjava完成倒计时遇到的问题及处理
来源:互联网 发布:亚马逊aws 知乎 编辑:程序博客网 时间:2024/05/29 16:00
前言:
很久没有写博客了,技术并没有太大的提升,就最近项目遇到的问题做一个简单的问题解决叙述,写的垃圾还请见谅.
需求描述:
使用rxjava完成倒计时,倒计时中途(未到0秒)重置时间
出现问题:
在使用rxjava中,由于使用较少,理解不够透彻,遇到了很多不清楚的问题,今天说下我遇到的问题:
倒计时中途手动取消订阅,再次执行代码,rx代码不再执行
解决:
先看代码
Observable<Long> observable = Observable.interval(0, 1, TimeUnit.SECONDS).take(second + 1).map(new Function<Long, Long>() { @Override public Long apply(@NonNull Long aLong) throws Exception { return second - aLong;// 由于是倒计时,需要将倒计时的数字反过来 } }).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.newThread()); observable.subscribe(getObserver());
private Observer getObserver() { Observer<Long> longObserver = new Observer<Long>() { @Override public void onSubscribe(@NonNull Disposable d) {// cd.add(d); disposable = d; } @Override public void onNext(@NonNull Long o) { tvSecondNum.setText(o + ""); } @Override public void onError(@NonNull Throwable e) { } @Override public void onComplete() { showDialogReminder(); } }; return longObserver; }
最初出现问题时,我是用的匿名链式的方式写的,更改为用变量返回Observer的方式,这样就把问题解决了.在使用取消订阅时, 最初使用
private CompositeDisposable cd = new CompositeDisposable();cd.add(d)cd.dispose();
这样的方式取消订阅,但是也不能实现,然后更改为
这样的方式取消订阅,但是也不能实现,然后更改为
private Disposable disposable;disposable = d;if(disposable!=null){ disposable.dispose();//取消订阅 }
改成这样就完成了要求
到这就结束了,希望能向遇到相同问题但是没有找到解决办法的朋友提供一点帮助,最后希望看到博客的大佬,能留言解释下这是什么原因造成的,让我和同样学习rxjava的朋友一起提升,谢谢了.
阅读全文
1 0
- 使用Rxjava完成倒计时遇到的问题及处理
- RxJava遇到的问题
- retrofit2+okhttp3+ rxjava 遇到的问题及解决方案
- 使用git时遇到的问题总结及处理方法
- 使用RxJava实现倒计时
- 处理倒计时问题的关键
- android 制作倒计时遇到的问题小结
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- 记一个用RxJava遇到的问题
- Rxjava遇到的问题----RxIoScheduler-2
- 使用RxJava实现android里面的倒计时效果
- 我使用javamail处理中文遇到的一些问题及解决方法
- ListView使用ViewPager作头布局遇到的问题及处理
- 【新手】-使用Android Studio中遇到的异常问题及处理(持续更新)
- 在使用ILSpy对c# dll进行反编译时遇到的问题及处理方式
- Rxjava 实现倒计时的方法
- showModelessDialog的使用及遇到的问题
- xcode 项目瘦身神器
- 计算最高逾期、当前逾期、累计逾期
- 快速排序
- MYSQL免安装版无法启动终极解决方法
- Java : Basic
- 使用Rxjava完成倒计时遇到的问题及处理
- yield的简单用法
- LeetCode 之 Reverse Integer
- activit会签, 多人审批, 简单使用
- 编写php自定义扩展
- vue-router没有效果的问题解决之一
- dedecms-seo标签(title标题、keywords关键词、description描述)详解
- 使用Axis2实现WebServices
- java 安卓学习路线