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

时间:2014-06-03 22:19:25

标签: c# xaml windows-runtime windows-phone-8.1 win-universal-app

我有一个通用的Windows Phone应用程序(从Blank App模板启动),包含一个MainPage和三个辅助页面。这些中的导航按预期工作(部分归功于this MSDN page)。

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

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

我想"关闭"当用户从MainPage按下Back时,我的应用程序,以便它不再在任务切换器中。有什么我需要手动做的吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Application.Current.Exit()退出您的应用;在下面的HardwareButtons_BackPressed函数中。

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();
}

我希望这有效

的问候, 基督教

答案 1 :(得分:0)

这是我最终实现它的方式,使用来自user2799780和Romasz的指针,虽然我不是100%确定我不是双重(非)注册处理程序。 这取决于每个NavigatedTo是否总有一个NavigatedFrom,我想。

编辑:我被提醒(请参阅评论),当被暂停时,应用程序会收到OnNavigatedFrom事件,但是在恢复时,它将看不到OnNavigatedTo事件,导致处理程序无法注册那种情况。 以下实施可能会受到此错误的影响

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();
    }
}