#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, приложение немедленно завершается. Приложения должны использовать событие приостановки для сохранения состояния в ожидании завершения.