相关文章推荐
有爱心的显示器  ·  Lerna specify run ...·  11 月前    · 

有什么办法可以在WebView中设置超时值? 我想让WebView在URL响应太慢的情况下被超时。

android
android-webview
user430926
user430926
发布于 2010-11-29
3 个回答
bhups
bhups
发布于 2020-12-28
已采纳
0 人赞同

你可以通过设置一个定时器来做到这一点,该定时器通过调用以下命令来检查当前页面的进度 getProgress (),如果它在某个指定的时间后小于某个阈值,那么你就可以取消当前页面的加载。

所以你的意思是,我添加计时器,并通过调用getProgress()检查当前页面的进度,如果还没有到100,我可以调用stopLoading()。
John
John
发布于 2020-12-28
0 人赞同

我们可以用 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();
    
I don't think this would work if the web view is completely stuck.
John
如果网页被卡住意味着,它的进度不会是100,所以进度条将被显示,直到,webView.getProgress()是100为止。
问题不是关于进度条,而是关于超时。如果网页的加载完全卡在某个百分比,这个方法就不起作用了,因为这些函数都不会被调用,所以就没有可能采取行动。
John
是的,你是对的。那么在资源被加载之前,应该有一个定时器在运行。
很好,节省了我的时间
JoaquinBu
JoaquinBu
发布于 2020-12-28
0 人赞同

I use

@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();