返回顶部
首页 > 资讯 > 移动开发 >Android 使用flow实现倒计时的方式
  • 126
分享到

Android 使用flow实现倒计时的方式

2024-04-02 19:04:59 126人浏览 八月长安
摘要

Android 倒计时一般实现方式: handler+postDelayed() 方式Timer + TimerTask + handler 方式ScheduledExecutorS

Android 倒计时一般实现方式:

  • handler+postDelayed() 方式
  • Timer + TimerTask + handler 方式
  • ScheduledExecutorService + handler 方式
  • RxJava 方式
  • CountDownTimer 方式

现在因为有了协程和Flow,我们可以借助Flow这个工具,更加优雅地实现这个需求功能.

1.依赖导入

    api 'org.jetbrains.Kotlinx:kotlinx-coroutines-core:1.4.2'
    api 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1'
    // lifecycleScope(可选)
    api "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"

2. 代码实现

fun countDownCoroutines(
    total: Int,
    scope: CoroutineScope,
    onTick: (Int) -> Unit,
    onStart: (() -> Unit)? = null,
    onFinish: (() -> Unit)? = null,
): Job {
    return flow {
        for (i in total downTo 0) {
            emit(i)
            delay(1000)
        }
    }.flowOn(Dispatchers.Main)
        .onStart { onStart?.invoke() }
        .onCompletion { onFinish?.invoke() }
        .onEach { onTick.invoke(it) }
        .launchIn(scope)
}

2.1使用:

private var mCountdownJob: Job? = null

