我指的是http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx#app_activation
// App is an Application
public App()
{
this.InitializeComponent();
// Doesn't compile
//this.Activated += OnActivated;
this.Suspending += OnSuspending;
}
protected override void OnActivated(IActivatedEventArgs args)
{
System.Diagnostics.Debug.WriteLine("OnActivated");
}
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
deferral.Complete();
}
注意,永远不会触发OnActivated
。在我退出应用程序大约30秒后,OnSuspending
将被触发。
如何捕获Activated
事件?奇怪的是,我在Activated
中找不到App
事件,尽管文档说明了这一点。
答案 0 :(得分:2)
激活有点令人困惑。看一下这里的文档:
http://msdn.microsoft.com/en-us/library/windows/apps/br242324.aspx
您会发现,当用户点击磁贴时,只会触发OnLaunched事件(请参阅此处的文档:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.application.onactivated.aspx)
OnActivated仅适用于普通发布之外的特殊情况。这将是以下任何一种:
OnFileActivated OnSearchActivated OnShareTargetActivated OnFileOpenPickerActivated OnFileSavePickerActivated OnCachedFileUpdaterActivated
因此,如果您真正想要在任何时候调用应用程序而无论如何调用,我建议您创建自己的私有方法,然后从OnLaunched和OnActivated调用它。这应该会触及所有激活案例。
答案 1 :(得分:1)
也许问题是你正常启动应用程序,例如,通过点击应用程序磁贴(没有事实,我只是在猜测)。在这种情况下,仅调用OnLaunched方法。