在webview上设置loadURLTImeOutValue

我正在使用phonegap和Android,并在外部服务器上有我的.html和js文件。 当我使用下面的代码,该应用程序加载我的外部.html文件,一切工作正常:

this.setIntegerProperty("loadUrlTimeoutValue", 60000); this.loadUrl("http://www.myserver.com"); 

但是,当通过webview工作,我似乎无法设置webView的loadURLTimeoutValue:

  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的超时值?

  • 如何在设备而不是模拟器上运行使用Cordova生成的.apk文件?
  • Cordova android构建立即失败
  • 如何在phonegap中使用inputtypes文件?
  • 如何使用手机扫描条形码
  • 如何从Cordova项目中删除Crosswalk?
  • cordova Android要求失败:“找不到安装的Gradle版本”
  • 在WebView上设置loadURLTImeOutValue
  • Phonegap媒体API - 录制和播放audio - Android
  • 这是模拟所描述的行为的解决方法。 您可以使用WebViewClient ,并覆盖onPageStarted方法:

     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() { 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 ,只需执行以下操作:

     webView.setWebViewClient(new MyWebViewClient()); 

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

     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; } } 

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

     <preference name="loglevel" value="DEBUG" /> <preference name="loadUrlTimeoutValue" value="60000" /> <preference name="errorUrl" value="file:///android_asset/www/connection_error.html" /> 

    有关更多首选项,请参阅Androidconfiguration 。

    如果你扩展CordovaWebView,你应该为了获得phonegap API,你可以使用下面的代码:

     this.getIntent().putExtra("loadUrlTimeoutValue", 60000); 

    在内部,CordovaWebView实现了一个类似于上一篇文章中提出的超时机制(默认timeout = 2000)。

    请注意,这不是一个logging的界面,所以它可能会在未来打破。

     WebView mWebView = findViewById(R.id.web_view); mWebView.setWebViewClient(new WebViewClient() { private final Handler handler = new Handler(); private volatile boolean timeout; @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); timeout = true; new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } if(timeout) { handler.post(new Runnable() { @Override public void run() { // do what you want with UI } }); } } }).start(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); timeout = false; } });