Webview的使用和注意事项

转载 2016年08月29日 10:16:17

1.webView是一个展示web网页的控件,继承 AbsoluteLayout

2.webview的俩个回调应用层:

1)webViewClient 这个对象的创建

WebViewClient     myWibviewVlient=new WebViewClient{

/*当内核开始加载访问的url时,会通知应用程序,对每个main frame这个函数只会被调用一次,页面包含iframe 或者framesets 。

不会另外调用一次onPageStarted,当网页内嵌的frame 发生改变时也不会调用onPageStarted。

*/

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {



}

/*
*

参数说明:

@param view 接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new MyAndroidWebViewClient),即是这个webview。

@param url 即将要被加载的url

@return true 当前应用程序要自己处理这个url, 返回false则不处理。


*/
@Override

public boolean shouldOverrideUrlLoading(WebView view, String url){

// 消耗掉这个事件。Android中返回True的即到此为止吧,事件就会不会冒泡传递了,我们称之为消耗掉
mWebView.loadUrl(url);
return true;
}

@Override

public void onPageFinished(WebView view, String url){



}


@Override

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){

//handler.cancel; // Android默认的处理方式
handler.proceed; // 接受所有网站的证书
// handleMessage(Message msg); // 进行其他处理
}

@Override

public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error){

dismissLoadingProgress;
}

};

2)WebChromeClient

(自己查资料所看到的)

setWebChromeClient主要处理解析,渲染网页等浏览器做的事情

WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 

//还有的解释:

使用WebChromeClient 可以操作Javascript dialogs(js脚本对话框), favicons(添加收藏的标志), titles(标题), 和 progress(进度条).


简单的说,如果除了加载HTML的话,只需要用WebViewClient即可,但是在进行兼容互联网上附加javascript的页面的时候和调用javascript对话框的时候,或者功能较为复杂的

内嵌操作的时候,建议使用WebChromeClient

(原作者:暂时没有用过,就不给大家分享了)

在写WebView时,感觉LoadUrl太浪费流量,而且加载起来有点慢,就考虑用其它的方法来实现。在加载页面时,如果只加载数据,页面模板提前写好放到项目中,这样就可以来更快的加载页面,用户体验会好些。

如果不用loadUrl,省下的就只有LoadData和loadDataWithBaseURL了,下面来说下LoadData和loadDataWithBaseURL 的用法;

loadData:

public void loadData (Stringdata,StringmimeType,Stringencoding)

data:是要加载的数据类型,但在数据里面不能出现英文字符:'#', '%', '\' , '?' 这四个字符,如果有的话可以用 %23, %25, %27, %3f,这些字符来替换,在平时测试时,你的数据时,你的数据里含有这些字符,但不会出问题,当出问题时,你可以替换下。

%,会报找不到页面错误,页面全是乱码。乱码样式见符件。

#,会让你的goBack失效,但canGoBAck是可以使用的。于是就会产生返回按钮生效,但不能返回的情况。

\ 和? 我在转换时,会报错,因为它会把\当作转义符来使用,如果用两级转义,也不生效,我是对它无语了。

我们在使用loadData时,就意味着需要把所有的非法字符全部转换掉,这样就会给运行速度带来很大的影响,因为在使用时,在页面stytle中会使用很多%号。页面的数据越多,运行的速度就会越慢。

data中,有人会遇到中文乱码问题,解决办法:参数传'utf-8',页面的编码格式也必须是utf-8,这样编码统一就不会乱了。别的编码我也没有试过。

public void loadDataWithBaseURL (StringbaseUrl,Stringdata,StringmimeType,Stringencoding,StringhistoryUrl)

在使用loadDataWithBaseURL时,需要注意的就是 baseUr:虽然API上写的是要传一个Url,但我在用时,发现传一个Url并不可以,我发现这个就是一个标志位,用来标志当前页面的Key值的,而historyUrl就是一个value值,在加载时,它会把baseUrl和historyUrl传到List列表中,当作历史记录来使用,当前进和后退时,它会通过baseUrl来寻找historyUrl的路径来加载historyUrl路径来加载历史界面,需要注意的就是history所指向的必须是一个页面,并且页面存在于SD卡中或程序中(assets),loadDataWithBaseURL,它本身并不会向历史记录中存储数据,要想实现历史记录,需要我们自己来实现,也许是我的技术有限,我有了比较笨的访求来实现:就是在加载页面时,我把数据另外的写到一个html页面中,并把它保存到SD中,当点击返回时,它会通过historyUrl指向的路径来加载页面,这样就解决了历史记录问题。

当然baseUrl和historyUrl都可以为空

上面这两种方法,我建议使用后者,虽然loadData的历史记录不需要我们自己来实现,但在使用时,我们必须把所有的%,#,\,?转换掉,在转换时,也许会遇到别的困难,我也没有测完。这就两个加载上后者比前者快一到两倍。

相关文章推荐

Android 4.4 中 WebView 使用注意事项

Android 4.4 中 WebView 使用注意事项

使用webview加载,注意事项

在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android  中提供了其很好的支持,下面是一个例子程序,先帖:  1 ...

Android 4.4 中 WebView 使用注意事项

自Android 4.4起,Android中的WebView开始基于Chromium( 这大概是因为Android部门负责人从Andy Rubin变成了Chrome部门的主管Sundar Picha...

Android WebView js和Java互相调用注意事项

Android WebView js和Java互相调用注意事项在android4.2以前,注入步骤如下: webview.getSetting().setJavaScriptEnable(true)...

Android5.0以上Webview上传文件注意事项

Webview执行上传操作的逻辑是这样的:首先准备上传时会回调 WebChromeClient类下的 openFileChooser 方法,在这个方法中给我们机会发起Intent来打开支持提供文件的第...

android webview js与android互动注意事项

用2.3.1开发会出  ERROR/InputDispatcher(61): channel '40723150 com.JavaScriptCom/com.JavaScriptCom.JavaSc...

WebView注入Java对象注意事项

在android4.2以前,注入步骤如下: [java] view plaincopy webview.getSetting().setJavaSc...

WebView注入Java对象注意事项

在android4.2以前,注入步骤如下: [java] view plaincopy webview.getSetting().setJavaSc...

WebView的注意事项和小实例

webview就是一个简易的浏览器,能够自己设置主页**在webview使用中有以下几点需要注意:** 1、关于访问网络的问题 **Android webview 显示. net:ERR_...

Android问题—Android 4.4后WebView的一些注意事项

本节引言: 本节参考原文:Android 4.4 中 WebView 使用注意事项.md 从Android 4.4开始,Android中的WebView不再是基于WebKit的,而是开始基于C...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)