【问题标题】:Cordova Windows Phone 8.1 app lifecycle events don't fire?Cordova Windows Phone 8.1 应用程序生命周期事件不会触发?
【发布时间】:2015-04-27 17:25:57
【问题描述】:

是否有人有解决方法/建议让 Cordova 4.x 或 5.0.0 触发 Windows Phone 8.1 的“暂停”和“恢复”应用程序生命周期事件?

重现这个:

  • 使用默认的 Tools for Apache Cordova 模板开始一个新的 VS2013 项目。
  • 在 index.js 中的默认 onPause 和 onResume 函数末尾设置断点
  • 使用面向 Windows Phone Universal 的模拟器运行
    • 如果您没有看到 javascript 控制台,则需要退出并从 (myApp)\bld\Debug\platforms\windows 中的 CordovaApp silverlight VS 解决方案运行
  • 点击窗口后退箭头
  • 长按 Windows 后退箭头,选择您的空白应用

预期:当点击 windows 后退按钮或 windows 按钮时,应用程序应在断点处停止。同样,当应用程序恢复时,应用程序应该在断点处停止

实际结果:没有触发断点。

评论:我遇到了这个问题,因为我们有一些间隔计时器,这些计时器在应用程序启动(和 onResume)时设置,并在暂停时关闭。这些间隔定时器没有被关闭,表明 onPause 函数没有被执行。当然,这会导致不希望的“电池扁平化”,但更糟糕的是,如果存在诸如网络连接之类的待处理操作,则在应用程序离开前台时无法取消它们。随后的重新启动可能会或可能不会因此崩溃,并且一旦应用进入启动时崩溃模式,在删除并重新安装之前无法重新启动。

【问题讨论】:

  • 你能分享一个更简单的应用程序重现吗?我已经用一个简单的空白 Cordova 应用程序尝试了这个,但我无法重现这个问题。感谢您使用我们的工具!
  • 谢谢 Subhag —— 默认的 TACo 模板应用程序非常简单。一个空白的 Cordova 应用程序会在您的 onPause 和 onResume 断点处停止?注意:当我触发一个生命周期事件时,它会在 onPause 断点处停止,而不是仅仅按下 Windows 后退键。

标签: cordova windows-phone-8.1 visual-studio-cordova


【解决方案1】:

在调试应用时,Windows 不会挂起它。此行为记录在:http://blogs.msdn.com/b/mspfe/archive/2013/06/17/suspend-and-resume-in-winrt.aspx

如果所有线程都被冻结,调试器将无法在暂停后与应用程序交互。正如您所提到的,您可以触发生命周期事件来模拟挂起/恢复。希望对您有所帮助,谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多