项目中用到WKWebview的童鞋有可能会遇到突然页面白屏问题,这个问题是因为内存不够了webview的进程被程序终止了,那我们如何监听到进程被终止的事件以及做何处理呢?

(一)监听WKWebview进程终止

iOS9时系统提供了一个监听方法

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){

}

iOS8则需要自己添加一个监听事件,即监听URL,当之前的URL不为空,而新的URL为空时则表示进程被终止了,c此处建议添加一个iOS8的判断,并且delloc时需要移除观察者,也需加iOS8判断

[self.wkwebView addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:nil];

(二)进程终止时处理
进程终止后需要我们重新加载 WKWebview,只需要调用reload方法即可重新加载出页面,
具体代码如下:

iOS9监听处理,此处的processDidTerminated变量,是为了标志进程终止这个状态,可用户重新加载页面时保存数据,以免数据丢失。

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){

NSLog(@"进程被终止");

NSLog(@"%@",webView.URL);

processDidTerminated = YES;

[webView reload];

}

iOS8监听处理

#pragma mark - KVO

// 计算wkWebView进度条

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

if (object == self.wkwebView && [keyPath isEqualToString:@"estimatedProgress"]) {

CGFloat newprogress = [[change objectForKey:NSKeyValueChangeNewKey] doubleValue];

if (newprogress == 1) {

[self.progressView setProgress:1.0 animated:YES];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

self.progressView.hidden = YES;

[self.progressView setProgress:0 animated:NO];

});

}else {

self.progressView.hidden = NO;

[self.progressView setProgress:newprogress animated:YES];

}

}else if (object == self.wkwebView && [keyPath isEqualToString:@"URL"])

{

NSURL *newUrl = [change objectForKey:NSKeyValueChangeNewKey];

NSURL *oldUrl = [change objectForKey:NSKeyValueChangeOldKey];

if (IsNull(newUrl) && !IsNull(oldUrl)) {

processDidTerminated = YES;

[self.wkwebView reload];

};

}

}

WKWebview的那些坑之白屏问题相关推荐

  1. iOS开发~WKWebView白屏适配

    WKWebView虽好,但白屏问题也很苦恼,下面分享一下自己解决问题的过程. 公司项目使用Cordova框架,做原生项目嵌入H5,业务复杂了以后,H5资源也越来越大,占用内存越来越多,加载也越来越慢, ...

  2. webview加载页面有2秒白屏_iOS WKWebview 白屏检测实现

    前言 自ios8推出wkwebview以来,极大改善了网页加载速度及内存泄漏问题,逐渐全面取代笨重的UIWebview.尽管高性能.高刷新的WKWebview在混合开发中大放异彩表现优异,但加载网页过 ...

  3. as3 android白屏,Android 8.0中一些坑以及对应的解决方法

    前言 虽然 Android 9.0 都已经面世了,本篇文章写的有点迟了. 但是迟到好过不到,因此基于此这边还是记录一下项目中遇到的 Android 8.0 的坑及对应解决方法. 每次系统升级,虽然系统 ...

  4. 深入理解WKWebView白屏

    白屏是webview进程终止之后的表现,在webview因异常使用内存.CPU等资源时,webkit会终止当前m页展示的进程,在用户端表现为白页. 第一.webview的进程被终止的原因有哪些? Pr ...

  5. WKWebView白屏问题

    WKWebView白屏问题 WKWebView自诩拥有更多的加载速度,更低的内存占用,但实际上WKWebView是一个多进程组件,Network Loading以及UI Rendering在其他进程中 ...

  6. wkwebview 在iOS10以下系统显示白屏问题

    打了测试环境的包,在iOS11系统上任何wkwebview界面显示都没有什么问题,但是到了iOS10的系统上,或者iOS9的系统上都显示白屏,遇到不配和你调试的H5,你想把他撕吧撕吧喂鹰的心都有了,但 ...

  7. WKWebView 白屏问题

    1.WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行.初次适 ...

  8. WKwebview 白屏问题——(WebApp/HybirdApp)

    我们app从ReactNative转H5app,在开发过程中发现一个顽固性问题.点击H5的tabbar或者页面之间点击跳转会偶现白屏问题.或者app退到后台一段时间唤醒app会出现白屏. 白屏原因: ...

  9. 修复WKWebView的白屏问题

    公司的一个iOS app登录界面是原生开发,登录成功后打开一个webview加载web页面.第二次登录就看是否保存了token,如果有就直接打开webview加载.但是测试反应登录后在后台放一段时间, ...

最新文章

  1. ES权威指南[官方文档学习笔记]-57 Analysis and analyzers
  2. 北大韦神透露现状:自己课讲得不太好,中期学生退课后就剩下5、6个人...
  3. Android7.1 Presentation双屏异显原理分析
  4. python 批量增加文件前缀_Excel VBA工作薄 7.5批量增加工作表前缀/后缀 工作表区分更方便...
  5. 在servlet中读取初始化参数和上下文参数的方法getServletContext()和getInitParameter()
  6. Java中Volatile的理解
  7. maven-antrun-plugin - Target
  8. 模版:线段树合并+线段树分裂
  9. 数据结构第六篇——顺序存储结构与链式存储结构的特点
  10. gstat | 空间插值(三)——克里金插值之泛克里金和简单克里金
  11. javascript 开发多种类型的应用(Electron 跨平台开发)
  12. Linux相对路径和绝对路径
  13. Android实现圆形图片 真菜鸟食用
  14. 基于深度学习的以图搜图
  15. Itext中强行调整行高缩小行间距
  16. Android:滤镜效果ColorMatrix用法一
  17. Microbit Turnipbit 孩子也能做的声光控开关
  18. Java培训,我为什么选择传智播客
  19. 什么是莆田鞋,价格贵吗,质量怎么样
  20. Elasticsearch专栏-1.为什么引入es

热门文章

  1. delphi 简单代码实现安卓手机震动
  2. VB6对接语音验证码接口DEMO示例
  3. dell服务器 指示灯_Dell PowerEdge:传统服务器(第10代和第11代)上的系统LED状态指示灯...
  4. uniapp 微信小程序开启分包
  5. 【Vue系列1】—— Vue入门和基础指令
  6. [C#]自定义修改文件夹颜色及图标含源码
  7. 2017年全球最有影响力的50家机器人公司排行榜
  8. 考研日语线上笔记(四):中级日语语法总结20课(1~10)
  9. 一本通 1283:登山
  10. 微信android字体颜色,企业微信使用markdown发送消息,手机端看不到font标签设置的字体颜色...