开启定时器setInterval,手机锁屏后,定时器不走了?
重新解锁进入页面,发现定时器是锁屏前的读秒数。怎么解决???
每5秒或者10秒和后台进行数据交互,唤醒小程序页面后重新同步时间,如果setInterval不和后台数据交互只是单纯的计时想不到你做什么用,比如用户切换到其他页面再切换回来,或者关掉小程序再打开回来,都要重新和服务器那边同步下数据的
官方设计锁屏后台停止js执行,目的应该也是防止程序异常导致内存溢出造成微信crash吧。
锁屏触发onHide的时候记录一个服务器时间,onShow的时候再读一下服务器时间?
其实你可以把计时开始时间存放起来,在onshow的时候处理一下就好了
马克,楼主解决了吗?
你好,请参考
setTimeout、setInterval计时器锁屏后停止计时 https://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=000aeee85e0e709a42b65c1965bc00&highline=%E6%89%8B%E6%9C%BA%E9%94%81%E5%B1%8F
通过后台获取时间开始,开始计时或者倒计时,前端不要去做这种事情
onHide和onUnload的时候清除定时器,onShow的时候重新开始定时器,至于怎么回到一个预期的状态,找一下时间的规律,换算一下就好了。
官方已经表明了,小程序在后台状况下js停止执行。
觉得可以利用时间戳的方式,在重新唤醒的节点上更新下时间,完全可以实现这个需求
手机锁屏后还在拼命运行的程序是最烂的程序。
需要做一个计时使用的,例如共享单车骑行的时候,不是有个计时告知用户现在使用了多长时间吗?用户不也是骑行的时候,把手机装口袋里。不可能一直亮屏看吧?要是骑个十万八千米,刚好打开手机,看下骑了多久了,才10多秒钟,这不以为自己超越(兰斯·阿姆斯特朗)了吗?