uni-appios端app白屏问题
<p> </p><p><span style="font-size: 18px; color: rgba(255, 0, 0, 1)">hbuilder版本高于3.0.0,则此方法不适用,使用最新的 https://www.cnblogs.com/qdjj/p/15196221.html</span></p>
<p>最近开发了一款使用uni-app做框架的app</p>
<p>打包上线后发现在ios端项目在后台运行时内存不足重回页面时当前tabbar页面是正常,但是其他tabber页会白屏</p>
<p>但是安卓端没有遇到这种问题,看了官方文档配置了</p>
<p>"kernel" : {<br> "ios" : "WKWebview",<br> "recovery" : "restart"<br> },</p>
<p>意思是页面崩溃后重启项目</p>
<p>但是实际还是没有生效,之后经过研究发现出一种方法可以用</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 判断是不是ios,是否发生白屏</span>
<span style="color: rgba(0, 0, 0, 1)"> uni.getSystemInfo({
success: (res) </span>=><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (res.platform == 'ios'<span style="color: rgba(0, 0, 0, 1)">) {
const query </span>= uni.createSelectorQuery().<span style="color: rgba(0, 0, 255, 1)">in</span>(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> isRecovery = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
query
.select(</span>'#containerId'<span style="color: rgba(0, 0, 0, 1)">)
.boundingClientRect(data </span>=><span style="color: rgba(0, 0, 0, 1)"> {
isRecovery </span>= <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
})
.exec();
</span><span style="color: rgba(0, 0, 255, 1)">var</span> timer = setTimeout(() =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (isRecovery) {
uni.reLaunch({
url:</span>'/pages/tabbar/user/user'<span style="color: rgba(0, 0, 0, 1)">
})
clearTimeout(timer);
timer </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
}
}, </span>500<span style="color: rgba(0, 0, 0, 1)">)
}
},
})</span></pre>
</div>
<p>因为只在ios上有问题,所有先判断是否是ios端,再通过</p>
<pre>uni.createSelectorQuery()<br>方法看是否能够拿到页面数据,因为白屏是页面数据全部丢失了<br>如果拿不到就重新跳转当前页,这样就OK了</pre>
<p> </p><br><br>
来源:https://www.cnblogs.com/qdjj/p/14365789.html
頁:
[1]