我的问题类似于How to make UWP app to suspend and resume state,但是我需要一个可以提供给质量检查小组的应用程序,以便他们可以更轻松地在我的应用程序中调用Suspend and Resume。
由于Visual Studio具有“生命周期事件”工具栏,可让您挂起和恢复应用程序,因此我认为必须有随Visual Studio一起提供的应用程序可以执行此操作。但是,通过仔细阅读Visual Studio文件,我找不到这样的可执行文件。
有人知道一个可以挂起或恢复Windows应用商店应用程序的独立应用程序(是否安装了Visual Studio)?
如果没有,是否有人可以暂停或恢复任意UWP应用的示例代码?我知道有一些用于构建调试器的C ++库,但我不是C ++程序员。如果有使用C#的方法,请发布一些代码。如果必须是C ++应用程序,请发布易于构建的完整示例。
答案 0 :(得分:2)
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 :(得分:0)
对于测试人员来说,一种可能性就是简单地最小化和最大化应用程序。这将导致暂停和恢复。
要检查应用程序是否确实已暂停和恢复,可以使用日志记录,例如MetroLog或任何其他日志记录解决方案。
要进行快速测试,可以这样做:
MetroLog
在Package Manager控制台中输入:
Install-Package MetroLog
代码
在App构造函数中添加以下内容:
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文件夹,其文件名为 Log-20181216.log 。
在文本编辑器中将其打开:
您可以看到该应用程序已暂停并恢复。
这是您要找的吗?