首页 > 其他分享 >直播系统代码,Android实现倒计时的几种方案

直播系统代码,Android实现倒计时的几种方案

时间:2023-02-03 14:25:44浏览次数:41  
标签:num Handler timer 倒计时 override 直播 fun Android

直播系统代码,Android实现倒计时的几种方案

一、CountDownTimer的实现

 

  //倒计时的方式一
    fun countDownTimer() {
        var num = 60
        timer = object : CountDownTimer((num + 1) * 1000L, 1000L) {
            override fun onTick(millisUntilFinished: Long) {
                YYLogUtils.w("当时计数:" + num)
                if (num == 0) {
                    YYLogUtils.w("重新开始")
                    num = 60
                } else {
                    num--
                }
            }
            override fun onFinish() {
                YYLogUtils.w("倒计时结束了..." + num)
            }
        }
        timer?.start()
    }
private var timer: CountDownTimer? = null
override fun onDestroy() {
    super.onDestroy()
    timer?.cancel()
}

没什么花活,就是android.os包下面的 CountDownTimer 类的使用。内部实现使用了 Handler 进行封装。

 

二、直接用Handler的实现

 

    private var handlerNum = 60
    private val mHandler = object : Handler(Looper.getMainLooper()) {
        override fun handleMessage(msg: Message) {
            when (msg.what) {
                1 -> {
                    if (handlerNum > 0) {
                        handlerNum--
                        YYLogUtils.w("当时计数:" + handlerNum)
                        countDownHander()
                    } else {
                        stopCountDownHander()
                    }
                }
            }
        }
    }
    override fun onDestroy() {
        super.onDestroy()
        stopCountDownHander()
    
    }
    fun countDownHander() {
        mHandler.sendEmptyMessageDelayed(1, 1000)
    }
    fun stopCountDownHander() {
        mHandler.removeCallbacksAndMessages(null)
    }

 

我们可以直接使用Handler的延时发送消息实现倒计时。

当然另一种做法是使用 Runnable 来实现。

 


Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
recLen++;
txtView.setText("" + recLen);
handler.postDelayed(this, 1000);
}
public void test(){
    handler.postDelayed(runnable, 1000);
}

 

三、直接用Time、TimeTask的实现

以上是Android的倒计时方案,其实Java的Api也是支持倒计时实现的,比如 Timer 配合 TimerTask 就可以实现简单的倒计时。

 


   fun countDownTimer2() {
            var num = 60
            val timer = Timer()
            val timeTask = object : TimerTask() {
                override fun run() {
                    num--
                    YYLogUtils.w("当时计数:" + num)
                    if (num < 0) {
                        timer.cancel()
                    }
                }
            }
            timer.schedule(timeTask, 1000, 1000)
    }

 

以上就是直播系统代码,Android实现倒计时的几种方案, 更多内容欢迎关注之后的文章

 

标签:num,Handler,timer,倒计时,override,直播,fun,Android
From: https://www.cnblogs.com/yunbaomengnan/p/17089065.html

相关文章

  • 手机直播源码,使用ViewPager2实现页面滑动切换
    手机直播源码,使用ViewPager2实现页面滑动切换1.引言在很多应用中,我们经常会看到多个页面之间滑动切换的场景,ViewPager2是ViewPager的升级版,本文将简要介绍如何使用ViewPa......
  • unity Android路径的相关部分代码
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO;usingUnityEditor;usingUnityEngine;usingUnityEngine.UI;public......
  • Android本地备份功能禁用
    最近部分设备激活客户端后发现本地备份的功能被禁用了,排查原因发现:/***Allowsthedeviceownertoenableordisablethebackupservice.**<p>B......
  • Android动态数字输入框
    基础view如下:具体的思路实现:1:展示textview实现2:顶层使用透明的edittext.获取焦点/删除文字等。publicclassBaseVerificationCodeViewextendsRelativeLayout{......
  • Android辅助功能
    1:AccessibilityService新建servicepublicclassAccessibilityServiceextendsandroid.accessibilityservice.AccessibilityService{privatestaticfinalString......
  • Android联系人增删改查
    1:申请权限<uses-permissionandroid:name="android.permission.READ_CONTACTS"/><uses-permissionandroid:name="android.permission.WRITE_CONTACTS"/>2:读取......
  • MT8788 android 9.0 sensor 驱动移植
    1.硬件配置打开 MT8788 核心板原理图,配置GYRO(陀螺仪),ALSPS(光感),G-sensor(加速度)的ENIT和GPIO以及I2C,打开vendor\mediatek\proprietary\scripts\dct\DrvGen.......
  • Android 逆向
    1:apk文件结构如图所示:assets:存放应用程序的静态资源文件,如图片资源,json配置文件,html离线资源等。注意,assets目录下是支持任意深度的子目录。res:规定的指定文件,图......
  • 后端返回时间戳倒计时
    //倒计时   payTime(){    //创建订单的时间    letcreatedAt=(Date.parse(this.data.created_at))/1000;    constIntervalTim......
  • Android Studi导出apk包自定义文件名
    在app的gradle配置文件中的release代码块中放置以下代码android.applicationVariants.all{variant->variant.outputs.all{output->if(outputFileNa......