2010-11-29 18 views
16

¿Hay alguna manera de establecer el valor de tiempo de espera en WebView? Quiero que el WebView sea timeout si la url es demasiado lenta para responder.Android WebView TimeOut

+1

este shud ayudar http://stackoverflow.com/a/7772884/169630 –

Respuesta

12

Puede hacerlo configurando un temporizador que verifica el progreso de la página actual llamando al getProgress() y si es inferior a algún umbral después de un tiempo especificado, puede descartar la carga de la página actual.

+1

Entonces, ¿quiere decir que añadir temporizador y comprobar el progreso de la página actual llamando getProgress(), si no es 100 sin embargo, puedo llamar a stopLoading(). – user430926

5

Podemos usar el método onLoadResource de WebViewClient en lugar de Timer. De esta manera:

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

No creo que esto funcione si la vista web está completamente atascada. –

+0

Si la página web está bloqueada significa que su progreso no será 100, por lo que la barra de progreso se mostrará hasta que, webView.getProgress() sea 100 – John

+1

La pregunta no fue sobre la barra de progreso, sino el tiempo de espera. Este método no funcionaría si la carga de la página web se bloquea completamente en algún porcentaje porque ninguna de estas funciones se llamaría, por lo que no habría posibilidad de tomar medidas. –