自定义WebView加载数据很慢

发布于 2024-11-28 04:17:29 字数 1288 浏览 0 评论 0原文

我正在开发一个应用程序,我正在从网络视图中的外部网址加载网页。页面加载需要花费大量时间。如果我在 android 的本机浏览器中打开相同的 url,加载绝对没问题,但在我的自定义 webview 中性能非常糟糕。

这是我的 customWebView Activity 的 onCreate 方法。

 protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_web_view);
    String uri = getIntent().getExtras().getString("uri");
    webView = (WebView) findViewById(R.id.cus_webview);
    dialog = ProgressDialog.show(CustomeWebViewActivity.this, "", "Loading. Please wait...", true, true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    webView.getSettings().setPluginsEnabled(false);
    webView.getSettings().setSupportMultipleWindows(false);
    webView.getSettings().setSupportZoom(false);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setSavePassword(false);
    webView.setVerticalScrollBarEnabled(false);
    webView.setHorizontalScrollBarEnabled(false);
    webView.setWebChromeClient(new MyWebChromeClient());

    webView.clearCache(true);
    webView.clearHistory();
    webView.loadUrl(uri);
    webView.setWebViewClient(new MyWebView());
}

我可以做些什么来通过自定义网页视图减少网页的加载时间。请您提供任何帮助,我们将不胜感激。

I am working on an application where i am loading a webpage from a an external url in a webview. The page loading takes a lot of time. If i open the same url in android's native browser that loads absolutely fine, but the performance is really bad in my custom webview.

here is the onCreate method of my customWebView Activity.

 protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_web_view);
    String uri = getIntent().getExtras().getString("uri");
    webView = (WebView) findViewById(R.id.cus_webview);
    dialog = ProgressDialog.show(CustomeWebViewActivity.this, "", "Loading. Please wait...", true, true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    webView.getSettings().setPluginsEnabled(false);
    webView.getSettings().setSupportMultipleWindows(false);
    webView.getSettings().setSupportZoom(false);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setSavePassword(false);
    webView.setVerticalScrollBarEnabled(false);
    webView.setHorizontalScrollBarEnabled(false);
    webView.setWebChromeClient(new MyWebChromeClient());

    webView.clearCache(true);
    webView.clearHistory();
    webView.loadUrl(uri);
    webView.setWebViewClient(new MyWebView());
}

Is there anything i can do to reduce the loading time of webpage through my custom web view. please, any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阳光①夏 2024-12-05 04:17:29

您也可以尝试这些

webView.getSettings().setRenderPriority(RenderPriority.HIGH);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

和条件检查。

if (Build.VERSION.SDK_INT >= 11){
    webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

还可以在 Menifest.xml 文件中设置 hardwareAccelerated="true"
从 SO 的多个答案中取出,但它有所帮助。

You can also try these

webView.getSettings().setRenderPriority(RenderPriority.HIGH);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

and a conditional check.

if (Build.VERSION.SDK_INT >= 11){
    webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

and can also set hardwareAccelerated="true" in Menifest.xml file
Taken out from multiple answers on SO but it helped.

秋叶绚丽 2024-12-05 04:17:29

删除这两行:

webView.clearCache(true);
webView.clearHistory();

加载速度会更快。

您可以在页面加载后执行此操作,它会在用户注意到的情况下将其全部删除,尽管它可能会产生一些奇怪的行为。您可以在另一个线程或其他方法中删除它。

Remove these two lines:

webView.clearCache(true);
webView.clearHistory();

and it will load faster.

You could do this after your page has loaded, and it will remove it all without the user noticing although it may make some odd behaviour. You could remove it in another thread or other method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文