在Android 5上随机显示黑色画布

时间:2015-04-20 17:41:04

标签: javascript jquery-mobile canvas android-webview

我们正在开发Apache Cordova中的webapp。作为javascript库,我们使用jQuery,jQuery Mobile和Charts.js

现在在Android 5中发生了一些非常奇怪的事情。有时,如果没有清晰的图案,图表就不会显示,我们会​​看到画布应该是黑色区域。如果我们刷新页面或者如果我们向下滚动以覆盖画布然后向上显示它,那么一切都会再次起作用。 当错误发生时,logcat说:

E/chromium(21275): [ERROR:gles2_cmd_decoder.cc(6309)] [.Parent-Compositor-0xb4b6df60]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering or is not 'texture complete'
E/chromium(21275): [ERROR:gles2_cmd_decoder.cc(6309)] [.Parent-Compositor-0xb4b6df60]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering or is not 'texture complete'

3 个答案:

答案 0 :(得分:1)

周末有一个WebView更新,现在我们的两个应用程序的问题已经消失。 dariosalvi可能会发现图表现在也正常运行。 (Android 5的一个新功能是WebView独立于操作系统进行更新。)

答案 1 :(得分:0)

我找到了一个可能的原因:

如果我删除jQuery Mobile动画过渡,问题似乎消失了。即使我在“pagecontainershow”之后渲染画布,也许浏览器会过早地渲染画布,但我只是在猜测。

答案 2 :(得分:0)

我们看到类似于我们的两个PhoneGap应用程序,这些应用程序在Android 5之前在多个平台上运行良好。我们的应用程序使用jQuery和jQuery Mobile。我已经更新到最新的库,但它没有帮助。我也尝试过关闭页面过渡而没有明显效果。

事实上,我们最大的问题是屏幕通常最初在画布应该是黑色的地方。转换到另一个页面并返回通常会修复它。

在某些情况下,画布也没有正确重绘。我根据Chromium WebView迁移说明(http://developer.android.com/guide/webapps/migrating.html)检查了我们正在处理touchend和touchcancel但事实上这在Android 4.4中运行良好,这是第一个使用新WebView的。

如果您想看到这种奇怪的行为,请从Google Play安装我们的“WordEke”应用。欢迎任何建议!

PS - 可以确认我也收到渲染警告。以下是logcat中的前几个相关行(有许多渲染警告):

E/chromium(13492): [ERROR:gles2_cmd_decoder.cc(10748)] [.Parent-Compositor-0xb50fe510]GL ERROR :GL_INVALID_OPERATION : glConsumeTextureCHROMIUM: invalid mailbox name
E/chromium(13492): [ERROR:gles2_cmd_decoder.cc(6309)] [.Parent-Compositor-0xb50fe510]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering or is not 'texture complete'
I/art     (  819): Explicit concurrent mark sweep GC freed 18772(846KB) AllocSpace objects, 1(16KB) LOS objects, 26% free, 44MB/60MB, paused 1.486ms total 108.916ms
E/chromium(13492): [ERROR:gles2_cmd_decoder.cc(6309)] [.Parent-Compositor-0xb50fe510]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering or is not 'texture complete'
E/chromium(13492): [ERROR:gles2_cmd_decoder.cc(6309)] [.Parent-Compositor-0xb50fe510]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering or is not 'texture complete'