自学内容网 自学内容网

android webview常见内容

WebView 是 Android 系统中用于展示网页内容的一个组件。

Android 4.4 之前, 使用 WebKit 渲染引擎,之后使用了 Chromium 的内核

url 加载流程

首先,通过loadUrl()方法或者loadData()等方法来触发加载。当调用这些方法后,WebView 会向服务器发送请求(如果是网络资源),服务器返回网页数据,包括 HTML 文档等或本地 js包数据。然后 WebView 对这些数据进行解析,依次处理 HTML 标签构建 DOM 树,加载和解析 CSS 样式,执行 JavaScript 代码,最终将网页内容渲染显示出来。

安全设置

JavaScript 注入攻击

  • 可以对网页的请求进行拦截,通过shouldOverrideUrlLoading方法检查 URL 是否安全,避免恶意跳转。如果 URL 不符合要求,可以返回true来阻止 WebView 进行默认的加载行为。
  • 通过WebSettingssetJavaScriptEnabled()谨慎开启 JavaScript 功能,只在必要的场景下启用

性能优化

提高加载速度

  • 预加载 WebView,让 WebView 提前初始化并加载部分内容。
  • 启用缓存,通过WebSettingssetCacheMode()设置合适的缓存模式,例如LOAD_CACHE_ELSE_NETWORK
  • 对 HTML、CSS 和 JavaScript 进行优化,比如压缩资源文件、减少重定向等。

内存泄漏

  • 同时,对于长时间运行的 WebView,要合理管理其生命周期,避免不必要的资源占用。
  • 当 Activity 销毁时,如果 WebView 没有被正确处理,它可能仍然占用内存。为避免内存泄漏,在 Activity 的onDestroy方法中,先移除 JavaScript 接口,再调用destroy()方法来销毁 WebView。

与 JavaScript 交互相关

如何在 Android 的 WebView 中实现与 JavaScript 的交互?

答案首先在WebViewWebSettings中通过setJavaScriptEnabled(true)开启 JavaScript 支持。然后可以通过addJavascriptInterface()方法将一个 Java 对象暴露给 JavaScript,使得 JavaScript 可以调用 Java 方法。同时,也可以从 Java 代码中通过loadUrl()(执行 JavaScript 语句)或者evaluateJavascript(在 Android 4.4+,返回结果更方便)方法来调用 JavaScript 函数。

在 WebView 与 JavaScript 交互过程中,有哪些注意事项?

答案:一是要注意安全问题,因为将 Java 对象暴露给 JavaScript 可能会导致安全漏洞,如前面提到的 JavaScript 注入攻击,所以暴露的方法要谨慎设计,避免包含敏感信息或危险操作。二是要注意线程问题,因为 JavaScript 在 WebView 的 UI 线程中执行,所以在 Java 方法与 JavaScript 交互时,要确保不会阻塞 UI 线程,否则会导致应用卡顿。

常用API

启用 JavaScript:

WebView webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);

通过设置viewport来调整网页的缩放和布局

WebView webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
String metaViewport = "<meta name=\"viewport\" content=\"width=device - width, initial - scale=1.0\">";
webView.loadDataWithBaseURL(null, metaViewport + "你的网页内容", "text/html", "UTF - 8", null);

 设置文本缩放比例

webSettings.setTextZoom(100); 

原文地址:https://blog.csdn.net/emmmsuperdan/article/details/143774364

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!