Мой вопрос похож на Как заставить приложение UWP приостановить и возобновить состояние, но мне нужно приложение, которое я могу предоставить своей команде QA, чтобы они могли легче вызывать Suspend и Resume в моем приложении.
Поскольку Visual Studio имеет панель инструментов «LifeCycle Events», которая позволяет приостановить и возобновить работу вашего приложения, я полагаю, что должно быть приложение, поставляемое с Visual Studio, которое делает это. Однако, просматривая файлы Visual Studio, я не смог найти такой исполняемый файл.
Кто-нибудь знает об автономном приложении (установленном с Visual Studio или нет), которое может приостановить или возобновить приложение магазина Windows?
Если нет, есть ли у кого-нибудь пример кода, который может приостановить или возобновить произвольное приложение UWP? Я понимаю, что есть некоторые библиотеки C ++ для построения отладчика, но я не программист C ++. Если есть способ C # сделать это, пожалуйста, напишите код. Если это должно быть приложение C ++, пожалуйста, опубликуйте полный пример, который легко построить.
UWP предоставляет специальные API для приостановки и возобновления приложений:
StartSuspendAsync
StartResumeAsync
Вот, например, как вы можете приостановить приложение FeedbackHub:
var diag = await AppDiagnosticInfo.RequestInfoForPackageAsync("Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe");
if (diag.Count > 0)
{
var resourceGroups = diag[0].GetResourceGroups();
if (resourceGroups.Count > 0)
{
await resourceGroups[0].StartSuspendAsync();
}
}
Обратите внимание, что вам нужно будет объявить возможность ‘appDiagnostics’ для вызова этих API:
<Package
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="appDiagnostics" />
</Capabilities>
</Package>
Одна из возможностей для тестировщика — просто свернуть и развернуть приложение. Это вызвало бы приостановку и возобновление.
Чтобы проверить, действительно ли приложение было приостановлено и возобновлено, вы можете использовать ведение журнала, например, MetroLog или любое другое решение для ведения журнала.
Для быстрого теста можно сделать это:
Metrolog
В консоли диспетчера пакетов введите:
Install-Package MetroLog
Код
В конструкторе приложения добавьте что-то вроде:
LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Trace, LogLevel.Fatal, new StreamingFileTarget());
log = LogManagerFactory.DefaultLogManager.GetLogger<App>();
this.Suspending += OnSuspending;
this.Resuming += OnResuming;
Тогда есть эти два метода:
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
log.Trace("OnSuspending called");
deferral.Complete();
}
private void OnResuming(object sender, object e)
{
log.Trace("OnResuming called");
}
Тестовое задание
В папке ApplicationData.Current.LocalFolder вы найдете новую папку MetroLogs с файлом, похожим на Журнал — 20181216.log.
Откройте его в текстовом редакторе:
Как видите, приложение было приостановлено и возобновлено.
Это то, что вы ищете?