如何关闭Windows Phone 8.1应用程序

12

在WP7和WP8中,我只需要清除页面上的后退堆栈,然后按下返回按钮,应用程序就会关闭。在WP8.1中,我使用Frame.BackStack.Clear()清除后退堆栈,按下返回键应用程序只是最小化了。如何通过返回按钮使其退出?

4个回答

17
您可以在主页面定义中添加以下内容:
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;

然后

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    if (!e.Handled && Frame.CurrentSourcePageType.FullName == "YourApp.MainPage")
        Application.Current.Exit();
}

警告:正如其他人所说,您不应该使用此方法来关闭应用程序,而应该让系统处理它。例如,如果您使用Application Insights,我发现在发布模式下,它们不会被发送到Azure。


我认为他实际上不需要 if 语句。如果 e.Handled 已经被处理过了,它可能不会冒泡到 HardwareButtons_BackPressed - Vitor Canova
2
@V.G. 完全同意“一切都与7、8不同”的说法,但在“狗屎”这个问题上,我会把它放在“7、8”的旁边,而不是“8.1”(暗示WP8.1 _WinRT_) :) - Sevenate
为什么要检查页面类型?仅检查Frame.CanGoBack()会更优雅。 - Zea Shah

3
你可以通过编写XAML代码创建一个按钮,然后将以下代码添加到你的主页面的xaml.cs文件中:

Application.Current.Exit();

该代码可用于退出当前应用程序。

3
我认为以上内容已经过时了。现在退出已成为一个事件。
尝试使用:
Application.Current.Terminate();

2
你在哪里找到了Terminate?我只看到了Exit。Exit - Jakub Krampl
你是在使用Windows Phone 8.0工作吗?还是在编写7.1的代码? - MattyMerrix
1
我正在使用WP 8.1 RT,问题也是针对这个版本的。 - Jakub Krampl
不确定啊,你看到那个方法或类似的东西了吗?如果 Exit 只是一个方法而不是事件,那就试着调用它。唉,微软总是在改变东西... - MattyMerrix

2

MSDN建议在Windows 8.1中不要关闭应用程序:

我们建议除非绝对必要,否则不要以编程方式关闭应用程序。例如,如果应用程序检测到内存泄漏,它可以关闭自身以确保用户个人数据的安全。 当您通过编程方式关闭应用程序时,系统将其视为应用程序崩溃

https://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx#close


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接