【问题标题】:PhoneGap 2.2: how does the new bridge work?PhoneGap 2.2:新桥如何工作?
【发布时间】:2012-11-16 18:11:47
【问题描述】:

今年早些时候,我编写了一个名为WebGLGap 的实验性PhoneGap 插件。理论上,它可以通过将所有 JS 调用转发到插件代码来在 PhoneGap 应用程序中启用 WebGL 支持。不幸的是,我放弃了它,因为 Javascript 和插件之间的桥梁是一个巨大的瓶颈:所有内容(包括顶点数据)都被字符串化为一个巨大的字符串,传递给插件,然后解析回 JSON 以供本机插件代码读取。显然这让它变得毫无用处。

但是我正在阅读 PhoneGap 2.2 有一个新桥,它可以快 10 倍以上。它是如何工作的?它是否避免了字符串化?如果网桥足够高效,可能值得重新审视 WebGLGap。

【问题讨论】:

    标签: javascript cordova webgl phonegap-plugins


    【解决方案1】:

    它仍然是所有字符串。不同之处在于现在的默认值是 XHR_WITH_PAYLOAD,它使用 XMLHttpRequest 在标头中带有参数,而不是 XHR_NO_PAYLOAD,它使用 XHR 触发读取队列,或 IFRAME_NAV,这是可用的更快方法之一,但与触摸滚动冲突iOS 5 由于一个 Safari 漏洞。

    XHR_WITH_PAYLOAD 在修复了处理快速请求的错误 (https://issues.apache.org/jira/browse/CB-1404) 后在 2.2 中设置为默认值。但是,如果网桥仍然很忙,修复会回退到稍微慢一点的方法,因此虽然性能对于正常使用来说更好,但您不想将其放入主渲染循环中。

    对于这样一个不寻常的要求,自定义桥可能更有意义 - 还有其他可用的方法(例如,带有用于请求和响应的正文内容的 XHR)对于传输大量数据会更好,但不会真正像标准桥梁一样作为通用解决方案工作。

    【讨论】:

    • 感谢您的回答。我可以在任何地方找到更多关于如何制作非串接桥的信息,或者我应该为此发布一个单独的问题吗?
    • 不确定这是您可能会找到其他人从事的那种要求。您最好的选择可能是从 xhr 桥的代码开始。您仍然需要某种序列化,但如果您可以针对特定数据进行优化,您可能会提高性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2016-05-24
    • 2017-02-20
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多