【问题标题】:WebView takes too much time to load [duplicate]WebView 加载时间过长[重复]
【发布时间】:2018-04-25 05:14:35
【问题描述】:

我正在开发一个应用程序,我想在 WebView 中加载报纸链接,但问题是我的 WebView 需要太多时间来加载报纸,如果我在浏览器中打开它,加载速度很快。我已经为 web 编码设置也。请帮忙。

代码:

    webView = (WebView)findViewById(R.id.webView);//Use the WebView defined in your layout.
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    webView.getSettings().setAppCacheEnabled(true);
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webSettings.setDomStorageEnabled(true);
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
    webSettings.setUseWideViewPort(true);
    webSettings.setSavePassword(true);
    webSettings.setSaveFormData(true);
    webSettings.setEnableSmoothTransition(true);


    final Activity activity = this;
    webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {

        }
    });
    webView.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, "Some error occurred. " + description, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {

            progressBar.setVisibility(View.VISIBLE);
            webView.setVisibility(View.GONE);
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            progressBar.setVisibility(View.GONE);
            webView.setVisibility(View.VISIBLE);
            super.onPageFinished(view, url);
        }

    });

    webView.loadUrl(url);

在清单中:

      <application
          android:hardwareAccelerated="true"/>

【问题讨论】:

  • 您能找到解决问题的方法吗?我有同样的问题。

标签: android android-layout android-studio android-fragments android-webview


【解决方案1】:

在你的清单文件中添加如下:

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

在您使用 webview 的活动中,在 setContentView() 之前放置以下代码:

getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

最后,在你的代码中这样做:

if (Build.VERSION.SDK_INT >= 19) {
     webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}       
else {
     webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

【讨论】:

  • 我是否需要在我的 webview 活动@Hemant 中提及 因为它不适合我
  • 保留此代码,您将面临视频流渲染问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 2016-06-20
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多