html5 webview面试,(五)Webview面试问题

一、Webview常见的一些坑

1.Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用Webview.addJavaScriptInterface方法,远程攻击者可通过反射利用该漏洞执行任意Java对象的方法。

2.当Webview是在代码中动态添加的,比如添加在LinearLayout中,在onDestroy()方法中,需先将Webview从LinearLayout中移除掉,不然会造成内存泄漏。

3.jsbridge:通过JavaScript搭一座桥,可以通过本地native代码可以调用远端JS的代码,同时也可以让远端JS的代码调用本地native的代码。

4.webviewClient.onPageFinished是判断网页又没有加载完成时调用的,当网页没有加载完成时就跳转页面,该方法将会调用无数次。建议使用WebChromeClient.onProgressChanged方法。

5.后台耗电,开启webview之后会自动开启后台线程,如果没有很好将webview销毁的话,这些线程将会一直运行。

6.webview硬件加速导致页面渲染问题,容易出现页面加载白块和页面闪烁的现象,解决方法是设置暂时关闭硬件加速。

二、关于webview的内存泄漏问题

问题原因 :webview会与Activity进行关联,webview执行的操作是在新的线程中进行的,Activity的生命周期和新线程的生命周期是不一样的,导致webview会一直持有Activity的引用,不能回收。

解决方法 :

1.单独开启一个进程给webview进行操作,简单暴力,不过可能涉及到进程间通信。

2.动态添加webview,对传入的webview中使用Context的弱引用,在布局创建个ViewGroup用来放置webview,Activity创建时add进来,Activity停止时remove掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值