暂停事件在 PhoneGap iPhone 中无法正常工作?
Posted
技术标签:
【中文标题】暂停事件在 PhoneGap iPhone 中无法正常工作?【英文标题】:pause event is not working properly in PhoneGap iPhone? 【发布时间】:2011-11-22 06:48:40 【问题描述】:这是我的代码
//This is an event that fires when a PhoneGap application is put into the background.
document.addEventListener("pause", onPause, false);
//This is an event that fires when a PhoneGap application is retrieved from the background.
document.addEventListener("resume", onResume, false);
// Handle the pause event
function onPause()
console.log("pause : app is put into background");
// Handle the resume event
function onResume()
console.log("resume : app is put into foreground");
当我按下主页按钮时,控制台中没有日志但是当我单击应用程序(使其在前台)时,我的日志是
2011-11-22 12:11:37.206 Event[644:207] [INFO] pause : app is put into background
2011-11-22 12:11:37.206 Event[644:207] [INFO] resume : app is put into foreground
我不知道为什么在前台调用暂停函数。 有什么我做错了吗?
【问题讨论】:
我在 android 上遇到了同样的问题。 【参考方案1】:这是来自文档
ios Quirks
在暂停处理程序中,任何通过 Objective-C 的调用都将不起作用,任何交互式调用(如警报)也不起作用。这意味着您不能调用 console.log(及其变体),或任何来自插件或 PhoneGap API 的调用。这些只会在应用恢复时处理(在下一个运行循环中处理)。
【讨论】:
我也有同样的问题。我知道当我按下主页按钮以最小化应用程序时,console.long 不起作用,但是当我恢复它时,应该有一条消息吧? 它似乎对我不起作用有没有办法可以检查可能出了什么问题?我也尝试过在 documentready 上使用 console.log ,但这也没有用,所以也许我做错了什么。我把我的代码贴在这里给你看看你是否能发现真正有用的问题。 jsfiddle.net/6QXY7 试过了,好像不行。我的代码与文档中的代码相同【参考方案2】:我怀疑实际发生的情况是暂停事件中的 console.log() 并没有在恢复时被触发,因为它只是系统无法输出你的 console.log() 直到它回来。
PhoneGapDelegate.m
中的 Objective-C 方法触发暂停事件 (applicationWillEnterForeground:(UIApplication *)application
) 将其发送到 javascript,但此时应用程序处于后台并暂停。 JavaScript 在重新进入前台之前无法接收事件。
要对此进行测试,只需将您的应用程序后台运行更长的时间......然后它应该会导致他们的错误:
void SendDelegateMessage(NSInvocation*): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode
这似乎是 PhoneGap 中的一个错误。也许您可以通过https://github.com/callback/callback-ios 提出问题?
【讨论】:
感谢您的建议....我会检查它并尝试获得确切的答案..当应用程序长时间处于后台时我没有收到任何错误...这个方法在哪里void SendDelegateMessage(NSInvocation*): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:)
也许该错误是我的测试应用程序特有的。我在github.com/callback/callback-ios/issues/17 添加了一个可能有帮助的问题。当前没有为applicationWillResignActive
或applicationDidBecomeActive
触发事件。当应用程序不活动时,这些可能更适合停止计时器等。以上是关于暂停事件在 PhoneGap iPhone 中无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章
使用 PhoneGap/jQuery Mobile 以编程方式在 iPhone/Android 日历中添加事件?
在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作
应用程序暂停时如何在 iPhone 上获取屏幕锁定/解锁事件?
无法在 iPhone 的 PhoneGap 中使用 AJAX(简单 javascript)调用基于 REST 的 Web 服务