【问题标题】:Windows Phone XNA Games Hangs on Resume when Guide is Visible on WP7.x当指南在 WP7.x 上可见时,Windows Phone XNA 游戏挂起恢复
【发布时间】:2013-06-04 14:56:09
【问题描述】:

我的 Windows Phone XNA 游戏调用 Guide.BeginShowKeyboardInput 来获取用户名。在显示指南的输入屏幕时,如果用户按下主页或搜索(硬件)按钮,游戏将照常停用 - 但如果用户随后按下返回(硬件)按钮,游戏应该恢复但它没有.相反,它会显示“正在恢复...”消息,直到 Windows Phone 放弃尝试恢复游戏并终止进程。

请注意:

  1. 由于这个问题,我的应用未能通过 Microsoft 认证 - 我真的需要修复它!
  2. 这仅在我的游戏中显示指南输入屏幕时发生 - 如果未显示,游戏 停用后正常恢复。
  3. 只有在 WP7.x 上运行游戏时才会出现此问题(已在 WP7.5 和 WP7.8) - 虽然游戏似乎可以在 WP8 设备上正常恢复。
  4. 我创建了一个名为 Guide.BeginShowKeyboardInput 的空白 XNA 游戏项目,并使用 WP7.x 设备对其进行了测试,并且没有出现这种问题行为。
  5. 我在未启用音乐和我的试用许可证管理器(他们使用计时器)的情况下测试了游戏,但它仍然会这样做。
  6. 在模拟器中出现完全相同的行为(在 WP7.x 模拟器上恢复失败,在 WP8 上工作正常 模拟器)
  7. 我在加载屏幕期间使用线程异步下载内容 - 但它们已经完成并退出。 我不相信其他线程正在运行,虽然这看起来像 这可能是线程阻塞问题。

关于在 Guide.IsVisible 时可能阻止游戏恢复的原因或如何调试/解决此问题的任何其他想法?

【问题讨论】:

    标签: windows-phone-7 xna freeze resume


    【解决方案1】:

    这个问题的解决方案是在处理任何传递应用程序外部控制的操作时不使用 SuppressDraw,例如启动器、选择器和指南。

    【讨论】:

      【解决方案2】:

      您是否尝试在停用或关闭事件中调用“Guide.EndShowKeyboardInput”?

      为了在应用程序暂停之前关闭指南,您确实有 10 秒的暂停时间,因此这可能值得研究。 如果您希望指南在恢复时重新显示,那么在您的状态保存代码中只需设置一个标志并打开指南(如果已设置)。

      【讨论】:

      • 当应用程序停用时,它会自动调用我的异步回调函数: private void GetAsyncKeyboardInput(IAsyncResult result) { string input = Guide.EndShowKeyboardInput(result); ... }
      • 并且返回的输入字符串为空。我已经验证这发生在调试器中。在我注意到这一点之前,我确实尝试在停用事件处理程序中调用 EndShowKeyboardInput,但它需要一个不能为空的 IASyncResult 参数(抛出异常“值不能为空。”)并且不确定要传递什么对象否则 - ?但无论如何,我确信当应用停用时它会被框架调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多