轻松实现Rxjava定时器功能
使用RxJava实现定时器功能可以通过两种方式来实现,具体实现如下:
一、使用timer操作符
privateDisposablemDisposable;
/**
*启动定时器
*/
publicvoidstartTime(){
Observable.timer(10,TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(newObserver(){
@Override
publicvoidonSubscribe(Disposabled){
mDisposable=d;
}
@Override
publicvoidonNext(Longvalue){
//Log.d("Timer",""+value);
}
@Override
publicvoidonError(Throwablee){
}
@Override
publicvoidonComplete(){
//TODO:2017/12/1
closeTimer();
}
});
}
/**
*关闭定时器
*/
publicvoidcloseTimer(){
if(mDisposable!=null){
mDisposable.dispose();
}
}
 
二、使用使用interval和take操作符
在1.x中timer可以执行间隔逻辑,在2.x中此功能已过时,交给了interval操作符,当然只使用interval还不能实现定时器功能,必须再结合take操作符。具体代码如下:
privateDisposablemDisposable;
/**
*启动定时器
*/
publicvoidstartTime(){
intcount_time=10;//总时间
Observable.interval(0,1,TimeUnit.SECONDS)
.take(count_time+1)//设置总共发送的次数
.map(newFunction(){
@Override
publicLongapply(LongaLong)throwsException{
//aLong从0开始
returncount_time-aLong;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(newObserver(){
@Override
publicvoidonSubscribe(Disposabled){
mDisposable=d;
}
@Override
publicvoidonNext(Longvalue){
//Log.d("Timer",""+value);
}
@Override
publicvoidonError(Throwablee){
}
@Override
publicvoidonComplete(){
//TODO:2017/12/1
closeTimer();
}
});
}
/**
*关闭定时器
*/
publicvoidcloseTimer(){
if(mDisposable!=null){
mDisposable.dispose();
}
}
  
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。