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();//在這裏中斷連接
}
};