http://www.androidlearner.net/android-webview-loadurl-timeout.html
..........
private long timeout = 15000;
private WebView mWebView;
private Timer timer;
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case MSG_PAGE_TIMEOUT :
//这里对已经显示出页面且加载超时的情况不做处理
if(mWebView != null && mWebView.getProgress() < 100 && mWebView.getContentHeight() )
load404Page() ;
break ;
}
}
};
public class MyWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// set url loading time out thread
mTimer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
Message m = new Message();
m.what = MSG_PAGE_TIMEOUT ;
mHandler.sendMessage(m);
mTimer.cancel();
mTimer.purge();
}
};
mTimer.schedule(tt, TIME_OUT);
}
@Override
public void onPageFinished(WebView view, String url) {
mTimer.cancel() ;
mTimer.purge() ;
}
}
webview只需要监听上述类即可:mWebView.setWebViewClient(new MyWebViewClient());
也可以参考这里的实现,代码如下:
public class MyWebViewClient extends WebViewClient {
boolean timeout;
public MyWebView() {
timeout = true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(timeout) {
// do what you want
}
}
}).start();
}
@Override
public void onPageFinished(WebView view, String url) {
timeout = false;
}
}