mBinding.btnStart.setOnClickListener {
    mCountdownJob = countDownCoroutines(60, lifecycleScope,
        onTick = { second ->
            mBinding.text.text = "${second}s后重发"
        }, onStart = {
            // 倒计时开始
        }, onFinish = {
            // 倒计时结束,重置状态
            mBinding.text.text = "发送验证码"
        })
}
mBinding.btnStop.setOnClickListener { 
    // 取消倒计时
    mCountdownJob?.cancel() 

其他的完整Demo https://GitHub.com/dahui888/kotlinpractice

补充:

下面是小编收集整理Android 实现倒计时的几种方式

使用 Timer方式:


  
    public void startTimer() {
        if (timer == null) {
            timer = new Timer();
        }
        if (timerTask == null) {
            timerTask = new TimerTask() {
                @Override
                public void run() {
                    Message message = new Message();
                    message.what = 2;
                    handler.sendMessage(message);
                }
            };
        }
        if (timer != null && timerTask != null) {
            timer.schedule(timerTask, 0, 2000);
        }
    }
    
    public void stopTimer() {
        if (timer != null) {
            timer.cancel();
            timer = null;
        }
        if (timerTask != null) {
            timerTask.cancel();
            timerTask = null;
        }
    }

使用rxjava方式:

  private void countDown() {
        mdDisposable = Flowable.intervalRange(0, Constant.COUNT_DOWN, 0,                     1,TimeUnit.SECONDS)
                .observeOn(AndroidSchedulers.mainThread())
                .doOnNext((aLong) -> LogUtils.e("倒计时--" + aLong))
                .doOnComplete(() -> randomSelectSeat())
                .subscribe();
    }
    
     @Override
    protected void onDestroy() {
        if (mdDisposable != null) {
            mdDisposable.dispose();
        }
        super.onDestroy();
    }

使用CountDownTimer方式:

//倒计时CountDownTimer
//每过1000毫秒执行一次onTick
//倒计时完成执行onFinish
CountDownTimer timer = new CountDownTimer(5000, 1000){
    @Override
    public void onTick(long sin) {
        Toast.makeText(MainActivity.this, "" + sin/1000, Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onFinish() {
        Toast.makeText(MainActivity.this, "倒计时完成", Toast.LENGTH_SHORT).show();
    }
};
//开始
timer.start();
//暂停
if (timer != null) {
     timer.cancel();
     timer = null;
 }

到此这篇关于Android 使用flow实现倒计时的方式的文章就介绍到这了,更多相关android flow倒计时内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android 使用flow实现倒计时的方式

本文链接: https://lsjlt.com/news/146940.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 使用flow实现倒计时的方式
    Android 倒计时一般实现方式: handler+postDelayed() 方式Timer + TimerTask + handler 方式ScheduledExecutorS...
    99+
    2024-04-02
  • Android中怎么使用flow实现倒计时
    本篇内容主要讲解“Android中怎么使用flow实现倒计时”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中怎么使用flow实现倒计时”吧!现在因为有了协程和Flow,我们可以借助...
    99+
    2023-06-30
  • Android中Handler实现倒计时的两种方式
    背景:最近项目中,正好做到登录/注册这个功能块。它需要通过发送验证码,在规定的时间内用验证码来完成登录/注册。之前的项目中也有这个功能,但是觉得太复杂了,只好自己重新实现一遍。用Handler来做,觉得代码简介,逻辑也清楚。代码一://在向...
    99+
    2023-05-31
    handler 倒计时 roi
  • Android使用CountDownTimer实现倒计时效果
    在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用Handler + Timer + TimerTask来实现,现在发现了这个类,果断抛弃之前的做...
    99+
    2022-06-06
    倒计时 Android
  • Android实现计时与倒计时的方法汇总
    方法一Timer与TimerTask(Java实现)public class timerTask extends Activity{ private int recLen = 11; private TextView txtView; ...
    99+
    2023-05-31
    android 计时 倒计时
  • Android实现计时与倒计时的常用方法小结
    本文实例总结了Android实现计时与倒计时的常用方法。分享给大家供大家参考,具体如下: 方法一 Timer与TimerTask(Java实现) public class t...
    99+
    2022-06-06
    倒计时 小结 方法 Android
  • android实现倒计时功能的方法
    前言   在打开爱奇艺等app的欢迎界面的时候,右上角有一个倒计时的控件。倒计时完了以后进入主界面。现在我们来实现这个功能。  方法一: 利用...
    99+
    2022-06-06
    倒计时 方法 Android
  • Android实现倒计时的方案梳理
    目录前言一、CountDownTimer的实现二、直接用Handler的实现三、直接用Time、TimeTask的实现四、使用Theard倒计时五、使用框架RxJava六、Kotli...
    99+
    2022-11-13
    Android实现倒计时方案 Android实现倒计时
  • Android实现倒计时方法汇总
    Android开发中经常会有倒计时的功能,下面将总结出常见的集中实现方式。 1.直接使用Handler的消息机制来实现 xml布局中文件如下: <?xml v...
    99+
    2022-06-06
    倒计时 方法 方法汇总 Android
  • Android CountDownTimer实现倒计时器
    使用介绍 开发中经常会遇到一些和倒计时有关的场景,比如发送验证码的按钮,会在点击发送后,显示倒计时间,倒计时结束后才能够刷新按钮,再次允许点击。为了不阻塞软件的运行,又要实时...
    99+
    2022-06-06
    倒计时 计时器 Android
  • Android实现圆圈倒计时
    本文实例为大家分享了Android实现圆圈倒计时的具体代码,供大家参考,具体内容如下 1. 显示效果如下 2. 首先是创建shape的xml文件 在res/drawable目录下创...
    99+
    2022-11-13
    Android 倒计时
  • js实现倒计时的方式有哪些
    小编给大家分享一下js实现倒计时的方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一般倒计时的时间都是后台传来的然后渲染...
    99+
    2024-04-02
  • Android实现时间倒计时功能
    本文实例为大家分享了Android实现时间倒计时功能展示的具体代码,供大家参考,具体内容如下效果展示MainActivity(主页面代码)public class MainActivity extends Activity { priva...
    99+
    2023-05-30
    android 倒计时 roi
  • Android利用Chronometer实现倒计时功能
    项目需要实现一个计时的功能,利用Chronometer虽然可以很方便的实现计时功能,但需要的却是一个倒计时控件。 百度了一下方法不少,倒计时的却没有,于是用Chronomete...
    99+
    2022-06-06
    倒计时 Android
  • Android实现倒计时的按钮效果
    最近有人问我如何实现倒计时的按钮功能,例如发送验证码,我记得有个CountDownTimer,因为好久没用过了,自己就写了一个,代码如下 new CountDownTimer...
    99+
    2022-06-06
    倒计时 按钮 Android
  • Android倒计时功能的实现代码
    好久没有写博客了,趁着年末,总结了下最近一年所遇到的一些技术问题,还有一些自定义控件,比如倒计时功能 首先倒计时的实现方式 1.Handler 2.Timer 3.RxJava...
    99+
    2022-06-06
    Android
  • Android 简单实现倒计时功能
    在 Android 中倒计时功能是比较常用的一个功能,比如短信验证码,付款倒计时等。实现方式有Handler、Thread 等,但是实现起来都有点麻烦,其实Android已经为...
    99+
    2022-06-06
    倒计时 Android
  • Android实现订单倒计时功能
    先上效果图 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <R...
    99+
    2022-06-06
    倒计时 Android
  • android实现倒计时功能代码
    效果图,每隔1秒,变换一下时间  xml: 代码如下: <RelativeLayout xmlns:android="http://schemas.andro...
    99+
    2022-06-06
    倒计时 Android
  • Android怎样实现倒计时功能
    这篇文章主要为大家展示了“Android怎样实现倒计时功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android怎样实现倒计时功能”这篇文章吧。一. 已有倒计时方案存在的问题在开发倒计时功...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作