2010-11-29 17 views
16

Gibt es eine Möglichkeit, den Timeout-Wert in WebView festzulegen? Ich möchte die WebView Timeout werden, wenn die URL zu langsam ist, um zu antworten.Android WebView TimeOut

+1

diese shud http://stackoverflow.com/a/7772884/169630 helfen –

Antwort

12

Sie können dies tun, indem Sie einen Timer einrichten, der den Fortschritt der aktuellen Seite durch Aufruf von getProgress() überprüft.

+1

So meinen Sie i-Timer hinzufügen und den Fortschritt der aktuellen Seite überprüfen, indem getProgress() aufrufen, wenn es nicht 100 ist Trotzdem kann ich stopLoading() aufrufen. – user430926

5

Wir können onLoadResource Methode von WebViewClient anstelle von Timer verwenden. Wie folgt aus:

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

Ich glaube nicht, dass dies funktionieren würde, wenn die Webansicht vollständig blockiert ist. –

+0

Wenn die Webseite stecken bleibt bedeutet, ihr Fortschritt wird nicht 100, So wird der Fortschrittsbalken angezeigt, bis die webView.getProgress() ist 100 – John

+1

Die Frage war nicht über Fortschrittsbalken, sondern Timeout. Diese Methode würde nicht funktionieren, wenn das Laden der Webseite bei einigen Prozent komplett hängenbleibt, weil keine dieser Funktionen aufgerufen werden würde, so dass es keine Möglichkeit geben würde, Maßnahmen zu ergreifen. –