javascript - PhoneGap 2.2 : how does the new bridge work?

标签 javascript cordova webgl phonegap-plugins

今年早些时候,我写了一个名为 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/

相关文章:

javascript - 从服务函数内 Angular 调用服务函数,引用此不起作用

javascript - uv_queue_work 不在 Node 插件中运行 callback_method (c++)

android - Cordova 插件的输出延迟

javascript - webgl drawArray 中间结果

javascript - "How to Diffie Hellman"使用 RSA 和 JavaScript

javascript - 移除 ES6 中的事件监听器

node.js - Windows 上的 Cordova inAppBrowser 插件问题

javascript - 带有本地 Javascript 文件的 Cordova 应用程序——很多文件还是只有一个?

glsl - 使用 Phong 照明和定向照明

3d - webgl 本身支持哪些文件格式?