2016-07-10 5 views
0

Windows Phone 8 Silverlightアプリ。私はメインXAMLページのカスタムコントロールを持っています。そのコンストラクタで活性化イベントへの制御サブスクライブ:PhoneApplicationService。トゥームストーン処理後にアクティブになりましたか?

public MyView() 
{ 
    //... 
    PhoneApplicationService.Current.Activated += OnAppActivated; 
} 


public void OnAppActivated(object o, ActivatedEventArgs a) 
{ 
//... 
} 

エミュレータ上およびWindows 8.1デバイス上の私のテストでは、(私はそれが起こることを確認するデバッグプロパティにチェックボックスを使用)アプリが廃棄されたときにすることを示していますアプリが再アクティブ化されると、有効化されたイベントはでなく、になります。ただし、ActivatedイベントのMSDNドキュメントの言葉には、そうでないことが示唆されています。

トーンストーンされていない状態でアプリケーションをアクティブにすることは可能です。

また、すべての変数がリセットされたときに、トゥームストーン処理後にイベントが配信されることがあるという報告があります。

本当に可能ですか?トゥームストーン処理の後、どのようにActivateを再現できますか?

EDIT:アプリケーションクラスでアプリケーションがアクティブになっています。ここに面白いデータポイントがあります。無ツームストーンのシナリオでは、再活性化時に呼び出しの順序は次のとおりです。

  • は、

一方をApp.Application_Activated廃棄アプリのシナリオでは、呼び出しが行くMyView.OnAppActivated

  • はApp.Application_Activated
  • MyView.MyView

ここで私がテストしていると、制御コンストラクタは起動通知が発生した後に常にを実行します。したがって、コントロールはイベントをフックする機会はありません。それはイベントの欠如を説明している(逆の主張をしているドキュメントにもかかわらず)。

これで私のテスト結果が表示されます。ドキュメントとクラッシュレポートは、逆の順序を示唆します。正確に?

+0

それは提起されるべきです - あなたはどのようにアプリケーションを再起動しますか? [ここをクリック](https://msdn.microsoft.com/en-us/library/windows/apps/ff817008(v=105).aspx) –

+0

"無効化時の墓石"フラグを設定します。シミュレータで実行します。 Windowsキーを押し、次にBackキーをクリックします。 OnAppActivatedのブレークポイントは起動しません。 –

+0

特に、アプリケーションクラスのApplication_Activatedは起動しません。コントロールではなく、そんなに。 –

答えて

0

問題は、イベントが発生するまでにコントロールがまだ作成されていないことです。

標準ハンドラが呼び出されます(上記のコメントに記載されています)が、XAMLページ(またはその子)のコンストラクタはこれ以降実行されません。したがって、イベントが発生したときにハンドラを接続していないこともあります。

+0

私の問題は**時には**コントロールのActivatedハンドラが実行されていることです。私はそれを再現することができません:( –

+0

あなたが** not ** tombstonedであれば実行されます –

+0

それは私が理解し、容易に再現することができます。 –

関連する問題