stopLoading()方法从字面上翻译过来就可以知道是停止加载的意思。
Android中使用WebView控件实现链接超时响应,一般都会通过重写WebViewClient类的onPageStarted方法,通过添加timer,达到自定义链接最大时长的目的,但是在timer的run方法体中调用webview的stoploading方法达不到预料中的效果,原因是出在java线程安全机制,java会认为在异步线程中调用修改控件的状态是不安全的。正确的方法应该是使用Hander类。
// 开始加载页面时
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
final int progressNum = view.getProgress();
final Handler handler=new Handler();
timer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
if (progressNum < 100) {
System.out.println("链接超时");
handler.post(runnable);
timer.cancel();
timer.purge();
}
}
};
timer.schedule(tt, 30000, 1);//30最大链接时间为30秒
}
Runnable runnable=new Runnable() {
public void run() {
webView.stopLoading();//在这里中断连接
}
};