微信小程序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

相關文章
相關標籤/搜索