Windows phone 7 当指南在WP7.x上可见时,Windows Phone XNA游戏将挂起恢复

Windows phone 7 当指南在WP7.x上可见时,Windows Phone XNA游戏将挂起恢复,windows-phone-7,xna,freeze,resume,Windows Phone 7,Xna,Freeze,Resume,My Windows Phone XNA game calls Guide.BeginShowKeyboard输入以获取用户名。当向导的输入屏幕显示时,如果用户按Home或Search(硬件)按钮,游戏会像往常一样被停用-但如果用户随后按Back(硬件)按钮,游戏应该继续,但不会。相反,它会显示“Resuming…”消息,直到Windows Phone放弃尝试恢复游戏并终止进程 请注意: 由于这个问题,我的应用程序未通过Microsoft认证-我真的需要修复它 这只发生在我的游戏中,当向导输入屏

My Windows Phone XNA game calls Guide.BeginShowKeyboard输入以获取用户名。当向导的输入屏幕显示时,如果用户按Home或Search(硬件)按钮,游戏会像往常一样被停用-但如果用户随后按Back(硬件)按钮,游戏应该继续,但不会。相反,它会显示“Resuming…”消息,直到Windows Phone放弃尝试恢复游戏并终止进程

请注意:

  • 由于这个问题,我的应用程序未通过Microsoft认证-我真的需要修复它
  • 这只发生在我的游戏中,当向导输入屏幕被显示时-当它没有显示时,游戏开始 被停用后将正常恢复
  • 此问题仅在游戏在WP7.x上运行时发生(已在WP7.5和WP7.x上验证问题) WP7.8)-虽然游戏似乎在WP8设备上正常恢复
  • 我创建了一个名为Guide.BeginShowKeyboardInput的空白XNA游戏项目,并使用WP7.x设备对其进行了测试,但没有出现这种问题行为
  • 我在没有启用音乐的情况下测试了这个游戏&我的试用版许可证管理器(他们使用计时器),现在它仍然这样做
  • 仿真器中也会出现完全相同的行为(在WP7.x仿真器上恢复失败,在WP8上工作正常) 仿真器)
  • 我使用线程在加载屏幕期间异步下载内容,但它们已经完成并退出。 我不相信其他线程正在运行,尽管这看起来像 这可能是线程阻塞问题
  • 关于当Guide.IsVisible出现时,什么可能阻止游戏恢复,或者如何调试/解决此问题,还有其他想法吗?

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

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

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

    因此,在应用程序挂起之前关闭指南,您有10秒的时间挂起,因此这可能值得研究。
    如果您希望在恢复时重新显示指南,则在您的状态保存代码中,只要有一个标志,如果设置了,请打开指南。

    解决此问题的方法是,在处理任何在应用程序之外通过控制的操作时,不使用SuppressDraw,例如启动器,选择器和指南。

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

    当应用程序停用时,它会自动调用我的异步回调函数:private void GetAsyncKeyboardInput(IAsyncResult结果){string input=Guide.EndShowKeyboardInput(结果);…}并且返回的输入字符串为null。我已经在调试器中验证了这一点。在我注意到这一点之前,我确实尝试在停用事件处理程序中调用EndShowKeyboardInput,但它使用的IASyncResult参数不能为null(抛出异常“值不能为null”)不确定以其他方式传递哪个对象-?但在任何情况下,我都可以确定,当应用程序停用时,框架正在调用它。当应用程序停用时,它会自动调用我的异步回调函数:private void GetAsyncKeyboardInput(IAsyncResult结果){string input=Guide.EndShowKeyboardInput(result);…}并且返回的输入字符串为null。我已经在调试器中验证了这一点。在注意到这一点之前,我确实尝试在停用事件处理程序中调用EndShowKeyboardInput,但它使用的IASyncResult参数不能为null(引发异常)“Value不能为null。”)&不确定以其他方式传递它的对象-?但在任何情况下,我确信当应用程序停用时,框架正在调用它。