退出(退出)实施

时间:2012-08-16 12:46:42

标签: c# windows windows-phone-7 windows-phone-7.1

在我的windows phone7(Silverlight)应用程序中我必须显示一个消息框询问,用户在退出应用程序之前确认(是/否)[在设备后退按钮上单击]。

问题是我必须使用自定义消息框(使用弹出窗口)来获取用户确认,并且我无法退出应用程序。(找不到会退出应用程序的方法,如dispose() or close() )。

如果我不必使用自定义消息框,Device back key press event "OnBackKeyPress"上我会使用以下逻辑并完成我的工作

MessageBoxResult res = MessageBox.Show("Do you want to Exit?", "Exit", MessageBoxButton.OKCancel);

            if (res == MessageBoxResult.OK)
            {
                if (NavigationService.CanGoBack)
                {
                    while (NavigationService.RemoveBackEntry() != null)
                    {
                        NavigationService.RemoveBackEntry();
                    }
                }
            }
            else
            {
                e.Cancel = true;
            }

问题是我需要使用自定义消息框并完成此工作。如果需要使用设备后退按钮实现退出应用程序的按钮,则会出现同样的问题。

我发现在几个帖子中建议抛出异常并完成此操作。以下是其中一些

http://mobile.dzone.com/articles/windows-phone-mango-sample-3

http://imaginativeuniversal.com/blog/post/2010/08/22/How-to-Quit-a-WP7-Silverlight-Application.aspx

我认为这不是一个好的做法,也不确定Windows市场是否会以这种方式进行认证。想听听曾经遇到过这个问题的想法,以及任何实现此目的的建议(终止申请)。谢谢inadvance .... !!!!

3 个答案:

答案 0 :(得分:5)

如果您想提交到市场,由于以下认证要求,您会遇到一些问题:

  

5.2.4.2在应用程序的第一个屏幕上按“返回”按钮必须关闭应用程序。

     

5.2.2当用户导航离开应用程序时,操作系统关闭并终止Windows Phone应用程序。应用程序在关闭后启动时,其启动时间必须满足第5.2.1节 - 启动时间

中的要求      

5.2.3当用户按下“开始”按钮或设备超时导致锁定屏幕进入时,Windows Phone应用程序将被停用。 Windows Phone应用程序也会在其调用Launcher或Chooser API时停用。

这是几个无法显示消息框的情况。

技术上使用例外来终止应用是一种违规行为:

  

5.1.2应用程序必须处理.NET Framework引发的异常,而不是意外关闭。在认证过程中,监控应用程序是否意外关闭。意外关闭的应用程序无法通过认证。在处理异常后,应用程序必须继续运行并保持对用户输入的响应。

作为开发人员,您的部分工作是与用户沟通有关不切实际或不合理的要求。

答案 1 :(得分:1)

抱歉,没办法这样做。在芒果更新之前,您可以清除后台堆栈,然后以编程方式触发后退按钮。但是从SDK 7.1(wp7.5)开始,我们就不能再这样做了。

我的建议是创建一个自定义的异常类型ApplicationXExitException并将其抛出以退出应用程序。自定义类型的原因是,当您从市场中提取异常日志时,您将知道那些确实是意外的异常崩溃应用程序,而不是故意退出应用程序的异常。

答案 2 :(得分:0)

您可以在自定义消息框关闭后挂钩事件。事件参数将保留有关用户选择的信息。根据您的不同,您将决定是否退出应用程序。