今年早些时候,我写了一个名为 WebGLGap 的实验性 PhoneGap 插件。 .理论上,它可以通过将所有 JS 调用转发到插件代码来在 PhoneGap 应用程序中启用 WebGL 支持。不幸的是,我放弃了它,因为 Javascript 和插件之间的桥梁是一个巨大的瓶颈:所有内容(包括顶点数据)都被字符串化为一个巨大的字符串,传递给插件,然后解析回 JSON 以供 native 插件代码读取。显然,这使它变得毫无用处。
但是我正在阅读 PhoneGap 2.2 有一个新的桥,它可以快 10 倍以上。它是如何工作的?它是否避免了字符串化?如果该桥足够高效,则可能值得重新审视 WebGLGap。
最佳答案
还是全是字符串。不同之处在于现在的默认值是 XHR_WITH_PAYLOAD,它使用 XMLHttpRequest 和 header 中的参数,而不是 XHR_NO_PAYLOAD,它使用 XHR 触发读取队列,或 IFRAME_NAV,这是可用的更快的方法之一,但与触摸滚动冲突iOS 5 由于 Safari 错误。
XHR_WITH_PAYLOAD 在处理快速请求的错误被修复后在 2.2 中被设置为默认值(https://issues.apache.org/jira/browse/CB-1404)。但是,修复涉及在桥仍然繁忙时回退到稍微慢一点的方法,因此虽然正常使用的性能更好,但您不想将其放入主渲染循环中。
对于这样一个不寻常的要求,自定义桥可能更有意义 - 还有其他可用的方法(例如,带有请求和响应正文内容的 XHR)对于传输大量数据会更好,但不会真正像标准桥一样作为通用解决方案工作。
关于javascript - PhoneGap 2.2 : how does the new bridge work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422138/