正义之剑之静心之布衣看世界 發表於 2021-2-3 10:49:00

uni-appios端app白屏问题

<p>&nbsp;</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>=&gt;<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>=&gt;<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(() =&gt;<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>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/qdjj/p/14365789.html
頁: [1]
查看完整版本: uni-appios端app白屏问题