Cordova Windows Phone 8.1 应用程序生命周期事件不触发?
Cordova Windows Phone 8.1 app lifecycle events don't fire?
有没有人有 workaround/suggestion 让 Cordova 4.x 或 5.0.0 触发 Windows 的 'pause' 和 'resume' 应用程序生命周期事件Phone 8.1?
重现:
- 使用默认的 Tools for Apache Cordova 模板启动一个新的 VS2013 项目。
- 在 index.js
中默认的 onPause 和 onResume 函数末尾设置断点
- 运行 模拟器目标 Windows Phone 通用
- 如果您没有看到 javascript 控制台,您需要退出并 运行 从 (myApp)\bld\Debug\platforms\windows[=30 中找到的 CordovaApp silverlight VS 解决方案=]
- 点击 windows 后退箭头
- 长按 windows 后退箭头,选择您的空白应用程序
预期:当点击 windows 后退按钮或 windows 按钮时,应用程序应在断点处停止。同样,当应用程序恢复时,应用程序应该在断点处停止
实际结果:两个断点都没有触发。
评论:我 运行 加入这个是因为我们有一些间隔计时器,这些计时器在应用程序启动时(以及 onResume 时)设置,并在暂停时关闭。这些间隔计时器没有关闭,表明没有执行 onPause 函数。当然,这会导致不受欢迎的 "flattening of the battery" 但更糟糕的是,如果有待处理的操作(如网络连接),则当应用程序离开前台时,它们无法取消。随后的重新启动可能会或可能不会因此而崩溃,并且一旦应用程序进入启动时崩溃模式,它就无法重新启动,直到它被删除并重新安装。
在调试应用程序时,Windows不会暂停它。此行为记录在:http://blogs.msdn.com/b/mspfe/archive/2013/06/17/suspend-and-resume-in-winrt.aspx
如果所有线程都被冻结,一旦挂起,调试器将无法与应用程序交互。正如您提到的,您可以触发生命周期事件来模拟 suspending/resuming。希望对您有所帮助,谢谢!
有没有人有 workaround/suggestion 让 Cordova 4.x 或 5.0.0 触发 Windows 的 'pause' 和 'resume' 应用程序生命周期事件Phone 8.1?
重现:
- 使用默认的 Tools for Apache Cordova 模板启动一个新的 VS2013 项目。
- 在 index.js 中默认的 onPause 和 onResume 函数末尾设置断点
- 运行 模拟器目标 Windows Phone 通用
- 如果您没有看到 javascript 控制台,您需要退出并 运行 从 (myApp)\bld\Debug\platforms\windows[=30 中找到的 CordovaApp silverlight VS 解决方案=]
- 点击 windows 后退箭头
- 长按 windows 后退箭头,选择您的空白应用程序
预期:当点击 windows 后退按钮或 windows 按钮时,应用程序应在断点处停止。同样,当应用程序恢复时,应用程序应该在断点处停止
实际结果:两个断点都没有触发。
评论:我 运行 加入这个是因为我们有一些间隔计时器,这些计时器在应用程序启动时(以及 onResume 时)设置,并在暂停时关闭。这些间隔计时器没有关闭,表明没有执行 onPause 函数。当然,这会导致不受欢迎的 "flattening of the battery" 但更糟糕的是,如果有待处理的操作(如网络连接),则当应用程序离开前台时,它们无法取消。随后的重新启动可能会或可能不会因此而崩溃,并且一旦应用程序进入启动时崩溃模式,它就无法重新启动,直到它被删除并重新安装。
在调试应用程序时,Windows不会暂停它。此行为记录在:http://blogs.msdn.com/b/mspfe/archive/2013/06/17/suspend-and-resume-in-winrt.aspx
如果所有线程都被冻结,一旦挂起,调试器将无法与应用程序交互。正如您提到的,您可以触发生命周期事件来模拟 suspending/resuming。希望对您有所帮助,谢谢!