使用Rxjava完成倒计时遇到的问题及处理
2017-09-06 11:59
211 查看
前言:
很久没有写博客了,技术并没有太大的提升,就最近项目遇到的问题做一个简单的问题解决叙述,写的垃圾还请见谅.
需求描述:
使用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的朋友一起提升,谢谢了.
相关文章推荐
- Gson使用中遇到的Date格式问题。日期格式处理
- 使用desinger时遇到的一些问题的处理分享
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- 使用uiautomator时遇到问题的处理方法
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- 使用Data Wizard来完成参数列表时遇到的问题
- Gson使用中遇到的Date格式问题。日期格式处理
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- VS使用中遇到的问题--图像处理
- 记同事处理Fedora6 下使用超过4G的内存中所遇到的问题
- 在使用ILSpy对c# dll进行反编译时遇到的问题及处理方式
- Kotlin中使用RxJAVA的map()操作符遇到的问题
- 一般处理文件.ashx中使用文件session遇到的问题
- ListView使用ViewPager作头布局遇到的问题及处理
- swfupload使用中遇到问题处理方法
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- 前后端分离的j2ee的web项目,使用vue方式,即{{}}方式批量传入前端参数,遇到一个一个问题,页面上一开始有{{}},怎么处理?
- 使用短信数据库监听特定号码短信并处理信息内容遇到的问题
- Android 使用友盟分享SDK,分享到QQ成功后,遇到app被销毁后,回到此分享界面无法正常点击界面问题。--连QQ都忘记处理的activity状态恢复问题
- 使用git时遇到的问题总结及处理方法