在WP7和WP8中,我只需要清除页面上的后退堆栈,然后按下返回按钮,应用程序就会关闭。在WP8.1中,我使用Frame.BackStack.Clear()清除后退堆栈,按下返回键应用程序只是最小化了。如何通过返回按钮使其退出?
在WP7和WP8中,我只需要清除页面上的后退堆栈,然后按下返回按钮,应用程序就会关闭。在WP8.1中,我使用Frame.BackStack.Clear()清除后退堆栈,按下返回键应用程序只是最小化了。如何通过返回按钮使其退出?
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。
该代码可用于退出当前应用程序。Application.Current.Exit();
MSDN建议在Windows 8.1中不要关闭应用程序:
我们建议除非绝对必要,否则不要以编程方式关闭应用程序。例如,如果应用程序检测到内存泄漏,它可以关闭自身以确保用户个人数据的安全。 当您通过编程方式关闭应用程序时,系统将其视为应用程序崩溃。
https://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx#close
if
语句。如果e.Handled
已经被处理过了,它可能不会冒泡到HardwareButtons_BackPressed
。 - Vitor Canova