Приложение или код для приостановки возобновления приложения UWP без Visual Studio

Мой вопрос похож на Как заставить приложение UWP приостановить и возобновить состояние, но мне нужно приложение, которое я могу предоставить своей команде QA, чтобы они могли легче вызывать Suspend и Resume в моем приложении.

Поскольку Visual Studio имеет панель инструментов «LifeCycle Events», которая позволяет приостановить и возобновить работу вашего приложения, я полагаю, что должно быть приложение, поставляемое с Visual Studio, которое делает это. Однако, просматривая файлы Visual Studio, я не смог найти такой исполняемый файл.

Кто-нибудь знает об автономном приложении (установленном с Visual Studio или нет), которое может приостановить или возобновить приложение магазина Windows?

Если нет, есть ли у кого-нибудь пример кода, который может приостановить или возобновить произвольное приложение UWP? Я понимаю, что есть некоторые библиотеки C ++ для построения отладчика, но я не программист C ++. Если есть способ C # сделать это, пожалуйста, напишите код. Если это должно быть приложение C ++, пожалуйста, опубликуйте полный пример, который легко построить.

1

Решение

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>
1

Другие решения

Одна из возможностей для тестировщика — просто свернуть и развернуть приложение. Это вызвало бы приостановку и возобновление.

Чтобы проверить, действительно ли приложение было приостановлено и возобновлено, вы можете использовать ведение журнала, например, 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");
}

Тестовое задание

  • развернуть приложение
  • выйти из VS
  • вызвать приложение из меню Windows
  • минимизировать и максимизировать приложение

В папке ApplicationData.Current.LocalFolder вы найдете новую папку MetroLogs с файлом, похожим на Журнал — 20181216.log.

Откройте его в текстовом редакторе:

вывод журнала

Как видите, приложение было приостановлено и возобновлено.

Это то, что вы ищете?

0

По вопросам рекламы [email protected]