Cheok Yan Cheng
Cheok Yan Cheng

Reputation: 42670

Capture Activated event for an App

I am referring to 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();
    }

Note, OnActivated will never be triggered. OnSuspending will be triggered, after I quit the app around 30 seconds.

How can I capture Activated event? It is weird that I do not find Activated event in App, although the documentation says so.

Upvotes: 1

Views: 1017

Answers (2)

Jeremy Likness
Jeremy Likness

Reputation: 7521

The activation is a little confusing. Take a look at the documentation here:

http://msdn.microsoft.com/en-us/library/windows/apps/br242324.aspx

What you'll find is that when the user taps the tile, only the OnLaunched event is fired (see documentation here: http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.application.onactivated.aspx )

The OnActivated is only for special cases outside of the ordinary launch. That would be any one of the following:

OnFileActivated OnSearchActivated OnShareTargetActivated OnFileOpenPickerActivated OnFileSavePickerActivated OnCachedFileUpdaterActivated

So if you truly want something that is called anytime the app is activated regardless of how, I'd suggest making your own private method, then calling it from both OnLaunched and OnActivated. That should hit all cases for activation.

Upvotes: 2

laszlokiss88
laszlokiss88

Reputation: 4071

Maybe the problem is that you launch the app normally for example, by tapping the app tile(without facts, I'm just guessing). In this case, only the OnLaunched method is called.

msdn

Upvotes: 1

Related Questions