【问题标题】:WebView not loading some pages twiceWebView没有两次加载某些页面
【发布时间】:2016-01-31 18:18:34
【问题描述】:

我正在使用WebView,但我遇到了一个奇怪的问题。假设我使用loadUrl(...) 加载了 youtube.com,它正在加载,但是如果我再次加载同一页面,它就无法正确加载,甚至 onPageFinished(...) 也不会触发

编辑:当我加载或任何其他具有交互性并具有 js 内容的网站时,它不会加载两次。 即使我创建了一个新的 WebView 实例。

Load youtube.com -> OK
Load youtube.com again -> Error, onPageFinished not called, white page
Load google.com -> OK
GoBack -> Youtube.com loaded but still problematic. (Only header and a few views)

清单:

 <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:configChanges="keyboard|keyboardHidden|screenSize"
        android:largeHeap="true"
        android:vmSafeMode="true"
        android:hardwareAccelerated="true"
    >

这里是 webView 设置:

    mWebView.setDrawingCacheBackgroundColor(0x00000000);
    mWebView.setFocusableInTouchMode(true);
    mWebView.setFocusable(true);
    //mWebView.setAnimationCacheEnabled(false);
    mWebView.setDrawingCacheEnabled(false);
    mWebView.setWillNotCacheDrawing(true);
    //mWebView.setAlwaysDrawnWithCacheEnabled(false);
    mWebView.setScrollbarFadingEnabled(true);
    mWebView.setSaveEnabled(true);

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.getSettings().setDisplayZoomControls(false);
    mWebView.getSettings().setUseWideViewPort(true);
    mWebView.getSettings().setSaveFormData(PrefsManager.getInstance().isSaveAutoFill());
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setSupportMultipleWindows(true);

   mWebView.getSettings().setLoadsImagesAutomatically(PrefsManager.getInstance().isAutoLoadImages());
    mWebView.getSettings().setGeolocationEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.getSettings().setAllowContentAccess(true);
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setAppCacheEnabled(true);
    mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    mWebView.getSettings().setAllowContentAccess(true); 

什么会导致这个问题? WebView 是我的应用程序的主要功能,在出现此错误之前它的工作方式非常棒。

我也在使用 WebViewClient 和 WebChromeClient 来覆盖这些方法。

onProgressChanged, onReceivedTitle, onCloseWindow, onCreateWindow, onGeolocationPermissionsShowPrompt, onConsoleMessage, onReceivedSslError,  onPageFinished, onPageStarted, shouldOverrideUrlLoading  

【问题讨论】:

  • 添加代码,你也调用了 loadUrl() 和 OnPageFinished。
  • 请调试您的代码并检查 pageFinished() 是否被调用了两次?
  • @KishuDroid,它没有被调用。
  • @AlekseyMazurov 我删除了除了 shouldOverrideUrlLoading 之外的所有内容,但仍然存在问题。 loadUrl(...) 也基本上是加载 url。
  • 试试这个链接的解决方案。 stackoverflow.com/questions/18282892/…

标签: android webview


【解决方案1】:

使用以下设置。

mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);        

【讨论】:

  • 谢谢,但没有帮助。
猜你喜欢
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2017-07-03
  • 2013-08-17
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多