webview--网络超时
- package com.test.js2java;
- import java.util.Timer;
- import java.util.TimerTask;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.Window;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- public class TestJsActivity extends Activity {
- private long timeout = 5000;
- private WebView mWebView;
- private Handler mHandler = new Handler();
- private Timer timer;
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.main);
- mWebView = (WebView) findViewById(R.id.webview);
- WebSettings webSettings = mWebView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setAllowFileAccess(true);
- mWebView.setWebViewClient(new WebViewClient() {
- /*
- * 创建一个WebViewClient,重写onPageStarted和onPageFinished
- *
- *
- * onPageStarted中启动一个计时器,到达设置时间后利用handle发送消息给activity执行超时后的动作.
- *
- */
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- Log.d("testTimeout", "onPageStarted...........");
- // TODO Auto-generated method stub
- super.onPageStarted(view, url, favicon);
- timer = new Timer();
- TimerTask tt = new TimerTask() {
- @Override
- public void run() {
- /*
- * 超时后,首先判断页面加载进度,超时并且进度小于100,就执行超时后的动作
- */
- if (TestJsActivity.this.mWebView.getProgress() < 100) {
- Log.d("testTimeout", "timeout...........");
- Message msg = new Message();
- msg.what = 1;
- mHandler.sendMessage(msg);
- timer.cancel();
- timer.purge();
- }
- }
- };
- timer.schedule(tt, timeout, 1);
- }
- /**
- * onPageFinished指页面加载完成,完成后取消计时器
- */
- @Override
- public void onPageFinished(WebView view, String url) {
- // TODO Auto-generated method stub
- super.onPageFinished(view, url);
- Log.d("testTimeout", "onPageFinished+++++++++++++++++++++++++");
- Log.d("testTimeout", "+++++++++++++++++++++++++"
- + TestJsActivity.this.mWebView.getProgress());
- timer.cancel();
- timer.purge();
- }
- });
- mWebView.loadUrl("http://image.baidu.com/i?ct=201326592&cl=2&nc=1&lm=-1&st=-1&tn=baiduimage&istype=2&fm=index&pv=&z=0&word=%D7%C0%C3%E6&s=0");
- }
- }
其中要注意的是onPageFinished的两点,第一点,官方是这样解释的:
Notify the host application that a page has finished loading. This method is called only for main frame. When onPageFinished() is called, the rendering picture may not be updated yet. To get the notification for the new Picture, use onNewPicture(WebView, Picture).
也就是说,程序只认为DOM加载完成就完成了,正在加载的图片不在这个范围之内。
第二点是,如果在JS文件中又动态去加载另一JS,onPageFinished方法会在所有的JS全部加载完毕后才调用。
webview--网络超时的更多相关文章
- NSURLConnection 网络超时的那些事(转别人整理的)
NSURLConnection 网络超时的那些事(转别人整理的) 在ios平台上做网络开发最常用的两个类: NSMutableURLRequest *urlRequest = [[NSMutableU ...
- Charles模拟网络请求页面的网络超时测试
正常情况下网络连接超时可能的原因有以下几点: 1.网络断开,手动的关掉了网络的连接 2.网络阻塞,导致你不能在程序默认等待时间内得到回复数据包. 3.网络不稳定,网络无法完整传送服务器信息. 4.系统 ...
- pip安装拓展包--网络超时/Read timed out问题
pip安装拓展包--网络超时/Read timed out问题 解决方案:切换镜像源(墙皮太厚) 在后面加上: -i https://pypi.douban.com/simple example: p ...
- (转)HttpURLConnection中设置网络超时
转:http://www.xd-tech.com.cn/blog/article.asp?id=37 Java中可以使用HttpURLConnection来请求WEB资源.HttpURLConnect ...
- 关于AFNetworking访问网络超时的设置
前言:有的猿会发现在设置AFNetworking访问网络超时时,直接用self.manager.requestSerializer.timeoutInterval =10.f不起作用. 解决办法:经过 ...
- android网络编程注意事项之一:移动网络下,防止网络超时甚至连接不上,解决办法--为网络请求设置代理
Android应用程序访问互联网资源时,在Wifi的情况下处理网络连接按照上文所讲述的方法步骤即可顺利实现:但如果当前Android设备的联网方式是通过移动运营商的网络服务为中转,间接访问的互联网资源 ...
- WebView(网络视图)的两种使用方式
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:第一种方法的步骤:1.在要Activity中实例化W ...
- 当pip安装因为网络超时而无法安装的时候慢
2.4 尝试pip --default-timeout=1000 install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp36-cp ...
- 安卓奇葩问题之:设置webView超时
我只想说:what a fucking day! 今天要做一个webView的超时功能,于是开始百度,一看貌似很简单啊,于是开始copy了下面的代码. import java.util.Timer; ...
- 4.2.1 网络请求之HTTP
HTTP请求&响应:(常用的只有Post与Get,还有Head/put/delete/connect/options/trace) Get&Post(建议用post规范参数传递方式,并 ...
随机推荐
- click 绑定(三)防止事件冒泡
防止事件冒泡 默认情况下,Knockout允许click事件继续在更高一层的事件句柄上冒泡执行.例如,如果你的元素和父元素都绑定了click事件,那当你点击该元素的时候两个事件都会触发的.如果需要, ...
- 修改host文件屏蔽视频广告和网站
很多时候我们会需要屏蔽一些网站或者广告,类似XX网站,下木马病毒的网站,或者破解软件的时候.我们可以使用一些软件屏蔽,我这里是用windows系统自带的hosts文件来屏蔽的.这个文件有点类似精简版的 ...
- 用 jQuery 实现表单验证(摘抄)
——选自<锋利的jQuery>(第2版)第5章的例题 5.1.5 表单验证 表单作为 HTML 最重要的一个组成部分,几乎在每个网页上都有体现,例如用户提交信息.用户反馈信息和用户查询信 ...
- DYNAMIC_DOWNCAST、STATIC_DOWNCAST、CRuntimeClass和IsKindOf
DYNAMIC_DOWNCAST.STATIC_DOWNCAST.CRuntimeClass和IsKindOf DYNAMIC_DOWNCAST(class, pointer ):如果pointe ...
- Understanding postgresql.conf : log*
After loooong pause, adding next (well, second) post to the “series“. This time, I'd like to describ ...
- $(function(){})和$(document).ready(function(){}) 的用法
当文档载入完毕就执行,以下几种效果是等价的:1. $(function(){ //这个就是jQuery ready()的简写,即下2的简写 // do something }); 2. $(docum ...
- libc-glibc
glibc 和 libc 都是 Linux 下的 C 函数库. libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. ANSI C 和 GNU ...
- 导入安卓项目的时候,发生错误:Cause: peer not authenticated
导入安卓项目时出现Cause: peer not authenticated. 在网上搜了解决方案,都没有凑效.后来干脆插上手机直接debug安装,竟然成功了,成功了,成功了!!!! 然后再次buil ...
- 使用注解来构造IoC容器
用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package=”pagkage1[,p ...
- JaxWsDynamicClientFactory弃用了,改成org.codehaus.xfire.client;
搞了好几天jar包冲突,最后修改接口调用方式 java.lang.IllegalStateException: Unable to create JAXBContext for generated p ...