微信小程序IOS系统中,倒计时(setInterval函数)失效的问题

BUG在基础库1.1.0版本已经修复。

 

先说结论:挂起(显示在聊天顶部)状态没法完美解决,息屏状态能够完美解决。
本帖目的只是分享在碰到问题时的解决方法和思路。若是不能解决您的问题就很是抱歉。小程序

ps:因为小程序一直在更新中,因此并不保证下面的方法长期有效。iphone

 

息屏状态完美解决方法:
一、适用场景:经过传入参数控制倒计时时间的页面。
二、解决思路:在息屏和挂起的时候,咱们能够经过vConsole能够看到是执行了onHide函数。再打开的时候执行的onShow函数,因此咱们就能够在onHide函数作文章了。
三、解决方案:实践事后发如今onHide函数中使用setTimeout或者setInterval函数仍是不起做用。因此换个方式。
由于咱们的页面是经过传入参数控制的倒计时时间,因此咱们在onHide函数内部,redirectTo到当前页面,并将当前页面的剩余倒计时时间传入作为参数传入。因为未知的缘由,在息屏状态下进行页面跳转之后,页面的倒计时仍是能继续运行(setInterval函数能够运行),这样咱们就能在息屏状态下进行倒计时了。并且倒计时时间不会像安卓那样会变慢(仅在iphone6下进行测试)
四、未解决的问题:虽然息屏和挂起都是同样的执行onHide和onShow函数,可是很是遗憾的是,在挂起状态下页面跳转有时会失效(可是神奇的是,会执行success函数)而且就算跳转成功,计时器也仍是会暂停,缘由未知。

挂起状态非完美解决方法:
一、使用场景:大部分倒计时,可是不适用仅仅setInterval的页面。
二、解决方案:在开始倒计时的时候获取一下系统当前时间,并加上你的倒计时时间(自行计算)做为结束时间,由上面能够知道再次打开小程序的时候会执行onShow函数,所以只要在这个函数里面根据当前的时间和结束时间再次设置一下倒计时便可。
ps:通过测试发现目前的番茄闹钟就是使用的这种方案。ide

相关文章
相关标签/搜索