Android中怎么使用flow实现倒计时
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"Android中怎么使用flow实现倒计时",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android中怎么使用flow实现倒计时"吧!
千家信息网最后更新 2025年01月20日Android中怎么使用flow实现倒计时
本篇内容主要讲解"Android中怎么使用flow实现倒计时",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android中怎么使用flow实现倒计时"吧!
现在因为有了协程和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? = nullmBinding.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//倒计时完成执行onFinishCountDownTimer 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实现倒计时"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
倒计时
方式
内容
学习
实用
更深
优雅
代码
兴趣
功能
定时器
实用性
实际
工具
操作简单
方法
更多
朋友
状态
网站
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
河南亿得软件开发
天下三一战倾城服务器
搭建www服务器
小桌面软件开发
制定数据库安全策略
什么样的云服务器好
高碑店游戏软件开发
邯郸人工智能软件开发价钱是多少
服务器无响应
查询数据库的事务
有网连不上服务器是什么原因
网络技术相关企业
java运行时改变数据库
全球服务器人才招聘
维护网络安全的警示意义有哪些
中外文图书馆数据库
媒体针对网络安全的具体措施
北京向心力网络技术有限公司
宁波魔笛网络技术有限公司
火车有没有数据库显示乘客异常
防疫信息重点人群数据库
软件开发cbb
运维和网络技术哪个更好
河南聚慧网络技术有限公司
access创建销售数据库
链接服务器时出现问题是怎么回事
巴中软件开发规定
舟山招标中心怎么注册数据库
南京文昊澎渤网络技术有限公司
网络安全概念设计