我一直在尝试使用WebView内部的画布来捕捉小图。在Chrome或非常简单的测试页面上进行测试,画布执行正常。我的意思是,如果我将手指拖过500像素宽的画布,我会看到60-100个touchMove事件。
这个基于画布的实用程序是作为jQuery插件实现的。当我在我的大型Web应用程序中使用该插件时,当我在500像素宽的画布上执行相同的手指拖动时,画布仅捕获大约20个左右的事件。
我对应用程序与简单测试页面可能导致性能下降的原因有很多想法,但到目前为止还没有任何进展。 Xoom测试设备上的内存和CPU使用情况似乎很好。
以下是一些症状,但尚未找到确凿的解决方案:
04-12 10:47:58.037: WARN/webview(13316): Miss a drag as we are waiting for WebCore's response for touch down.
我在简单的测试页面场景中以及在较大的Web应用程序中使用插件时看到这样的消息。这些消息需要更加有力的绘图才能在简单的测试页面中重现。只需在WebView内部的画布上快速绘制草图动画,您可能会看到它,至少在与Xoom 1相似的硬件上。偶尔会有关于过时的touchMove事件的消息,尽管它们不太常见
可能会或可能不会导致问题或解决方案的其他一些细节:
settings.setRenderPriority(WebSettings.RenderPriority.HIGH); //applying high render priority is in place
该应用程序是一个离线应用程序,因此我们必须启用缓存。 应用程序中有10-20K的JavaScript,不包括库,但我没有理由怀疑这会减慢将touchMove事件传递到WebView内的画布。
我已经看过其他人放弃了WebView内部画布的帖子,尽管他们正在研究比这个简单的绘图应用程序更密集的应用程序。显然,我需要更快地完成更多事件,或者我所有的曲线都看起来像直线。
有没有人知道touchMove事件退化的确切原因,或者现在是时候放弃Android WebView中的画布了吗?