先說結論:掛起(顯示在聊天頂部)狀態無法完美解決,息屏狀態可以完美解決。 本帖目的只是分享在碰到問題時的解決方法和思路。如果不能解決您的問題就非常抱歉。ps:由于小程序一直在更新中,所以并不保證下面的方 ...
先說結論:掛起(顯示在聊天頂部)狀態無法完美解決,息屏狀態可以完美解決。
本帖目的只是分享在碰到問題時的解決方法和思路。如果不能解決您的問題就非常抱歉。ps:由于小程序一直在更新中,所以并不保證下面的方法長期有效。
息屏狀態完美解決方法:
1、適用場景:通過傳入參數控制倒計時時間的頁面。
2、解決思路:在息屏和掛起的時候,我們可以通過vConsole可以看到是執行了onHide函數。再打開的時候執行的onShow函數,所以我們就可以在onHide函數做文章了。
3、解決方案:實踐過后發現在onHide函數中使用setTimeout或者setInterval函數還是不起作用。所以換個方式。
因為我們的頁面是通過傳入參數控制的倒計時時間,所以我們在onHide函數內部,redirectTo到當前頁面,并將當前頁面的剩余倒計時時間傳入做為參數傳入。由于未知的原因,在息屏狀態下進行頁面跳轉以后,頁面的倒計時還是能繼續運行(setInterval函數可以運行),這樣我們就能在息屏狀態下進行倒計時了。而且倒計時時間不會像安卓那樣會變慢(僅在iphone6下進行測試)
4、未解決的問題:雖然息屏和掛起都是一樣的執行onHide和onShow函數,但是非常遺憾的是,在掛起狀態下頁面跳轉有時會失效(但是神奇的是,會執行success函數)并且就算跳轉成功,計時器也還是會暫停,原因未知。
掛起狀態非完美解決方法:
1、使用場景:大部分倒計時,但是不適用僅僅setInterval的頁面。
2、解決方案:在開始倒計時的時候獲取一下系統當前時間,并加上你的倒計時時間(自行計算)作為結束時間,由上面可以知道再次打開小程序的時候會執行onShow函數,因此只要在這個函數里面根據當前的時間和結束時間再次設置一下倒計時即可。
ps:經過測試發現目前的番茄鬧鐘就是使用的這種方案。