首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >blockWebkitDraw是什么意思以及如何修复它?

blockWebkitDraw是什么意思以及如何修复它?
EN

Stack Overflow用户
提问于 2013-08-03 19:56:55
回答 4查看 13K关注 0票数 17

我正在使用WebView包装一个安卓应用程序,它需要渲染一个HTML5画布。它在我所有的设备上都能完美地工作,除了一个。我的Galaxy S4 (4.2.2)在画布上闪烁,然后很快变成灰色。下面是它生成的logcat消息:

D/GestureDetector(20071):表面触摸事件mSweepDown False,mLRSDCnt:-1 mTouchCnt :7 mFalseSizeCnt:0

V/WebViewInputDispatcher输入分派器(20071):blockWebkitDraw

V/WebViewInputDispatcher(20071):blockWebkitDraw lockedfalse

D/webview(20071):blockWebkitViewMessage= false

我点击一个按钮,然后画布就会被渲染。这就是为什么第一个日志项是用于表面触摸事件的原因。当我使用webkit浏览器直接ping我的应用程序时,它可以在我的S4上工作,但当我自己包装它或使用Cordova时,它会给我这个错误。我已经添加了两个屏幕截图来进一步显示问题。第一个是正确呈现的,第二个是问题所在。

Android 2.3.6:

Android: 4.2.2:

回到我的问题上来。这条消息是怎么回事?有没有人有关于如何正确渲染画布的建议?

EN

回答 4

Stack Overflow用户

发布于 2014-03-15 02:45:49

我可以通过在android清单文件中将sdk的最低版本设置为14来解决这个问题:

代码语言:javascript
复制
<uses-sdk android:minSdkVersion="14" />

在版本14中,消息仍会出现在日志中,但会处理触摸事件。当我将minSdkVersion设置回来时,触摸事件不会被处理。在清单中关闭硬件加速,以及通过各种CSS webkit样式,都没有帮助。只有minSdkVersion设置为我修复了它。

不知怎么的,在Galaxy Tab上,SDK对旧版本的支持导致了javascript触摸事件处理的问题,而blockWebkitDraw在触摸移动发生时保持正确。这会阻止canvas代码接收touchmove事件并执行绘图。当我将SDK版本设置为14时,当触发触摸事件时,blockWebkitDraw将设置为true,但在处理触摸之后,它将被取消设置,并调用要绘制的画布代码。

票数 2
EN

Stack Overflow用户

发布于 2013-10-11 23:04:10

我粗略地浏览了一下WebView和WebViewInputDispatcher类,但什么也没找到。也许你可以看看那里。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/webkit/WebView.java http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/webkit/WebViewInputDispatcher.java

我的想法是,也许你可以找出阻塞发生的地方,或者扩展这些类,或者创建自己的副本并修改它们。

票数 1
EN

Stack Overflow用户

发布于 2013-11-06 08:12:52

在Galaxy Tab2上测试时,我也遇到了类似的问题。在我的例子中,我只有一个简单的超链接,而不是按钮,但问题是一样的。这是我的发现:

每当我触摸屏幕时,无论我是否点击按钮或链接,我的控制台中都会出现错误消息,标记为WebViewInputDispatcher,值为blockWebkitDraw lockedfalse。因此,此错误消息与onTouch事件有关,而不是您可能预期的按钮单击。

当最初通过点击我的一个链接进行测试时,我最初认为Galaxy Tab阻止了我的链接。事实证明,Galaxy Tab 2对点击行为非常不敏感,所以当我以为我在点击链接时,我实际上错过了。通过点击比我认为必要的稍高一点,我就能够激活我的链接了。

为了证实我的怀疑,我大大增加了我的链接的字体大小。有了更大的链接,我可以在第一次尝试时成功点击该链接,我的应用程序现在可以按预期执行。我强烈地怀疑,如果你只是把你的按钮放大一点,你就能成功地点击它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18032616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档