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...