H5 - - - - - 移动端息屏后setInterval定时器不工作的问题

移动端息屏后setInterval定时器不工作的问题

1. 场景描述 & 问题描述

场景描述:

进入页面通过接口获取一个当前倒计时时间戳,然后前端通过setInterval定时器轮询-1进行倒计时展示

问题描述:

当倒计时开启,经过一段时间接近目标时间时,多人反馈剩余倒计时时间不统一。经过一番定位猜测以及尝试之后,发现问题出现在setInterval定时器上。
不管是Android还是iOS都存在息屏后,过了一段时间后定时器会停止工作,再次打开后才继续工作的问题,且息屏后多长时间定时器会停止工作不确定。

2. 解决思路

能否通过监听页面是否可见来进行倒计时时间订正?

2.1 方案一

  • 通过监听 visibilitychange 事件,得知该页面是否为可见。
  • 在息屏时,我们主动关闭定时器,并记录当前时间。
  • 在用户打开手机进入页面时,记录当前时间,计算出息屏期间的时间。
  • 再次打开定时器,订正计时器时间加上息屏期间的时间。

2.2 方案二

  • 通过监听 visibilitychange 事件,得知该页面是否为可见。
  • 当解锁时重新获取倒计时时间

当前示例为方案一实现。⬇️

3. 实现代码

<template>
  <div>
    <div>剩余时间:{
  { countdown }}</div>
    <div>是否为熄屏状态:{
  { screenShutdownStatus }}</div>
    <div>上次熄屏的时间戳:{
  { screenShutdownTime }}</div>
    <div>当前解锁的时间戳:{
  { unlockTime }}</div
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值