小程序
小游戏
企业微信
微信支付
扫描小程序码分享
开启定时器setInterval,手机锁屏后,定时器不走了?
重新解锁进入页面,发现定时器是锁屏前的读秒数。怎么解决???
12 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
通过后台获取时间开始,开始计时或者倒计时,前端不要去做这种事情
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
计算一下亮屏和熄屏的时间戳差
每5秒或者10秒和后台进行数据交互,唤醒小程序页面后重新同步时间,如果setInterval不和后台数据交互只是单纯的计时想不到你做什么用,比如用户切换到其他页面再切换回来,或者关掉小程序再打开回来,都要重新和服务器那边同步下数据的
好的,目前是同服务器进行时间同步,只是要onshow重新请求一下服务器的时候,网络延时的情况下,体验就不太友好。
这个是没办法的事情,我用滴滴有的时候车一直都不走,必须退回去再进来才能看到时时的位置呢,如果选择个好的服务器,好的数据库,优化好,比如腾讯云的广州上海这些,尽量让数据加载快些吧,也可以将执行时间也在缓存中保存一份,一次再执行先从缓存中取出来数据计算好,然后再从后端拿下数据同步
开始时间记录在服务器同时本地保存不就可以了吗,为什么要在interval里面进行数据交互?onShow的时候直接获取当前时间去与开始时间对比,不就可以实现了吗,为啥这种时候要去跟后台交互呢。而且我觉得滴滴的例子并不贴切,题主问的计时问题,服务器只需要知道开始时间和结束时间就好了。
不和后台数据交互你知道他走到哪儿了,缓存数据丢失了怎么处理,这中间肯定会扯到计费的问题,都是钱,如果不考虑到计费可以从缓存中调用一下,如果缓存中没有再从服务器中读取下原始的数据
第一人家问的就是一个计时;第二只有涉及到定位的情况下才有必要去跟服务器通讯,计费如果跟里程没关系也没必要去跟服务器通讯
手机锁屏后还在拼命运行的程序是最烂的程序。
现在用户15s关屏幕很正常,但是类似跟硬件结合,配网入网模式,30秒都是很理想的事情。一分钟更是很平凡的情况。并不是拼命运行。另外,也确实看到了类似共享单车,用户打开屏幕看到新的计时,体验做的又那么好,刚好就遇到了这种需要解决的问题了
官方设计锁屏后台停止js执行,目的应该也是防止程序异常导致内存溢出造成微信crash吧。
锁屏触发onHide的时候记录一个服务器时间,onShow的时候再读一下服务器时间?
好的,目前已这么处理
马克,楼主解决了吗?
其实你可以把计时开始时间存放起来,在onshow的时候处理一下就好了
onHide和onUnload的时候清除定时器,onShow的时候重新开始定时器,至于怎么回到一个预期的状态,找一下时间的规律,换算一下就好了。
官方已经表明了,小程序在后台状况下js停止执行。
觉得可以利用时间戳的方式,在重新唤醒的节点上更新下时间,完全可以实现这个需求
需要做一个计时使用的,例如共享单车骑行的时候,不是有个计时告知用户现在使用了多长时间吗?用户不也是骑行的时候,把手机装口袋里。不可能一直亮屏看吧?要是骑个十万八千米,刚好打开手机,看下骑了多久了,才10多秒钟,这不以为自己超越(兰斯·阿姆斯特朗)了吗?
不要说这个时间你不存到后台去啊,这个是和后台数据交互的,每10秒或者几秒的时候就和服务器同步下数据,
只是时间计时的话,记录一个开始时间,结束的时候再记录一个结束不就可以了吗?难道服务器的1小时跟客户端的一小时不一样长?
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
通过后台获取时间开始,开始计时或者倒计时,前端不要去做这种事情
计算一下亮屏和熄屏的时间戳差
每5秒或者10秒和后台进行数据交互,唤醒小程序页面后重新同步时间,如果setInterval不和后台数据交互只是单纯的计时想不到你做什么用,比如用户切换到其他页面再切换回来,或者关掉小程序再打开回来,都要重新和服务器那边同步下数据的
好的,目前是同服务器进行时间同步,只是要onshow重新请求一下服务器的时候,网络延时的情况下,体验就不太友好。
这个是没办法的事情,我用滴滴有的时候车一直都不走,必须退回去再进来才能看到时时的位置呢,如果选择个好的服务器,好的数据库,优化好,比如腾讯云的广州上海这些,尽量让数据加载快些吧,也可以将执行时间也在缓存中保存一份,一次再执行先从缓存中取出来数据计算好,然后再从后端拿下数据同步
开始时间记录在服务器同时本地保存不就可以了吗,为什么要在interval里面进行数据交互?onShow的时候直接获取当前时间去与开始时间对比,不就可以实现了吗,为啥这种时候要去跟后台交互呢。而且我觉得滴滴的例子并不贴切,题主问的计时问题,服务器只需要知道开始时间和结束时间就好了。
不和后台数据交互你知道他走到哪儿了,缓存数据丢失了怎么处理,这中间肯定会扯到计费的问题,都是钱,如果不考虑到计费可以从缓存中调用一下,如果缓存中没有再从服务器中读取下原始的数据
第一人家问的就是一个计时;第二只有涉及到定位的情况下才有必要去跟服务器通讯,计费如果跟里程没关系也没必要去跟服务器通讯
手机锁屏后还在拼命运行的程序是最烂的程序。
现在用户15s关屏幕很正常,但是类似跟硬件结合,配网入网模式,30秒都是很理想的事情。一分钟更是很平凡的情况。并不是拼命运行。另外,也确实看到了类似共享单车,用户打开屏幕看到新的计时,体验做的又那么好,刚好就遇到了这种需要解决的问题了
官方设计锁屏后台停止js执行,目的应该也是防止程序异常导致内存溢出造成微信crash吧。
锁屏触发onHide的时候记录一个服务器时间,onShow的时候再读一下服务器时间?
好的,目前已这么处理
马克,楼主解决了吗?
其实你可以把计时开始时间存放起来,在onshow的时候处理一下就好了
onHide和onUnload的时候清除定时器,onShow的时候重新开始定时器,至于怎么回到一个预期的状态,找一下时间的规律,换算一下就好了。
官方已经表明了,小程序在后台状况下js停止执行。
觉得可以利用时间戳的方式,在重新唤醒的节点上更新下时间,完全可以实现这个需求
需要做一个计时使用的,例如共享单车骑行的时候,不是有个计时告知用户现在使用了多长时间吗?用户不也是骑行的时候,把手机装口袋里。不可能一直亮屏看吧?要是骑个十万八千米,刚好打开手机,看下骑了多久了,才10多秒钟,这不以为自己超越(兰斯·阿姆斯特朗)了吗?
不要说这个时间你不存到后台去啊,这个是和后台数据交互的,每10秒或者几秒的时候就和服务器同步下数据,
只是时间计时的话,记录一个开始时间,结束的时候再记录一个结束不就可以了吗?难道服务器的1小时跟客户端的一小时不一样长?