在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作
Posted
技术标签:
【中文标题】在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作【英文标题】:pause and resume listeners not working in phonegap on iOS4.3 and iOS 5 【发布时间】:2012-05-17 10:26:46 【问题描述】:我正在使用 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 中运行良好,当我手动最小化应用程序时,但当应用程序被语音来电中断时,应用程序不会暂停。
基本上不触发暂停和恢复事件。
我正在使用Phonegap1.4.1
【问题讨论】:
【参考方案1】:我相信您的事件侦听器尚未建立,因为您在处理程序函数上使用了Object.bind()
,而.bind()
在 iOS WebKit 小部件中不可用。 (这很令人惊讶,因为.bind()
是在桌面 WebKit(Chrome 和 Safari)版本中可用。)
简单的解决方案是为 Object.bind() 添加一个 polyfill 定义。我用的是MDN bind documentation page的那个,没有任何问题。
【讨论】:
我已经为我的 js 文件覆盖了 bind 方法,并且 bind 和在纯 js 中应用一样好。它在 iOS 的其他地方运行良好。【参考方案2】:抱歉,我还不能发表评论;)
您是否检查了其他两个事件(仅适用于 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
【讨论】:
即使这不起作用......它在锁定按钮的情况下工作但在呼叫的情况下不起作用。 为什么要使用bind(this)...不是已经是全局作用域了吗? 不,它不是一个全局函数......它只是那个 game.js 文件的一个局部函数......【参考方案3】:您需要在 deviceready 中而不是在 onLoad 中添加您的侦听器。 就像这里一样
function onLoad()
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
document.addEventListener("pause", onPause, false);
function onPause()
希望对你有帮助:)
【讨论】:
以上是关于在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作的主要内容,如果未能解决你的问题,请参考以下文章
NSFetchRequest 控制器在 iOS 5 上工作,在 iOS 4.3 上崩溃