1.首先导入库
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.0'

2.定时器类

/**
* Rxjava2.x实现定时器
*/

public class RxTimerUtil {

private static Disposable mDisposable;

/** milliseconds毫秒后执行next操作
* @param milliseconds
* @param next
*/
public static void timer(long milliseconds,final IRxNext next) {
Observable.timer(milliseconds, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(@NonNull Disposable disposable) {
mDisposable=disposable;
}

@Override
public void onNext(@NonNull Long number) {
if(next!=null){
next.doNext(number);
}
}

@Override
public void onError(@NonNull Throwable e) {
//取消订阅
cancel();
}

@Override
public void onComplete() {
//取消订阅
cancel();
}
});
}


/**
* 每隔milliseconds毫秒后执行next操作
* @param milliseconds
* @param next
*/
public static void interval(long milliseconds,final IRxNext next){
Observable.interval(milliseconds, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(@NonNull Disposable disposable) {
mDisposable=disposable;
}

@Override
public void onNext(@NonNull Long number) {
if(next!=null){
next.doNext(number);
}
}

@Override
public void onError(@NonNull Throwable e) {

@Override
public void onComplete() {

}
});
}


/**
* 取消订阅
*/
public static void cancel(){
if(mDisposable!=null&&!mDisposable.isDisposed()){
mDisposable.dispose();
LogUtil.e("定时器取消");
}
}

public interface IRxNext{
void doNext(long number);
}
}

3.如果是调用的重复执行的方法,你需要在activity的ondestroy方法中取消订阅

@Override
protected void onDestroy(){
//取消定时器
RxTimerUtil.cancel();

super.onDestroy();
}

使用 Rx java 实现 定时任务很简单,活不多说,直接上代码: 另外如果大家之前使用handler 或者 timerTask 来 实现 定时任务的,建议用 Rx Timer来替换 以下代码两个 方法 a.timer() 延时指定时间后执行 b.interval() 延时指定时间后,固定事件间隔轮询 import java .util.concurrent.TimeUnit; import io....
我将此课程复制到我制作的所有小应用程序中。 我已经厌倦了。 现在它是一个库Usage timer = Rx 2Timer.builder().initialDelay(0)//默认为0这是一个简单的 rx java 2计时器。 我将此课程复制到我制作的所有小应用程序中。 我已经厌倦了。 现在是一个库用法计时器= Rx 2Timer.builder().initialDelay(0)//默认值为0 .period(1)//默认值为1 .take(30)//默认值为60 .unit(TimeUnit.SECONDS)/ /默认值为TimeUnit.SECONDS .onEmit(count-> {if(count <10){binding.text.setText(“ 0” + count + public void startTime() { Observable.timer(10, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn( Android Schedulers.mainThread()) .subscribe(new Observer() { @Over
项目进行的过程中有个需求是在20秒内每秒请求一次数据,请求成功的json中有个字段,如果有这个字段代表请求成功,如果没有则继续请求,直到20秒结束,20秒结束则失败本来最开始采用countDownTimer来做,很简单就搞定了,但是项目引进了 rx java ,那肯定得用 rx java 试一试啊 好东西不能错过 直接上代码,并不难class FourthActivity : BaseTitleActivi
使用 Rx Java 实现 定时器 功能主要使用interval 和 take 操作符。具体代码如下:private Disposable mDisposable; /** * 启动 定时器 public void startTime() { int count_time = 10; //总时间 Observable.interval(0, 1, Ti
Observable.interval(0,1, TimeUnit.SECONDS) .take(count + 1) .map(new Function<Long, Long>() { @Overri... // rx java 2.x compile 'io.reactivex. rx java 2: rx android :2.0.1' compile 'io.reactivex. rx java 2: rx java :2.1.0' 首先声明一个Disposable对象
Rx java 真的是太棒了,越是研究越是觉得牛逼 内存泄漏是使用的LeakCanary排查的,官方链接在此 https://github.com/square/leakcanary private CompositeDisposable mCompositeDisposable = new CompositeDisposable(); private void test() {
//使用OKGO 网络请求 implementation 'com.lzy.net:okgo:3.0.4' implementation 'com.lzy.net:ok rx 2:2.0.2' implementation 'com.lzy.net:okserver:2.0.5' implementation 'io.reactivex. rx java 2: rx android :2.1.0' <?xml version="1.0" encoding="utf-8...