前の記事はこちら。
Windows8 グリッドアプリケーションを解析する-その1
グリッドアプリケーションを作ってView関係のクラス図を作った。
Appクラス
App.xaml はりソースのマージとアプリケーション名の記述がある。
OnLaunched はアプリケーション起動時の処理で、LaunchActivatedEventArgs にどの様な遷移で起動されたか、前回の実行状態、実行引数などが入っている。
実装は初期ナビゲーションである。ナビゲーションは Frame を使いFrameの中身を変えることによって遷移する。
1)Window.Current.Content が null なら Frame を作成し、前回のアプリケーションが中断後に終了されていたら保存されたセッション状態を復元(SuspensionManager.RestoreAsync)してから、Frame を Window.Current.Content に格納する。
2)Frame の Content がない場合、Frame.Navigate で GroupedItemsPage をロードする。
3)Window.Current.Activate で Frame を Active にする。
OnSuspending はアプリケーション中断時の処理で、SuspendingEventArgs に中断要求の情報が入っている。
実装は中断動作を遅延要求し、セッション状態を保存(SuspensionManager.SaveAsync)してから、中断動作の完了を通知する。
SuspensionManagerクラス
グローバル セッション状態をキャプチャし、アプリケーションのプロセス継続時間管理を簡略化する目的のクラスである。
Dictionary<string, object> SessionState のセッション状態を持っている。
List<Type> KnownType は、DataContractSerializer で使用する、_sessionState.xml にシリアライズする時に存在可能な型を列挙する。
RegisterFrame は、Frame を一意なキーを付けて登録する。
UnregisterFrame はFrame の登録を削除する。
SaveAsync は、全Frameのセッション状態をローカルフォルダ(ApplicationData.Current.LocalFolder.CreateFileAsync)の _sessionState.xml に保存する、
ローカルフォルダは c:\Users\ユーザー名\AppData\Local\Packages\パッケージID_公開キー\LocalState に存在する、
パッケージIDはPackage.appxmanifestに存在する、公開キーはアプリケーションの厳密名の最後につけられるものと同じである。
RestoreAsync は、全Frameのセッション状態をローカルフォルダ(ApplicationData.Current.LocalFolder.GetFileAsync)の _sessionState.xml から復元する。
SessionStateForFrame は、指定した Frame のセッション状態を取得する。
次回は各 View の基底クラスとなる LayoutAwarePage について解析する。