小编ant*_*ycr的帖子

在触及Android 4.2.2之前,WebView无法呈现

我正在开发一个名为Lightning Browser的开源浏览器,我在Android(4.2.2)的最新更新中遇到了一些麻烦.

在触摸视图之前,WebView将无法完全呈现.它只发生在最新的Android版本上.在4.2.1上,WebView呈现完全正常.我使用Nexus 7进行开发,在收到4.2.2更新后,浏览器停止渲染.其他用户也经历过这种情况,并且仅在4.2.2上多次确认.它正在针对API级别16和17进行,但我看到了一个针对API级别9的WebKit浏览器,没有出现此问题.

我试图使用我在Stack Overflow上找到的问题的解决方案来解决这个问题(Android WebView呈现空白/白色,视图不会更新css更改或HTML更改,动画不稳定).但是,单独将WebView的RenderPriority设置为high并不能解决它...在不触及的情况下使其呈现的唯一方法是将invalidate()命令放在WebView的OnDraw()方法中.这会导致WebView不断重绘.这样(有点),动画是平滑的,页面加载非常快,但它会导致WebView的性能下降.

我也看过这个问题(与我的非常相似),但没有好的答案.Android WebView无法在用户交互之前完全呈现内容

通过性能下降,我的意思是输入.文本输入滞后,WebView本身无法处理以前发生的事情.使用invalidate()方法调用对浏览器进行基准测试会使基准测试性能下降约8%.我知道基准测试不是一切,但它告诉我连续绘图使系统紧张并导致系统忽略其他任务.

结论... Android 4.2.2中的WebView在触摸之前不会呈现.我知道解决这个问题的唯一方法是在WebView的onDraw()方法中调用invalidate().这对性能不利,我正在寻找一种不同的方法来解决这个问题.

魔法代码(我目前正在使用)......

class MyWebView extends WebView
{
    @Override
    onDraw(Canvas canvas)
    {
        invalidate(); 
        super.OnDraw(canvas);
    }
}
Run Code Online (Sandbox Code Playgroud)

去掉

invalidate();
Run Code Online (Sandbox Code Playgroud)

直到触摸它才会渲染.

有没有人建议如何使WebView渲染(除了我做过)?顺便说一句,这是我在Stack上问过的第一个问题,如果我不清楚或者我做错了什么,请原谅我.

编辑:我在这里发现了一个关于类似问题的问题并且它已经解决,问题是,我不明白答案甚至意味着什么.如果有人能够启发我可能会有所帮助.

我在logcat中收到此错误

E/chromium(1243): external/chromium/net/disk_cache/backend_impl.cc:2022: [0705/172030:ERROR:backend_impl.cc(2022)] Corrupt Index file
Run Code Online (Sandbox Code Playgroud)

android android-webview

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

标签 统计

android ×1

android-webview ×1