WebView面试知识小结

本博客是对WebView基本面试知识的一个小结,该博客复制参考了Hensen_,感谢原文博主的分享,在前人的基础上做了补充,方便后期知识的回顾。

推荐博文:Android:最全面的 Webview 详解

WebView是一个基于webkit引擎、展现web页面的控件。

1、WebView安全漏洞

API16之前存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可通过使用Java反射机制利用该漏洞执行任意Java对象的方法。

2、WebView销毁步骤

[1] webView的父容器将WebView移除;
[2] webView.removeAllViews();
[2]. webView.destroy()进行销毁;

3、WebView的jsbridge

客户端和服务端之间可以通过Javascript来互相调用各自的方法,是JS和Native之间的一种通信方式。

4、WebViewClient的onPageFinished.

WebViewClient的onPageFinished在每次加载完成页面的时候调用,但是遇到未加载完成的页面跳转其他页面时,就会重复多次调用,使用WebChromeClient.onProgressChanged可以替代。

5、WebView后台耗电

在WebView加载页面的时候,会自动开启线程去加载,如果不很好的关闭这些线程,就会导致电量消耗加大,可以采用暴力的方法,如果你的webView是运行在独立的进程中,可以直接在onDestroy方法中System.exit(0)结束当前正在运行中的java虚拟机。

6、WebView硬件加速

Android3.0引入硬件加速,默认会开启,WebView在硬件加速的情况下滑动更加平滑,性能更加好,但是会出现白块或者页面闪烁的副作用,建议WebView暂时关闭硬件加速。

7、WebView内存泄漏

由于WebView是依附于Activity的,Activity的生命周期和WebView启动的线程的生命周期是不一致的,这会导致WebView一直持有对这个Activity的引用而无法释放,解决方案如下

[1] 独立进程,简单暴力,不过可能涉及到进程间通信(推荐);
[2] 代码中动态添加WebView,对传入WebView中使用的Context使用弱引用;

你可能感兴趣的:(android-面试)