アプリ認定キットに悪戦苦闘 - 事前起動、SuspendingとResumingイベント処理2016年01月21日 09:21

UWPアプリのテストをひととおり終え、アプリ認定キットを実施、で、嵌まる。

アプリ認定キット不合格

事前起動テストの失敗、と、クラッシュの発生?さて、何が悪い?

PrelaunchActivated

アプリの事前起動は、アプリをすぐに使えるように、事前にバックグラウンドで起動しておくもの。そのままでは、App.xaml.csのOnLaunchedから、MainPageのOnNavigatedToまで進み、作り込んだ初期化処理が実行されてしまう。バックグラウンドを想定していない初期化処理があれば、そこでエラーになる。

追っかけていないが、サウンドの処理か、音声認識の処理か、リソースにアクセスする処理か、そのあたりが怪しい。とりあえず、e.PrelaunchedActivatedの状態を調べて、事前起動の際は、初期化処理に進まないようにOnLaunchedの処理を切り上げることで対処。

※アプリの事前起動の説明はこちら。

内部例外0xC000027B

これで、事前起動のエラーはなくなったが、クラッシュは消えない。ダンプファイルをVSで読み込んで確認すると、0xC000027Bの内部例外が起きている。この例外は厄介そう。

※0xC000027Bの内部例外について

SuspendingとResumingイベントハンドラ

MainPageにSuspendingとResumingのイベントハンドラ(図の赤枠)を追加する前に実行したアプリ認定キットの実施では、エラーが出ていなかったことから、この線で調べてみる。

イベントハンドラを追加したのは、mobile端末で、アプリ実行中にスタートボタンを押してアプリをバックグラウンドに追い出し、復帰させたとき、音声認識が利用できなくなることに対処しようとしたため。いったん、Suspendingで音声認識のリソースを解放し、Resumingで再初期化する。

音声認識まわりで、try...catchの不備を見ていくが、問題なさそう。バックグラウンドでのUI操作が怪しいとみて、UI操作とそれ以外のコードが未分離の部分の整理を進める。結果、別にUI操作は禁止というわけでもない様子。最後に残ったのは、x:Uidで定義した文字列をResourceLoaderで拾ってくる部分。ここの呼び出しを、Resumingのイベントハンドラからは抑止することで、クラッシュを解消。

この手のエラーは、VisualStudioからのデバッグ実行では、引っかからないので難儀。アプリ認証テストを20回近く繰り返す羽目に。おかげでバックグラウンドまわりの経験値は少しばかり向上したかも。ほかにも細かな不具合を見つけることができたのでよしとする。

立川シネマシティ 極上爆音上映2016年01月21日 19:01

今週は、毎日7回上映、ラストスパート、ということで立川へ。

立川シネマシティ

千葉からは、総武線各停→中央線快速、とほぼ一本でつながるとはいえ、こちらはやはり寒い。こんなに雪が残っているとは思わず。

極上爆音上映

お昼の回。かなりの席の埋まり具合。封切り翌週の船橋ららぽーとより多いくらい。音響はさすがの迫力。雷雨の中、近くに落雷したときくらいの迫力。スポーツだと割り切ってみているからそうでもないが、戦争映画だったら遠慮したくなるところかも。欲を言えば、この勢いで船舶の音も鳴ってくれると。

立川は独立系の映画館だからこそのサービス、とも言われるが、体感すると、その存在意義は確か。封切りからこれほど長く観客を集め続けるのも得心。昨晩、グリーンチャンネルで岡田さんが、競馬は個性の戦い、と言っていたが、ビジネスの世界もまさにそう。

そうそう、大洗とひたちなかのまちあるきもずいぶん参考になった。歩き見た場所がつぎつぎと。実際の風景をこう映像化するのかと、これもずいぶんと勉強になる。