17

有没有办法在 WebView 中设置超时值?如果 url 响应太慢,我希望 WebView 超时。

4

3 回答 3

11

您可以通过设置一个 Timer 来执行此操作,该 Timer 通过调用getProgress () 检查当前页面的进度,如果在某个指定时间后它小于某个阈值,则您可以关闭当前页面的加载。

于 2010-11-29T10:53:41.727 回答
5

我们可以使用onLoadResource方法 ofWebViewClient代替Timer。像这样:

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();
        }    
    }
}
于 2015-07-21T11:05:58.400 回答
1

我用

@Override
    public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) {
        final Dialog dialog = new Dialog(MainActivity.this, android.R.style.Theme_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.alert_dialog);
        Button btTryAgain = dialog.findViewById(R.id.bt_try_again);
        btTryAgain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                recreate();
            }
        });
        dialog.show();
        //Toast with error conection
        Toast.makeText(getApplicationContext(), "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show();
    }

其中 -alert_dialog- 是带有重试按钮的布局

于 2020-12-27T22:48:52.263 回答