作者:lijiankun24
链接:https://www.jianshu.com/p/c7166cecd77e
现在 Android 应用中都会多多少少嵌入一些 H5 页面,在 Android SDK 中有一个名为 WebView 的组件,它是一个 webkit 内核的高性能浏览器,在 Android 应用中的 H5 页面用它展示是非常合适的。本篇文章就介绍一下 WebView 相关的一些知识,相关代码放在 GitHub 的 WebViewPractice 的工程里。
本篇文章主要介绍以下几点:
- WebView 的简单使用
- WebViewClient
- WebChromeClient
- WebViewClient 和 WebChromeClient 的区别
- Js 和 Java 代码的交互
- WebView 的缓存
- WebView 引起的内存泄露
1. WebView 的简单使用
如果只是想简单地使用 WebView,通过下面几步即可展示一般功能需求的 H5 页面。
-
在
AndroidManifest.xml申请网络权限 -
在 XML 布局文件中添加
WebView控件,并在 Java 代码中得到该 WebView 的对象<!-- activity_main.xml --> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_webview_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> ...... <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> ...... </LinearLayout>// MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @TargetApi(21) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } }); webView.loadUrl("https://ke.youdao.com"); } -
如果访问的页面中含有 JavaScript 的代码,则需要设置 WebView 支持 Javascript。
webView.getSettings().setJavaScriptEnabled(true); -
如果页面中含有连接,点击链接如果想继续在当前浏览器中浏览网页,则需要重写 WebView 的 WebViewClient 对象。
webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @TargetApi(21) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request

本文介绍了Android中的WebView组件,包括其简单使用、WebViewClient与WebChromeClient的配置与区别,以及Js与Java代码的交互方式。详细讨论了WebView的缓存策略和可能引发的内存泄露问题,并提供了防止内存泄露的解决方法。适合Android开发者深入理解WebView的使用。
最低0.47元/天 解锁文章
715

被折叠的 条评论
为什么被折叠?



