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


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

    先说结论:挂起(显示在聊天顶部)状态无法完美解决,息屏状态可以完美解决。
    本帖目的只是分享在碰到问题时的解决方法和思路。如果不能解决您的问题就非常抱歉。

    ps:由于小程序一直在更新中,所以并不保证下面的方法长期有效。

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

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

  • 相关阅读:
    uCOS的软件定时器、uCOS时钟节拍和滴答定时器的关系
    学习ucosii要用到的几本书
    freertos知识点笔记——队列、二值信号量、计数信号量
    《嵌入式软件设计基础——基于ARM Cortex—M3》读书笔记
    大小端测试C实现
    static 的三个作用
    基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)
    STM32中stm32f0xx_flash.icf文件的作用详解!(不错的!)
    CRC点滴
    int *a[] 与(int *)a【5】的区别
  • 原文地址:https://www.cnblogs.com/baqiphp/p/6547482.html
Copyright © 2020-2023  润新知