在iOS4.3和iOS 5上暂停和恢复不在phonegap中工作的监听器

时间:2012-05-17 10:26:46

标签: iphone ios cordova

我正在使用iOS 4.3在iPhone4中制作原生应用

在我的身体onLoad中添加

document.addEventListener("pause", Game.prototype.pauseListener.bind(this), false);
document.addEventListener("resume", Game.prototype.resumeListener.bind(this), false); 

在同一个文件中我正在编写一个函数

Game.prototype.resumeListener= function()
{

    console.log("in resumeListener");
    this.PauseGame(false);
}

Game.prototype.pauseListener= function()
{
        this.PauseGame(true);

}

此代码在Android中工作得很好,当我手动最小化应用程序时,但当应用程序被语音来电中断时,应用程序不会暂停。

基本上不会触发Pause和Resume事件。

我正在使用Phonegap1.4.1

3 个答案:

答案 0 :(得分:1)

我相信您的事件侦听器尚未建立,因为您在处理程序函数上使用Object.bind(),并且iOS WebKit小部件中没有.bind()。 (由于桌面版WebKit(Chrome和Safari)版本中.bind() 可用,这令人赞叹。)

简单的解决方案是为Object.bind()添加polyfill定义。我使用MDN bind documentation page中的那个,并且没有任何问题。

答案 1 :(得分:0)

抱歉,但我还不能发表评论;)

你检查了其他两个事件(仅对ios有效和辞职)吗?更多信息:http://shazronatadobe.wordpress.com/2012/03/14/apache-cordova-lifecycle-events-in-ios-4-versus-ios-5/

或查看文档中的iOS Quirks:http://docs.phonegap.com/en/1.6.1/cordova_events_events.md.html#pause

答案 2 :(得分:0)

您需要在设备中而不是在onLoad中添加侦听器。 就像这里一样

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady() {
    document.addEventListener("pause", onPause, false);
}

function onPause() {
}

希望有所帮助:)