Приложение или код для приостановки возобновления работы приложения UWP без Visual Studio - PullRequest
0 голосов
/ 15 декабря 2018

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

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>
0 голосов
/ 16 декабря 2018

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

Чтобы проверить, действительно ли приложение было приостановлено и возобновлено, вы можете использовать ведение журнала, например, 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 с именем файла, похожим на Log - 20181216.log .

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

log output

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

Это то, что вы ищетенг для?

...