不管是Android还是iOS都存在息屏后,过了一段时间后定时器会停止工作,再次打开后才继续工作的问题,且息屏后多长时间定时器会停止工作不确定。
本回答只提供息屏后,定时器停止,而软件未被后台杀死的情况。

问题描述及需求

我们项目是一款运动型软件,定时器记录用户运动的时间,当用户进行跑步等有氧运动时,会进行息屏等操作。而定时器会在息屏一段时间后自动停止(可能是20秒可能是1分钟,也可能是5分钟),只有当再次打开时才会继续计时。

思路

通过监听 visibilitychange 事件,得知该页面是否为可见。

  1. 在息屏时,我们主动关闭定时器,并记录当前时间。
  2. 在用户打开手机进入页面时,记录当前时间,计算出息屏期间的时间。
  3. 再次打开定时器,并将计时器时间加上息屏期间的时间。
let _this = this;document.addEventListener("visibilitychange", function() {if (document.visibilityState == "hidden") {console.log("close");clearInterval(_this.timer); // 息屏时主动关闭定时器_this.closeTiming = Date.now(); // 息屏时 记录息屏时间点} else {console.log("open");// 获得息屏期间的时间, 并换算为秒 单位_this.closeScreenDuringTime = Math.floor((Date.now() - _this.closeTiming) / 1000); // 原定时器需要计算的时间,加上息屏期间的时间就是总时间_this.currentDuringTime =_this.currentDuringTime + _this.closeScreenDuringTime;_this.openTimer(); // 调用函数,再次打开定时器}});

其中 document.visibilityState 有两个值分别为 ‘hidden’ 和 ‘visible’ 。
如果存在兼容性问题 , 也可以监听其他几个事件试试。

document.addEventListener("webkitvisibilitychange", function() {});
document.addEventListener("mozvisibilitychange", function() {});
document.addEventListener("msvisibilitychange", function() {});

如有错误,欢迎指正,谢谢!
以上内容仅共参考,欢迎大家讨论。

关于解决移动端息屏后定时器不工作的问题相关推荐

  1. android息屏休眠定时器心跳停止运行

    分两种情况: 1.当手机连接usb电源时,息屏不会造成定时器暂停运行 2.当手机未连接usb电源时,息屏会造成定时器暂停运行,并在再次点亮屏幕时定时器重新开始工作 测试: 1.service保活,在s ...

  2. Ubuntu息屏后唤醒的花屏问题

    问题描述:每次系统无操作自动息屏后,按任意建唤醒,屏幕花屏,如下图 上述情景在登陆两个账户后互相切换时也会出现(不是文字界面登陆账户),切换后直接花屏,只能强制关机 虽说问题不大,但感觉很不舒服,好像 ...

  3. Ubuntu 息屏后无法唤醒

    Ubuntu 息屏后无法唤醒 一.问题描述   昨日自己给笔记本PC外加内存条后,电脑息屏无法唤醒,网上参考例程得以解决: 参考连接 二.具体操作 1.安装laptop-mode-tools工具包   ...

  4. app息屏后ajax请求不执行_息屏时钟app下载-息屏时钟软件下载v1.0 安卓版

    息屏时钟app是一款息屏后可以在手机上显示各种时间的app,软件中可以感受全新的主题桌面,美化手机屏幕,不需要唤醒手机也能查看时间,软件的功能众多,还可以设置不同的息屏画面,超多内容可以体验,快来试试 ...

  5. 手机息屏后停止_手机息屏还能这样玩?华为这几个隐藏小功能快学起来

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. 注:本文转载自网络,如有侵 ...

  6. 移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题

    移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题 参考文章: (1)移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题 (2)https://ww ...

  7. 联想Thinkpad E15 息屏后 无法唤醒

    联想Thinkpad E15 息屏后 无法唤醒 联想Thinkpad E15 息屏后 无法唤醒 联想Thinkpad E15 息屏后 无法唤醒 最近公司配的电脑,E15 老是熄屏后无法唤醒,重新安装系 ...

  8. Android 小知识记录-----息屏后亮屏并显示Activity在锁屏页面之上

    息屏后亮屏并显示Activity在锁屏页面之上 1. 加权限 <uses-permission android:name="android.permission.WAKE_LOCK&q ...

  9. js实现全屏与退出全屏,解决F11进入全屏后退出全屏API方法失效(chrome)

    js实现全屏与退出全屏,解决F11进入全屏后退出全屏API方法失效(chrome) 解决的问题 谷歌浏览器F11全屏后,在页面中编写的全屏按钮失效 解决方法 //判断是否是全屏状态 var isFul ...

最新文章

  1. ASP.NET JScript公共类(非常有用)
  2. 门户网站建设与运营需要付出更多成本
  3. 使用Windows Server Backup备份恢复Exchange Server 2010数据库
  4. 日本钢铁业排名(2014/11/5)
  5. DotNet语音技术实现(实现电脑发音)
  6. openssl qt 生成秘钥_关于openssl作的rsa生成密钥及加解密
  7. mysql触发器如果某个字段被修改_mysql trigger触发器 一张表一个字段改变 更新另一张表对应字段...
  8. 【Vue】详解 SFC 与 vue-loader
  9. 如何在JavaScript中检查变量是否为整数?
  10. win10下安装mysql5.6 zip形式步骤
  11. Delphi 下用Windows API 创建窗体
  12. 问题二:用C++输出第一张图片
  13. Scala可变参数列表
  14. 孙鑫VC学习笔记:第十四讲 (一) 网络的基本概念
  15. linux/windows对应的软件
  16. win10熄屏时间不对_Win10系统何如设置自动锁屏时间,教程来啦,windows10怎样设置熄屏时间...
  17. hget和get redis_Redis Hash 的 HSET、HGET、HMSET、HMGET 性能测试
  18. 阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!
  19. 我是如何创建学校免费上网账号上网的
  20. 微信小程序-如何申请百度开放平台的密钥

热门文章

  1. 注意!吃蔬菜也有误区
  2. 花2万多买的Python学习路线、Python视频教程免费分享,持续更新…
  3. 3种伺服电机控制方式
  4. 弹出率很高的网页弹窗代码
  5. 关于男人女人的经典感悟
  6. fir300c固件_斐讯路由器漏洞集合(内置账号及隐藏接口)
  7. 404未找到是什么意思_常见的web错误404你知道是什么意思吗?
  8. 使用git进行版本控制
  9. 算法---DFS和BFS
  10. Python之Split函数