Windows Phone 7 закрыть приложение - PullRequest
       4

Windows Phone 7 закрыть приложение

27 голосов
/ 07 сентября 2010

Есть ли возможность программно закрыть приложение Silverlight на Windows Phone 7?

Ответы [ 14 ]

14 голосов
/ 07 сентября 2010

Если вы напишите XNA Game, у вас будет доступ к явному методу Exit () .Если вы пишете традиционный проект Silverlight, то NO , нет никакого способа программно закрыть ваше приложение.См. Также Запись в блоге Питера Торра о выходе из приложений Silverlight в Windows Phone 7 .Там он также упоминает о возможности создания необработанного исключения, которое, по мнению IMO, является ужасным стилем программирования.

Опция, которую вы можете попробовать, - это использование службы навигации WP7 для программной навигации назад из приложения.Не уверен, что это сработает.Зачем вам Выход ?

11 голосов
/ 15 декабря 2011

Вы всегда можете вызвать выход, сделав это на своей целевой странице, используя этот код при нажатии кнопки возврата вашего приложения:

if (NavigationService.CanGoBack)
{
    while (NavigationService.RemoveBackEntry() != null)
    {
        NavigationService.RemoveBackEntry();
    }
}

Это удалит записи назад из стека, и вы нажмете кнопку возврата, чтобы закрыть приложение без каких-либо исключений.

8 голосов
/ 07 сентября 2010

Краткий ответ для Silverlight - нет.
Вы не должны предоставлять способ закрыть приложение.Закрытие приложения должно быть выбрано пользователем и реализовано с помощью кнопки «Назад» соответствующее количество раз.Это также требование рынка.

При этом приложение silverlight закроется, если возникнет необработанное исключение.Я видел, как несколько человек пытались создать программное закрытие, выдавая пользовательскую ошибку, которая явно игнорируется при обработке ошибок.Это может работать, но все еще существует проблема рынка.

Приложения XNA могут явно вызывать Exit().

6 голосов
/ 26 октября 2010

Хорошая информация уже здесь.Добавление к этому ..

Платформа полностью способна управлять закрытием приложений.Чем больше приложений не предоставляют выход, тем быстрее пользователи привыкнут не думать о хранении приложений и позволят платформе управлять им.

Пользователь будет просто перемещаться по своему устройству с помощью запуска, возврата и т. Д..

Если пользователь хочет выйти из текущего приложения, сделайте что-нибудь еще быстро - легко - он просто нажмет кнопку запуска.

.Exit (), хотя и доступен для xna, на самом деле нетребуется больше либо.Во время CTP было определенное требование, чтобы в играх была кнопка выхода.Теперь этого нет.

Неигровым приложениям никогда не приходилось реализовывать это.

Чем больше обсуждалась эта тема (и она действительно была хорошо проработана вокруг блока), тем большемне показывают, что нет необходимости кодировать выход.

Обновление: Для тех, кто считает необработанное исключение подходящим способом намеренного закрытия приложения или его закрытия.чтобы не соответствовать условиям работы, я бы рекомендовал ознакомиться с комментариями относительно требований к сертификации приложений в этом ответе. Есть ли способ программно выйти из моего приложения?(Windows Phone 7)

3 голосов
/ 04 декабря 2012

Вот еще одно решение. Если у вас есть страница с ошибкой, которая отображает ошибку для конечного пользователя, вы можете использовать

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        base.OnBackKeyPress(e);
        e.Cancel = true;
    }

И вы можете поручить пользователю нажать кнопку запуска, чтобы выйти из приложения.

2 голосов
/ 27 марта 2012

Добавьте ссылку на Microsoft.Xna.Framework.Game, затем позвоните:

new Microsoft.Xna.Framework.Game().Exit();
1 голос
/ 14 января 2014

Это отлично работает на Windows Phone 7

 System.Reflection.Assembly asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
            asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
            Type type = asmb.GetType("Microsoft.Xna.Framework.Game");
            object obj = type.GetConstructor(new Type[] { }).Invoke(new object[] { });
            type.GetMethod("Exit").Invoke(obj, new object[] { });

Ссылка - источник

1 голос
/ 23 октября 2013

Вы можете закрыть приложение, используя это заявление

Application.Current.Terminate();
1 голос
/ 12 июня 2012
private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
    while (NavigationService.CanGoBack)   
        NavigationService.RemoveBackEntry();
}

Это прекрасно работает для меня.

0 голосов
/ 24 ноября 2013

Перейдите к App.xaml.cs в обозревателе решений и добавьте статический метод к App классу

public static void Exit()
{
      App.Current.Terminate();
}

, чтобы вы могли вызывать его из любого приложения, как показано ниже

App.Exit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...