android Handler正确的打开方式

代码融入

1、kotlin代码

//初始化
private val handler = object : Handler(Looper.getMainLooper()) {
        override fun handleMessage(msg: Message) {
            super.handleMessage(msg)
            //自己的方法写好放入就好我写的是一个首页时间vip倒计时的方法
            setTime(vipExpireTimes)
            // 在handleMessage发送handle消息实现无限刷新
            sendMessageDelayed(this.obtainMessage(), 1000) // 延迟一秒发送,1秒刷新一次
        }
    }

//调用方法
handler.sendMessage(handler.obtainMessage()) // 在这里开始 时间计时


//记得销毁
override fun onDestroy() {
        super.onDestroy()
        handler.removeCallbacksAndMessages(null)
    }


//倒计时方法
    private fun setTime(failureTime: String) {
        @SuppressLint("SimpleDateFormat") val simpleDateFormat =
            SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
        try {
            // Date nowTime = new Date(System.currentTimeMillis()); //获取当前时间的另一种
            val nowTime = System.currentTimeMillis() //获取当前时间
            val overTime =
                simpleDateFormat.parse(failureTime) //利用SimpleDateFormat来把字符串日期转换为Date对象类型
            val a = overTime.time - nowTime // 计算总的时间差(毫秒级别)
            if (a > 0) { //如果大于零 说明时间有剩余

                // 总时间(a)
                // 总天数( day*(1000 * 60 * 60 * 24) )
                // 总小时数( hour * (1000 * 60 * 60) )
                // 总分钟数( minute * (1000 * 60) )

                // 总时间 中有几天
                val day = a / (1000 * 60 * 60 * 24)
                // 总时间 去除天数后,还剩多少小时
                val hour = (a - day * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
                // 总时间 去除天数与小时后,还剩多少分钟
                val minute =
                    (a - day * (1000 * 60 * 60 * 24) - hour * (1000 * 60 * 60)) / (1000 * 60)
                // 总时间 去除天数小时与分钟后,还剩多少秒
                val second =
                    (a - day * (1000 * 60 * 60 * 24) - hour * (1000 * 60 * 60) - minute * (1000 * 60)) / 1000
                //刷新ui显示
                tv_new_context.text =
                    context?.getString(R.string.vip_try_out) + +hour + ":" + minute + ":" + second + ""
            } else {
                tv_new_context.visibility = ViewGroup.GONE
            }
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
        }
    }

猜你喜欢

转载自blog.csdn.net/jiayuanwai/article/details/131286211