【问题标题】:In Cordova, is there a limit to the number of calls you can make to a plugin?在 Cordova 中,对插件的调用次数是否有限制?
【发布时间】:2015-06-19 02:09:54
【问题描述】:

当我运行这段代码时,调用次数似乎限制在 1000 左右

var i = 1;
$interval(function() {
  navigator.geolocation.getCurrentPosition(function(position) {
    console.log('Plugin call number', i);
  });
  i++;
}, 10);

有没有办法超越这个限制?

编辑 1:这只是一个示例。就我而言,我有自定义相机插件,并且在每次“捏合”或“捏合”事件时都会调用其中一种方法。

Edit 2:当达到限制时,应用程序停止调用插件(在这种情况下,它停止在 1004)

此外,内存使用量不会停止增长

Edit 3:问题似乎只出现在 Ionic 中。我在纯 Cordova 应用程序中尝试过这段代码,调用次数似乎不受限制(而且内存使用量增长更慢)

onDeviceReady: function() {
    app.receivedEvent('deviceready');
    if (window.cordova) {
        var i = 1;
        setInterval(function() {
            navigator.geolocation.getCurrentPosition(function(position) {
                console.log('Plugin call number', i);
            });
            i++;
        }, 10);
    }
}

【问题讨论】:

  • 你能告诉我们当达到“限制”时会发生什么吗?
  • @Sithys 感谢您的关注。我添加了几个屏幕截图
  • 我认为它由于内存使用而停止工作,但我只是在使用插件和你的脚本进行测试。给我一些时间,我会报告我的结果。
  • @Sithys 我忘了提到我通过 Ionic 使用 Cordova。我只是在纯 Cordova 应用上做了一些测试,似乎没有出现问题
  • 您能否在纯科尔多瓦应用程序中提供完整的代码 sn-p 代码?

标签: cordova phonegap-plugins ionic-framework ionic cordova-plugins


【解决方案1】:

Ionic 是基于 Angular 构建的,Angular 在达到大约 2,000 data bindings 后因性能问题而臭名昭著。如果没有看到您的来源,很难确切地知道发生了什么,但是如果捏合动作正在创建新的绑定,则可能是这种情况。检查您的捏调用是否正在启动新的数据绑定,如果是,您可能需要优化您的应用以使用单向绑定、一次性绑定或从作用域中释放它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多