0

バックグラウンドタスクを使用してライブタイルを更新するWindowsストアアプリがあります。何らかの方法でアプリをアクティブ化するとき(ライブタイルをクリックする、アプリに戻るなど)、ライブタイルをクリアしたい(ゼロに変更したい番号があります)。

もっと具体的に言うと、アプリを実行し、別のアプリまたはデスクトップに切り替えてから、スター画面に切り替えると、ライブタイルに数字が表示されます。ライブタイルをクリックすると、アプリが表示され、ライブタイルをクリアしたいと思います。メールアプリと同じ機能。

App.xaml.csでOnActivatedメソッドを試しましたが、いつでも呼び出されないようです(そこに新しいNotImplementeExeptionをスローすると、アプリがクラッシュすることはありません)。

4

2 に答える 2

0

そのようなアクションのより良い場所は方法だと思いOnLaunchedます。アプリを起動するたびに呼び出されます。

更新:うーん、両方OnActivatedOnLaunchedメソッドに反応する必要があるようです:

OnLaunched - アプリケーションの起動時に呼び出されます。このメソッドをオーバーライドして、アプリケーションの初期化を実行し、関連付けられた Window に初期コンテンツを表示します。

アプリケーションの開始時OnLaunchedに呼び出されます。ただし、別のアプリに切り替えてから戻ると、次のOnActivatedように呼び出される必要があります。

OnActivated - 通常の起動以外の方法でアプリケーションがアクティブ化されたときに呼び出されます。

于 2012-12-18T10:24:06.320 に答える
0

OnLaunched メソッドに配置する必要があります。場所を特定する必要があるだけです。

 protected async override void OnLaunched(LaunchActivatedEventArgs args)
    {
        var rootFrame = new Frame();
        // Do not repeat app initialization when already running, just ensure that
        // the window is active
        if (args.PreviousExecutionState == ApplicationExecutionState.Running)
        {
           //....
        }

        if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
        {
            /....
        }
        if (!String.IsNullOrEmpty(args.Arguments))
        {
                //....

        }
        if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            //....
        }
        if (args.PreviousExecutionState == ApplicationExecutionState.NotRunning)
        {
            //.....
        }
        TileUpdateManager.CreateTileUpdaterForApplication().Clear();
        BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();

        SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
        // Create a Frame to act navigation context and navigate to the first page

        if (!rootFrame.Navigate(typeof(MainPage)))
        {
            throw new Exception("Failed to create initial page");
        }

        // Place the frame in the current Window and ensure that it is active
        Window.Current.Content = rootFrame;
        Window.Current.Activate();
    }

コードを見ると、アプリが閉じられている/中断されている理由がいくつかあります。したがって、ライブ タイルの数値を更新するコードを実行するケースを決定し、その if 内に配置すると、動作するはずです。

于 2012-12-18T11:59:34.240 に答える