2021 - 46周(WKWebView后台白屏)

当app从后台返回时,使用WKWebView加载的H5页面偶尔出现白屏现象。分析认为这与设备内存使用有关。解决方案是在app唤醒时检测WKWebView状态,若白屏则重新加载页面。判断白屏的方法包括检查title是否为空、URL是否为about:blank、执行JS获取document.body.innerHTML及屏幕截图分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

        当打开app中使用WKWebView嵌入的H5页面,然后切换到其它app一段时间后再切回本app时,偶现H5页面白屏(没有任何内容展示)的现象。

        此时app并未被杀死,返回其它页面后,app仍然可以继续正常运行,只是当前H5页面没有任何内容。初步判断只是系统将WKWebView的内容清空了。经过我们多次模拟,发现这是一种介于app在后台可被唤醒继续运行和app在后台被杀死之间的状态。猜测其原因还是与设备的内存使用有关(因为在app退到后台的情况下,多使用一些占用内存较大的其它app,更容易复现出该问题)。

解决思路

        对于这个问题的解决思路,我们认为可以在app从后台唤醒的时候,判断当前webview的状态,如果是展示白屏,那么就重新加载一遍刚才的网页,即可重新展示刚才的内容了,只不过页面会从顶部展示(没有锚点到刚才用户浏览的位置),我们认为这一点可以接受。

        这个方案中其它步骤都好处理,关键问题就是如何判断当前webview处于白屏的状态。下面我就说说我们通过查找资料和测试实践发现的几种判断白屏的方式。

判断webview白屏的一些思路

  • 判断当前webview的title为空
//webView就是WKWebView对象
self.webView.title == nil || self.webView.title.length == 0

        我们最终就是使用这种方式。经过测试,当webview白屏时,其title为空字符串,为了更严谨,我们在app退到后台的时候对当前webview的title进行了记录,如果本来webview的title就是空,那么就不使用这种刷新方式了,也就是说这种方式对本来title就为空的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值