Android關於WebView控件stopLoading方法的正確使用

原文鏈接:http://blog.sina.com.cn/s/blog_7d596c170101eqti.html

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();//在這裏中斷連接
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章