Android WebView使用总结

#.简介:

    WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。

#一、WebView常用方法

1.加载Url或资源的方法

        //方式1:加载指定Url,可以指向网络资源,也可以是本地资源。这是最常用的加载方法。
        webView.loadUrl("百度一下,你就知道");
        webView.loadUrl("file:///xxx/xxx/test.html");
        //方式2:加载内容片段
        loadData(String data, String mimeType, String encoding);
        loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl));
​
注意:Android9.0之后,默认情况下是禁用明文支持的,因为默认是无法加载Http协议类型的Url的,加载时会报错:net:ERR_CLEARTEXT_NOT_PERMITTED。可以 把Http协议类型的Url换成对应的Https协议类型Url。
    如果要支持加载Http类型的Url,需要在AndroidManifest.xml中
<application> </application>节点下添加配置:  android:usesCleartextTraffic="true"

2.生命周期相关方法

        /*2.生命周期相关方法
            一般会根据所在页面的生命周期变化,来调用以下相关方法*/
        //2.1激活WebView实例为活跃状态,能正常执行网页的响应
        webView.onResume();

        //2.2通知WebView实例的内核暂停所有的动作,如页面解析、插件加载、JavaScript脚本执行等。
        //一般当页面被失去焦点被切换到后台不可见状态,需要执行onPause
        webView.onPause();

        //2.3暂停应用中所有webview的layout、parsing、javascriptTimer等,降低CPU功耗。
        //一般当应用被切换到后台时,调用该方法,作用于所有WebView
        webView.pauseTimers();
        //2.4恢复调用pauseTimers()后被暂停的状态
        webView.resumeTimers();

        //2.5销毁WebView实例
        //注意:为避免出错,要先把WebView从所在View树上移除,再销毁WebView实例
        rootLayout.removeView(webView);
        webView.destroy();

3.页面前进、后退

        /*3.页面前进、后退*/
        //是否可以后退
        webview.canGoBack();
        //后退一页
        webview.goBack();

        //是否可以前进
        webview.canGoForward();
        //前进一页
        webview.goForward();

        //以当前的index为起始点前进或者后退到历史记录中指定的steps
        //如果steps为负数则为后退,正数则为前进
        webview.goBackOrForward(steps);

4.事件拦截

        /*4.事件拦截
            有很多相关的方法,下面是几个例子*/
        //例如覆写按键事件,onKeyDown()/onKeyUp()
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            //示例:点击返回按钮后,默认是触发Activity的finish。若需要触发网页回退,可以添加代码:
            if ((keyCode == KEYCODE_BACK) && mWebView.canGoBack()) {
                mWebView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            return super.onKeyUp(keyCode, event);
        }

5.设置回调接口

        /*5.设置回调接口
            有很多可设置的接口,下面是个例子*/
        //设置下载监听接口
        webView.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
               
            }
        });

6.其它方法

    /*6.其它方法*/
    //刷新页面(当前页面的所有资源都会重新加载)
    webView.reload();
    //停止加载
    webView.stopLoading();
    //清除整个应用中WebView网页访问留下的缓存
    webView.clearCache(true);
    //清除对应WebView访问的历史记录
    webview.clearHistory();
    //清除当前WebView自动完成填充的表单数据(并不会清除WebView存储到本地的数据)
    webview.clearFormData();

#二、常用的辅助类:WebSetting/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值