首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在WebView上设置loadURLTImeOutValue

在WebView上设置loadURLTImeOutValue
EN

Stack Overflow用户
提问于 2011-10-15 03:08:05
回答 6查看 58.2K关注 0票数 25

我正在使用PhoneGap和Android,我的.html和js文件都在一个外部服务器上。当我使用以下代码时,应用程序加载我的外部.html文件,一切正常:

代码语言:javascript
复制
this.setIntegerProperty("loadUrlTimeoutValue", 60000);
this.loadUrl("http://www.myserver.com");

但是,当通过WebView工作时,我似乎无法为WebView设置loadURLTimeoutValue

代码语言:javascript
复制
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);  

try {
     webView = (WebView) findViewById(R.id.webview);    
     webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
     webView.loadUrl("http://www.myserver.com");     
}

这不管用。如何在WebView上设置超时值

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-15 03:56:58

这是一种用于模拟上述行为的解决方法。您可以使用WebViewClient,并覆盖onPageStarted方法:

代码语言:javascript
复制
public class MyWebViewClient extends WebViewClient {
    boolean timeout;

    public MyWebViewClient() {
        timeout = true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                timeout = true;

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                if(timeout) {
                    // do what you want
                }
            }
        }).start();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        timeout = false;
    }
}

如果超时,你可以加载,例如,一个错误页面...

要将WebViewClient添加到您的WebView,只需执行以下操作:

代码语言:javascript
复制
webView.setWebViewClient(new MyWebViewClient());
票数 28
EN

Stack Overflow用户

发布于 2012-08-15 02:56:22

我用这个为我的WebView设置了一个超时时间:

代码语言:javascript
复制
public class MyWebViewClient extends WebViewClient {

    boolean timeout = true;

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        Runnable run = new Runnable() {
            public void run() {
                if(timeout) {
                    // do what you want
                    showAlert("Connection Timed out", "Whoops! Something went wrong. Please try again later.");
                }
            }
        };
        Handler myHandler = new Handler(Looper.myLooper());
        myHandler.postDelayed(run, 5000);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        timeout = false;
    }
}
票数 16
EN

Stack Overflow用户

发布于 2014-03-25 04:55:12

更改默认超时的正确方法是在config.xml文件中使用标记<preference />,例如:

代码语言:javascript
复制
<preference name="loglevel" value="DEBUG" />
<preference name="loadUrlTimeoutValue" value="60000" />
<preference name="errorUrl" value="file:///android_asset/www/connection_error.html" />

有关更多首选项选项,请参阅Android Configuration

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7772409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档