参见英文答案 >
Android WebView renders blank/white, view doesn’t update on css changes or HTML changes, animations are choppy 7个答案 我正在开发一个名为“闪电浏览器”的开源浏览器,而对于Android(4.2.2)的最新更新,我遇到了一些麻烦。
在视图被触摸之前,WebView将无法完全渲染。它只发生在最新的Android版本上。在4.2.1,WebView渲染完全正常。我使用我的Nexus 7进行开发,在我收到4.2.2更新之后,浏览器停止渲染。其他用户也经历过这样的事情,并且在4.2.2中确认多次发生。目前正在针对API第16级和第17级,但是我看到一个WebKit浏览器的API级别为9,没有出现此问题。
我已经尝试使用解决方案来解决这个我在Stack Overflow(Android WebView renders blank/white, view doesn’t update on css changes or HTML changes, animations are choppy)上发现的问题。然而,将WebView的RenderPriority设置为高,并不能解决这个问题,只有将无效的()命令放在WebView的OnDraw()方法中)时,才能使它无法被触摸。这导致WebView重新绘制。这样做(排序),动画流畅,页面加载速度非常快,但会导致WebView的性能下降。
通过性能下降,我的意思是输入。文本输入滞后,WebView本身不能处理发生的事情以及之前的情况。使用invalidate()方法调用浏览器将基准测试的性能降低了约8%。我知道基准并不是一切,但它告诉我,连续的绘图正在使系统变得紧张,导致系统忽略其他任务。
结论是…
Android 4.2.2中的WebView将不会渲染直到触摸。我知道解决这个问题的唯一方法是在WebView的onDraw()方法中调用invalidate()。这对于性能不利,我正在寻找一种不同的方法来解决这个问题。
魔法代码(我正在使用)…
class MyWebView extends WebView
{
@Override
onDraw(Canvas canvas)
{
invalidate();
super.OnDraw(canvas);
}
}
去掉
invalidate();
直到被触摸才会呈现。
有没有人有关于如何使WebView渲染(除了我做的)的建议?顺便问一下,这是我在Stack上问的第一个问题,所以请原谅我,如果我还不清楚,或者我做错了。
编辑:
我发现这个问题here有一个类似的问题,它被解决了,问题是,我不明白答案甚至是什么意思。如果有人可以启发我,这可能会有帮助。
我在logcat中收到这个错误
E/chromium(1243): external/chromium/net/disk_cache/backend_impl.cc:2022: [0705/172030:ERROR:backend_impl.cc(2022)] Corrupt Index file