如何从Windows Phone上的任务切换器中删除应用程序?
本文关键字:切换器 任务切换 删除 应用程序 任务 Windows Phone | 更新日期: 2023-09-27 18:06:26
我有一个通用的Windows Phone应用程序(从空白应用程序模板开始),由一个主页面和三个辅助页面组成。这些页面之间的导航按预期工作(部分归功于此MSDN页面)。
我遇到的问题是,当在主页上,当用户按下硬件后退按钮时,我的应用程序被放在后台,但我的应用程序的卡片仍然在任务切换器中。无论是否附加调试器,都会发生这种情况。
我在一个基于Pivot App (WP)模板的新项目中尝试了这个,我看到了同样的问题。
我想"关闭"我的应用程序,当用户从主页按回,使它不再是在任务切换器。有什么我需要手工做吗?
你可以使用Application.Current.Exit();
public MainPage()
{
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}
private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
/* When you don't know the namespace you can use this code instead of the lower
string[] Namespace = Frame.CurrentSourcePageType.FullName.Split('.');
if (!e.Handled && Frame.CurrentSourcePageType.FullName == Namespace[0] + ".MainPage")
Application.Current.Exit();
*/
if (!e.Handled && Frame.CurrentSourcePageType.FullName == "NAMESPACE.MainPage")
Application.Current.Exit();
}
我希望这行得通
问候,基督教
这就是我最终实现它的方式,使用user2799780和Romasz的指针,尽管我不能100%确定我没有双(un)注册处理程序。
编辑:我已经被提醒(见评论),当被挂起时,一个应用程序接收OnNavigatedFrom事件,但在恢复时,它不会看到OnNavigatedTo事件,导致处理程序在这种情况下没有注册。下面的实现可能受到这个bug的影响
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
// When we're on this page, pressing Back should close the app
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}
protected override async void OnNavigatedFrom(NavigationEventArgs e)
{
// When we leave this page, pressing Back should no longer close the app
Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
}
private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (!e.Handled)
{
Application.Current.Exit();
}
}