現段階では、Windows Phone 7 のエミュレータ上でしか確認できませんので、その範囲で調べてみます。
App.xaml は、VS2010で作成されたままの状態です。
<Application.ApplicationLifetimeObjects> <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated"/> </Application.ApplicationLifetimeObjects>
App.xaml のコードビハインドの、App.xaml.cs に少しコードを追加します。
private void Application_Launching(object sender, LaunchingEventArgs e) { MessageBox.Show("Application_Launching"); } private void Application_Activated(object sender, ActivatedEventArgs e) { MessageBox.Show("Application_Activated"); } private void Application_Deactivated(object sender, DeactivatedEventArgs e) { MessageBox.Show("Application_Deactivated"); } private void Application_Closing(object sender, ClosingEventArgs e) { MessageBox.Show("Application_Closing"); }
ApplicationLifetimeObjects で設定したメソッドが、どのような場合に実行されるのか確認してみました。
Launching
「Start」からアプリケーションが起動したときに呼ばれます。たとえ、Deactivated になっていたとしても、スタートからアプリケーションが選択されれば、Launching が呼ばれます。なので、初めての起動、Closing、Deactivated の3つの状態の時に Launching が呼ばれるようです。 また、 Launching から Launching、Activated になることはないようです。
Activated
アプリケーションが起動している状態から、「Startボタン」→アプリ起動→「Backボタン」→「Backボタン」や、「Searchボタン」→「backボタン」など、一度 Deactive になった状態から、「Backボタン」でアプリケーションに戻ったときに呼ばれるようです。「Backボタン」ではなく、「Start」から同一のアプリケーションを起動すると、「Launching」になるようです。
Deactivated
アプリケーションが起動している状態から、「Startボタン」、「Searchボタン」を押したときに呼ばれるようです。「Backボタン」では Closingになるようです。この状態から、Closingが呼ばれることはないようです。
Closing
アプリケーションが起動している状態から、「Backボタン」を押したときに呼ばれるようです。その他の操作からはClosingは呼ばれませんでした。この状態から、Deactivated が呼ばれることはないようです。
エミュレータでの動作を確認してみましたが、実機ではアイドル時にも、これらのメソッドが呼ばれるようです。電話がCallしてきたときも呼ばれるんでしょうね。
早く実機を触りたいです。。。。