【问题标题】:Cordova iOS app, page performance issues after coming back from background modeCordova iOS 应用程序,从后台模式返回后的页面性能问题
【发布时间】:2014-05-26 18:12:59
【问题描述】:

我使用 Cordova 编写了我的 iOS SPA,它遵循以下机制

$$.ajax({
    type: 'GET',
    url: 'example.html',
    dataType: 'text',
    cache : true,
    async: true,
    success: function (response) {
         // Attach some handlers to elements.
         // There are bunch of closures here
    },
    error: function (xhr, type) {
         // Load previous page
    }
});

在全球范围内,我正在添加如下委托的事件处理程序

$(document).on('tap', '.element', function(){
    // Do some actions
});

应用程序第一次启动时运行流畅,但是当应用程序从后台模式返回到前台时,我可以看到以下问题

  1. 滚动很慢,就像我不给-webkit-overflow-scrolling : touch
  2. 即使我没有太多要显示的数据,在模板之间切换也很慢。
  3. 在恢复时,我正在获取移动设备的联系人,而让他们的应用程序被阻止,我无法点击任何元素。

这些问题的原因是什么,我知道我有很多问题导致了问题,但无法弄清楚。请帮我解决这个问题。

【问题讨论】:

  • 你有没有想过这个问题?有同样的问题。从后台模式再次打开应用程序后,它运行超慢。多次打开和最小化有时会修复它。
  • @dubbelj 不,我找不到解决方案。后来我还添加了清除相机临时内存..仍然没有帮助

标签: javascript jquery ios cordova


【解决方案1】:

不确定这是否适用于您,但我的 Cordova 应用程序也有类似的问题。这是一款使用requestAnimationFrame进行更新的游戏。我在 HTML5 游戏开发留言板上找到了this thread,它建议在 Cordova 应用程序进入后台时停止任何更新循环,然后在应用程序回到前台时恢复更新循环。

他们的代码示例(当然,根据你的框架变化):

document.addEventListener("pause", function() {
    game.paused = true;
    game.raf.stop();
}, false);

document.addEventListener("resume", function() {
    game.paused = false;
    game.raf.start();
}, false);

修复有效:不再减速。 YMMV。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多