在一个面板上面有两三个按钮,每个按钮加载一个不同的远程页面,其中一个网页是通的,另外一个网页是不通的(就是显示不出来的)
共用一个webview,当我在已经显示的界面上,通过面板上的点击按钮加载不通的页面的时候,页面显示还是通的那个页面,而不同的页面会在两三分钟后才给出错误提示,
用户体验很不好。貌似点了以后没有响应,其实是一直在请求的····
有没有方法,设置请求的时长,超过了设置的时间就不进行处理了?
你用什么请求的 asyncHttpClient.setTimeout(15000); 类似语法都差不多
Webview是有一个请求加载造成的回调监听的。设定一个定时器,当开始请求的时候就开始启动计时器,在计时器还未到期时就继续加载,当加载完成时,如果计时器还未到期,就终止计时器就行了
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(final WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
final Handler handler=new Handler();
timer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
/*
* 超时后,首先判断页面加载进度,超时并且进度小于100,就执行超时后的动作
*/
if (MainActivity.this.mWebView.getProgress() < 100) {
Log.d("testTimeout", "timeout...........");
handler.post(runnable);
timer.cancel();
timer.purge();
}
}
};
timer.schedule(tt, timeout, 1);
}
Runnable runnable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mWebView.stopLoading();
}
};
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
Log.d("testTimeout", "onPageFinished+++++++++++++++++++++++++");
Log.d("testTimeout", "+++++++++++++++++++++++++" + MainActivity.this.mWebView.getProgress());
timer.cancel();
timer.purge();
}
});
mWebView.loadUrl("http://6.6.0.60/rkzgapi/app/sj.aspx#/sj1");
}
是按照网上的思路来的,结果程序出异常报错,有大神没有麻烦看看啊