是否有人有解决方法/建议让 Cordova 4.x 或 5.0.0 触发 Windows Phone 8.1 的“暂停”和“恢复”应用程序生命周期事件?
要重现此内容:
- 使用默认的 Apache Cordova 工具模板启动一个新的 VS2013 项目。
- 在index.js中默认的onPause和onResume函数末尾设置断点
- 使用面向 Windows Phone Universal 的模拟器运行
- 如果您没有看到 JavaScript 控制台,则需要退出并从 (myApp)\bld\Debug\platforms\windows 中找到的 CordovaApp silverlight VS 解决方案运行
- 点击窗口后退箭头
- 长按 Windows 后退箭头,选择您的空白应用
预期:当点击 Windows 后退按钮或 Windows 按钮时,应用程序应在断点处停止。同样,当应用程序恢复时,应用程序应该在断点处停止
实际结果:两个断点都没有被触发。
评论:我遇到这个问题是因为我们有一些间隔计时器,这些计时器是在应用程序启动(以及 onResume)时设置的,并在 Pause 时关闭。这些间隔计时器没有被关闭,表明 onPause 函数没有被执行。当然,这会导致不良的“电池电量耗尽”,但更糟糕的是,如果存在诸如网络连接之类的待处理操作,则当应用程序离开前台时,它们无法取消。随后的重新启动可能会或可能不会崩溃,一旦应用程序进入启动时崩溃模式,它就无法重新启动,直到删除并重新安装为止。
最佳答案
当应用程序正在调试时,Windows 不会暂停它。此行为记录在:http://blogs.msdn.com/b/mspfe/archive/2013/06/17/suspend-and-resume-in-winrt.aspx
如果所有线程都被卡住,调试器一旦挂起将无法与应用程序交互。正如您所提到的,您可以触发生命周期事件来模拟挂起/恢复。希望这会有所帮助,谢谢!
关于Cordova Windows Phone 8.1 应用程序生命周期事件不触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902242/