我一直在尝试使用 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 内的画布了?