android webview 加载本地html,低配置手机超级慢

  如题:android webview 加载本地html,低配置手机超级慢,这是在低配置手机android 4.4版本上遇到这样的问题,本地的html已经放在了asserts文件夹下面,然后运行,在htc上,有时候需要十几秒的始终,好一点的手机也要7/8秒钟,感觉这个不能忍,然后搜索了网上结合Stack Overflow上的答案,我的配置如下,经过这样的修改,时间变为3秒钟左右,提升了不少的速度,完整如下:

1.webview的设置:

 chart_webview = (WebView) contentView.findViewById(R.id.chart_webview);
        // 设置文字默认大小
        //chart_webview.getSettings().setDefaultFontSize(100);

        chart_webview.getSettings().setTextZoom(180);

        chart_webview.getSettings().setUseWideViewPort(true);//關鍵點
        chart_webview.getSettings().setLoadWithOverviewMode(true);
        chart_webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        //这个是国外网站Stack Overflow推荐提升加载速度的方式
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            // chromium, enable hardware acceleration
            chart_webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        } else {
            // older android version, disable hardware acceleration
            chart_webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        }
        //chart_webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);


        chart_webview.setBackgroundColor(0);
        chart_webview.getSettings().setBuiltInZoomControls(true);
        chart_webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
        chart_webview.getSettings().setJavaScriptEnabled(true);
        chart_webview.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

        chart_webview.addJavascriptInterface(new JavascriptInterface(), "jsInterface");


        // 加上如下语句就可以使js弹出警告框
        chart_webview.setWebChromeClient(new WebChromeClient() {

            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                if (newProgress == 100) {
                    // 滚动条消失
                }
            }

        });
        chart_webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // chart_webview.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
            
              
            }
        });

        chart_webview.loadUrl(CommData.url);
    }
2.主配置文件对于activity配置
android:hardwareAccelerated="true"属性
这样配置之后就可以加快速度,参考链接:提升webview加载速度

你可能感兴趣的:(Android)