如何从Windows Phone上的任务切换器中删除应用程序?

本文关键字:切换器 任务切换 删除 应用程序 任务 Windows Phone | 更新日期: 2023-09-27 18:06:26

我有一个通用的Windows Phone应用程序(从空白应用程序模板开始),由一个主页面和三个辅助页面组成。这些页面之间的导航按预期工作(部分归功于此MSDN页面)。

我遇到的问题是,当在主页上,当用户按下硬件后退按钮时,我的应用程序被放在后台,但我的应用程序的卡片仍然在任务切换器中。无论是否附加调试器,都会发生这种情况。

我在一个基于Pivot App (WP)模板的新项目中尝试了这个,我看到了同样的问题。

我想"关闭"我的应用程序,当用户从主页按回,使它不再是在任务切换器。有什么我需要手工做吗?

如何从Windows Phone上的任务切换器中删除应用程序?

你可以使用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)注册处理程序。

这取决于是否总是有一个NavigatedFrom为每个NavigatedTo,我猜

编辑:我已经被提醒(见评论),当被挂起时,一个应用程序接收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();
    }
}