前の記事はこちら。
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 について解析する。
Windows8のWindowsストアアプリの新しいプロジェクトにグリッドアプリケーションがある。
Viewは3層からなっている。
グループ一覧-グループ詳細-アイテム詳細である。
Windows8の標準アプリの「ストア」「ニュース」と同じ構造である。
グループ一覧は全グループがグループごとにアイテムの画像・タイトル・サブタイトルの簡単な情報がGridViewで表示される。
グループタイトルをタップするとグループ詳細に、アイテムの画像・タイトル・サブタイトルをタップするとアイテム詳細に遷移する。
グループ詳細は1グループのグループタイトル・サブタイトル・画像・説明とグループ内のアイテムのタイトル・サブタイトル・画像・説明(長いと一部表示されて残りは省略される)がGridViewで表示される。
アイテムをタップするとアイテム詳細に遷移する。戻るボタンで元のグループ一覧に戻る。
アイテム詳細はグループタイトルとアイテムのタイトル・サブタイトル・画像・説明がFlipViewの中のScrollViewerで表示される。
FlipViewで同じグループ内のアイテムに遷移する。戻るボタンで元のグループ一覧やグループ詳細に戻る。
ViewはGridViewやFlipViewやScrollViewerの知識が必要である。
また、アプリケーションのビューステートで画面の構造が変わるのでアプリケーションのビューステートの知識も必要である。
Windows8 グリッドアプリケーションのクラス構造を解析することを主眼としているのでコントロールやビューステートの説明はしない。
次回はView関係のクラス図を使って各クラスの解析を行う。