2010-11-29 303 views
16

WebViewでタイムアウト値を設定する方法はありますか? URLの応答が遅すぎる場合は、WebViewのタイムアウトが必要です。Android WebView TimeOut

+1

これはhttp://stackoverflow.com/a/7772884/169630 –

答えて

12

getProgress()を呼び出して現在のページの進行状況をチェックするタイマーを設定し、指定された時間が経過してからしきい値を下回っている場合は、現在のページの読み込みを終了できます。

+1

だからあなたはそれが100ではない場合、私は、タイマーを追加し、でgetProgress()を呼び出すことによって、現在のページの進行状況を確認意味ですか役立つshudまだ私はstopLoading()を呼び出すことができます。 – user430926

5

Timerの代わりにonLoadResourceの方法をWebViewClientと使用できます。このように:

webView.setWebViewClient(new WebViewClient() { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return false; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     progressDialog.show(); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     Log.d("WEBCLIENT", "onPageFinished"); 
    } 

    @Override 
    public void onLoadResource(WebView view, String url) { 
     super.onLoadResource(view, url); 
     Log.d("WEBCLIENT","onLoadResource"); 

     if(webView.getProgress() == 100) { 
      progressDialog.dismiss(); 
     }  
    } 
} 
+0

Webビューが完全に停止している場合、これは機能しないと思います。 –

+0

Webページがスタックされている場合、進行状況は100にならないため、webView.getProgress()が100になるまで進行状況バーが表示されます – John

+1

問題は進行状況バーではなくタイムアウトです。これらの関数のどれも呼び出されないため、Webページの読み込みが何パーセントかで完全に停止した場合、このメソッドは機能しません。したがって、アクションを実行する可能性はありません。 –