【发布时间】:2014-09-03 08:35:59
【问题描述】:
我拥有一个 AngularJs 应用程序,我通过 Cordova 将其转换为原生应用程序。
整个工作在 iOS (iphone) 上,但是我刚刚注意到,如果我将应用程序放在后台,然后重新打开/恢复它,应用程序有时会“冻结”大约 5 秒钟然后工作。 5 秒内无滚动、无点击事件。
这有什么已知的原因吗?如何避免?这很令人沮丧。
我找到了导致问题的代码:
document.addEventListener("resume", function () {
$rootScope.$broadcast('retrieveAllNotifications', null);
}, false);
所以,根据文档:
当 resume 事件触发时,像 alert() 这样的交互式函数将 需要包含在超时值为零的 setTimeout 调用中, 否则应用程序将挂起。例如
于是我变成了:
document.addEventListener("resume", function () {
$timeout(function () {
$rootScope.$broadcast('retrieveAllNotifications', null);
}, 0);
}, false);
但它仍然挂起。
但是,当我删除广播时,它可以工作。
如何解决?例如将超时时间增加到 1 秒?
【问题讨论】: