Можно ли определить, когда приложение Windows.UI.Xaml закрывается с главной страницы?

#windows #uwp

Вопрос:

Я работаю над приложением, которое должно знать, когда приложение UWP завершает работу из своего главного окна. Возможно ли это?

Комментарии:

1. «приложение UWP» , как в любом данном приложении? Или какой-то конкретный?

2. Какой тип приложения вы разрабатываете? Вы имеете в виду, чтобы получить время закрытия приложения uwp из другого приложения, верно?

3. Я хотел бы знать, когда мое приложение закроется, чтобы я мог выполнить определенную очистку объекта, который находится в главном окне.

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

5. Последнее событие, которое приложение получает перед завершением работы, — это событие приостановки. Приложение будет оставаться в приостановленном состоянии до тех пор, пока пользователь или система не решат завершить его (в этот момент приложение завершается без пробуждения). Или пользователь или система могут выбрать возобновление работы приложения, и в этот момент оно получает событие возобновления. Поэтому сохраните свое состояние в подвешенном состоянии с пониманием того, что это может быть последнее, что вы сделаете. Если вы получаете событие возобновления, то вы знаете, что вас снова будят, и предыдущая приостановка была ложной тревогой.

Ответ №1:

Если вы просто хотите очистить какой-либо объект, который находится в главном окне, когда главное окно закрыто, я предлагаю вам сделать это в SystemNavigationManagerPreview.GetForCurrentView().CloseRequested случае, подобном следующему.

Пожалуйста, объявите confirmAppClose о возможности.

 <Package
…… xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp rescap">
……
  <Capabilities>
    <rescap:Capability Name="confirmAppClose"/>
    <Capability Name="internetClient" />
  </Capabilities>
</Package>
 

Код за:

 public MainPage()
        {
            this.InitializeComponent();
            SystemNavigationManagerPreview.GetForCurrentView().CloseRequested  = (s, e) =>
            {
                //clean objects
            };
        }
 

Обратите внимание, что: Если вы хотите отправить это приложение в магазин, поскольку возможность confirmAppClose ограничена, поэтому вы должны предоставить информацию во время процесса отправки приложения, чтобы получить разрешение на публикацию приложения в магазине Майкрософт. Вы предоставляете эту информацию на странице Параметров отправки вашего сообщения, объясняя, как ваше приложение использует каждую ограниченную возможность, которую оно объявляет.

Комментарии:

1. Обратите внимание, что вызов CloseRequested не гарантируется. Например, если приложение уже приостановлено, а затем пользователь нажимает кнопку X, приложение немедленно завершается. Приложения должны использовать событие приостановки для сохранения состояния в ожидании завершения.