添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
 Observable.timer(5, TimeUnit.SECONDS).subscribe(new Observer<Long>() {
            @Override
            public void onCompleted() {
                LogUtils.d("------->onCompleted");
            @Override
            public void onError(Throwable e) {
            @Override
            public void onNext(Long aLong) {

timer间隔执行:间隔5秒执行
 Observable.timer(0,5,TimeUnit.SECONDS).subscribe(new Subscriber<Long>() {
            @Override
            public void onCompleted() {
            @Override
            public void onError(Throwable e) {
            @Override
            public void onNext(Long aLong) {
                LogUtils.d("------>along:"+aLong+" time:"+SystemClock.elapsedRealtime());

02-19 17:27:35.683 25563-25987/com.rxandroid.test1 D/----->: ------>along:0 time:286032978
02-19 17:27:40.683 25563-25987/com.rxandroid.test1 D/----->: ------>along:1 time:286037976
02-19 17:27:45.683 25563-25987/com.rxandroid.test1 D/----->: ------>along:2 time:286042977
02-19 17:27:50.683 25563-25987/com.rxandroid.test1 D/----->: ------>along:3 time:286047976
02-19 17:27:55.683 25563-25987/com.rxandroid.test1 D/----->: ------>along:4 time:286052976

由于这种间隔执行已经标记为过时,推荐下面的方式:interval操作符:

Observable.interval(0,5,TimeUnit.SECONDS).subscribe(new Observer<Long>() {
            @Override
            public void onCompleted() {
            @Override
            public void onError(Throwable e) {
            @Override
            public void onNext(Long aLong) {
                LogUtils.d("------>along:"+aLong+" time:"+SystemClock.elapsedRealtime());
        });
能达到同样的效果

注意timer与interval都是默认运行在一个新线程上面

public void startTime() { Observable.timer(10, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @Over 不需要使用thread获取系统时间再通过主线程更新ui,rxJava优异的线程切换能力可以帮我们完成这一功能。自从学习了rxJava之后,发现可以很简单并且很简洁的实现时间的显示。 区别:System.currentTimeMillis()获取的是系统的时间,可以被修改。SystemClock.elapsedRealtime()获取的是系统开机到现在的时间,不能被修改。 使用:System.currentTimeMillis()用于和日期相关的地方,比如日志。SystemClock.elapsedRealtime()用于某个事件经历的时间,比如两次点击的时间间隔。 package com.fcbox.locker.shrail.utils; import android.support.annotation.NonNull; import com.fcbox.locker.sdk.Locker; import com.fcbox.locker.sdk.log. 项目中需要一个获取验证码的倒计时,需要应用被杀死,再次进入能继续倒计时。如果使用系统提供的倒计时CountDownTimer,在杀死进程后,就必须重新创建对象,倒计时被清空。因此,不能使用对象来计时,记录时间的工具必须持久化的,最简单的就是使用SharedPreferences来保存。 二.方案思路 方案一:使用系统时间 保存倒计时完成的时间stopTime,每过一秒,计算一次完成时间与... //rxjava2.x compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.0' 首先声明一个Disposable对象 public static Flowable&lt;Long&gt; interval(long period, TimeUnit unit) { return interval(period, period, unit, Sche... timer 功能在指定的时间间隔内反复触发指定窗口的定时器事件。语法Timer ( interval {, windowname } )参数interval:指定两次触发Timer事件之间的时间间隔,有效值在0到65之间。本文文主要为大家详细介绍了Java定时器Timer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部... 适合所有初中级工程师,从RxJava的每个知识点进行讲解,并在每个知识点中都带有文字说明和代码例子说明。通过这次系统化的学习,您将可以完整的学习到RxJava家族的所有特性和常用的操作符,掌握操作符的使用,掌握RxJava与Rx其他第三方库的使用。可以用三句简单的话进行概括面试加分利器 = 加大录取机会加快工作效率 = 早点下班回家系统化的学习 = 能力全面提升 Android-Rxjava 常用操作符 1.应用场景 延时执行操作 默认是子线程 可以通过observeOn 切换的是观察者的执行线程 Observable.just(1).delay(2000,TimeUnit.MILLISECONDS) // .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Object>() { @Override public void a Observable.interval(0,1, TimeUnit.SECONDS) .take(count + 1) .map(new Function<Long, Long>() { @Overri...