Android中两种实现倒计时的方法

1.rxjava

public static Observable countdown(int time) {if (time < 0) time = 0;final int countTime = time;return Observable.interval(0, 1, TimeUnit.SECONDS).subscribeOn(AndroidSchedulers.mainThread()).observeOn(AndroidSchedulers.mainThread()).map(new Function() {@Overridepublic Integer apply(@NonNull Long increaseTime) throws Exception {Log.d("RxCountDown", "increaseTime.intValue():" + increaseTime.intValue());return countTime - increaseTime.intValue();}}).take(countTime + 1);}private void countdown2() {RxCountDown.countdown(120).doOnSubscribe(new Consumer() {@Overridepublic void accept(Disposable disposable) throws Exception {Log.d("MainActivity", "即时开始");startTime = System.currentTimeMillis();}}).subscribe(new Observer() {@Overridepublic void onSubscribe(@NonNull Disposable d) {Log.d("MainActivity", "记时开始");}@Overridepublic void onNext(@NonNull Integer integer) {Log.d("MainActivity", "当前时间"+integer);}@Overridepublic void onError(@NonNull Throwable e) {}@Overridepublic void onComplete() {Log.d("MainActivity", "计时结束");Log.d("MainActivity", "System.currentTimeMillis()-startTime:" + (System.currentTimeMillis() - startTime)/1000.0);}});}

2、sdk25中的CountDownTimer

private void countDown() {mStartTime = System.currentTimeMillis();index = 120;new CountDownTimer(120*1000,1000){@Overridepublic void onTick(long millisUntilFinished) {Log.d("MainActivity", "l:" + Math.round((millisUntilFinished/1000.0)));Log.d("MainActivity", "index:" + (index--));}@Overridepublic void onFinish() {Log.d("MainActivity", "index:" + 0);long endTime = System.currentTimeMillis();Log.d("MainActivity", "endTime-mStartTime:" + (endTime - mStartTime)/1000.0);}}.start();}

以上两种倒计时的时间差都是毫秒级的,区别在于第二种不能取到最后一秒的,这个在onFinish处理就好
项目地址

Android中两种实现倒计时的方法_第1张图片

更多相关文章

  1. Android Studio执行Java类的main方法及解决方法
  2. Android 延迟执行方法
  3. android 五种Toast显示方法
  4. 关于AlertDialog中EditText不能弹出输入法解决方法
  5. android实现圆角矩形背景的方法
  6. Android RadioButton【单选按钮】的点击事件的两种方法
  7. android 跳转到系统相关应用的方法
  8. android屏幕信息获取的两种方法
  9. Android中new Notification创建实例的最佳方法

随机推荐

  1. PHP 基于 SW-X 框架,搭建WebSocket服务器(
  2. 百度小程序源码之追格资讯小程序源码下载
  3. jenkins中maven的安装及配置,如何在jenkin
  4. Android错误汇总集锦
  5. Android绘制圆形图片(五)
  6. Android之EditView 阻止软键盘自动弹出
  7. android(7)(写数据权限)
  8. Android通过内容提供器获取相册中所有图
  9. Android(安卓)属性动画中心点无限循环
  10. Android(安卓)MediaPlayer Playback---多