Cordova iOS应用程序,从后台模式返回后的页面性能问题

时间:2014-05-26 18:12:59

标签: javascript jquery ios cordova

我使用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. 即使我没有太多要显示的数据,在模板之间切换也非常慢。
  4. 在恢复时,我正在接收手机的联系人,同时让他们的应用程序被阻止,我无法点击任何元素。
  5. 这些问题的原因是什么,我知道有很多事情会导致问题,但是无法弄明白。请帮帮我。

1 个答案:

答案 0 :(得分:2)

不确定这是否适用于您,但我的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。