Cordova iOS 应用程序,从后台模式返回后的页面性能问题
Posted
技术标签:
【中文标题】Cordova iOS 应用程序,从后台模式返回后的页面性能问题【英文标题】:Cordova iOS app, page performance issues after coming back from background mode 【发布时间】: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
);
应用程序第一次启动时运行流畅,但是当应用程序从后台模式返回到前台时,我可以看到以下问题
-
滚动很慢,就像我不给
-webkit-overflow-scrolling : touch
即使我没有太多要显示的数据,在模板之间切换也很慢。
在恢复时,我正在获取移动设备的联系人,而让他们的应用程序被阻止,我无法点击任何元素。
这些问题的原因是什么,我知道我有很多问题导致了问题,但无法弄清楚。请帮我解决这个问题。
【问题讨论】:
你有没有想过这个问题?有同样的问题。从后台模式再次打开应用程序后,它运行超慢。多次打开和最小化有时会修复它。 @dubbelj 不,我找不到解决方案。后来我还添加了清除相机临时内存..仍然没有帮助 【参考方案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。
【讨论】:
以上是关于Cordova iOS 应用程序,从后台模式返回后的页面性能问题的主要内容,如果未能解决你的问题,请参考以下文章
Cordova katzer 插件后台模式在 iOS-9 上不起作用
Phonegap / Cordova 在后台 IOS 一段时间后停止音频
Cordova/Phonegap iOS - 应用程序发送到后台后更改了 html5 输入文本类型