问题描述
当打开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为空字符串,为了更严谨&#