hbuilder版本高於3.0.0,則此方法不適用,使用最新的 https://www.cnblogs.com/qdjj/p/15196221.html
最近開發了一款使用uni-app做框架的app
打包上線后發現在ios端項目在后台運行時內存不足重回頁面時當前tabbar頁面是正常,但是其他tabber頁會白屏
但是安卓端沒有遇到這種問題,看了官方文檔配置了
"kernel" : {
"ios" : "WKWebview",
"recovery" : "restart"
},
意思是頁面崩潰后重啟項目
但是實際還是沒有生效,之后經過研究發現出一種方法可以用
// 判斷是不是ios,是否發生白屏 uni.getSystemInfo({ success: (res) => { if (res.platform == 'ios') { const query = uni.createSelectorQuery().in(this); var isRecovery = true; query .select('#containerId') .boundingClientRect(data => { isRecovery = false; }) .exec(); var timer = setTimeout(() => { if (isRecovery) { uni.reLaunch({ url:'/pages/tabbar/user/user' }) clearTimeout(timer); timer = null; } }, 500) } }, })
因為只在ios上有問題,所有先判斷是否是ios端,再通過
uni.createSelectorQuery()
方法看是否能夠拿到頁面數據,因為白屏是頁面數據全部丟失了
如果拿不到就重新跳轉當前頁,這樣就OK了