这是我的代码
//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
我不知道为什么在前景中调用暂停函数 有什么我做错了吗?
答案 0 :(得分:6)
这是来自文档
在暂停处理程序中,任何通过Objective-C的调用都不起作用,也不会发生任何交互式调用,如警报。这意味着您无法调用console.log(及其变体),也无法调用Plugins或PhoneGap API中的任何调用。这些只会在应用程序恢复时处理(在下一个运行循环中处理)。
答案 1 :(得分:2)
我怀疑实际发生的事情是,暂停事件中的console.log()并没有在恢复时触发,因为它只是系统无法输出你的console.log()直到它返回。 / p>
PhoneGapDelegate.m
中用于触发暂停事件(applicationWillEnterForeground:(UIApplication *)application
)的Objective-C方法将其发送到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?
提出问题