相关疑难解决方法(0)

Android WebView性能

在我的应用程序中,我正在加载webview中的外部URL列表,并允许用户翻阅它们.Web视图被加载到视图翻录器上.我发现webview加载网址的性能非常糟糕.我已经尝试了从使用框架布局到限制要加载的webview数量的所有内容.表现仍不尽如人意.

如何优化webview的性能?这应该是一种常见的用法.我错过了一些明显的东西.

我的Webview设置是 -

    webView.setInitialScale(WEBVIEW_SCALE);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(false);
    webView.setWebViewClient(new MyWebViewClient());    
    webView.setOnTouchListener( new OnTouchListener());
Run Code Online (Sandbox Code Playgroud)

android webview

17
推荐指数
1
解决办法
3万
查看次数

Android Webview的ClearCache非常慢

我在Android应用程序中使用WebViews,我需要阻止WebViews缓存.

不幸的是,似乎这个看似简单的目标几乎是不可能实现的.我使用的解决方案是在onPageFinished事件中执行webview.clearCache(true),以便每次加载页面时都清除缓存.有一些问题......

我注意到随着缓存的增长,执行clearCache方法变得非常耗时.有时,如果执行clearCache然后切换到包含不同webview的不同Activity,则该webview将不会加载几秒钟,因为它仍在等待先前的clearCache操作完成.

更糟糕的是,在缓存已经被清除之后,对clearCache的后续调用的执行时间似乎没有减少.如果对clearCache的调用需要3秒才能完成,然后我立即再次调用clearCache,那么我希望第二次调用clearCache几乎立即完成.但那不是我所经历的; 我遇到第二次调用clearCache仍然需要大约3秒钟.

还有其他人经历过这个吗?有什么方法可以提高性能吗?加载webview(从本地文件系统)等待2-3秒是非常可怕的.

编辑:

这是我实际清除缓存的最佳选择.它或多或少有效,但它有点片状,我不是百分之百满意(用Mono c#编写):

public class NoCacheWebClient : WebViewClient
{
    string previous;

    public override void OnPageStarted(WebView view, string url, Android.Graphics.Bitmap favicon)
    {
        base.OnPageStarted(view, url, favicon);

        if (!string.Equals(previous, url))
        {
            previous = url;
            view.Reload(); //re-load once to ignore cache
        }
        else
        {
            previous = null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android caching webview clear-cache

2
推荐指数
1
解决办法
6071
查看次数

标签 统计

android ×2

webview ×2

caching ×1

clear-cache ×1