1

アプリケーションのライフサイクルを理解しようとしています。

シナリオ: 空のアプリケーションを起動しています。その後、意図的にそのアプリから出てきて、別のアプリを開いています。しばらくして、タスク マネージャーを確認します。空白のアプリは一時停止されているようです。次に、空のアプリを再度起動します (一時停止状態でした)。その瞬間、再開イベントを打たなければなりませんよね?

1) 再開イベントが発生しないのはなぜですか? (アプリが一時停止状態から実行状態に移行するため、再開イベントが発生する必要があります。)

2) OnLaunched イベントが発生するのはなぜですか?

3) OnLaunched イベントは、アプリケーションが初めて起動したとき、または終了後にアクティブ化されたときにのみ発生しますか?

前もって感謝します。

4

3 に答える 3

2

私はまだ Metro アプリの経験があまりありませんが、答えようと思います。

広告 1) アプリケーションが Suspended から Running 状態になった場合 ( Metro Application Lifecycle に関するこの MSDN 記事の図のように)、再開イベントが実際に発生するはずです。同様のシナリオでいくつかのテストを行いましたが、そうでした。ところで、これが私が見つけたこのイベントの最も良い説明です:

アプリが Suspended 状態から再開されると、Running 状態になり、中断されたときの状態から再開さます。メモリに保存されているため、アプリケーション データが失われることはありません。したがって、ほとんどのアプリは再開時に何もする必要はありません。ただし、アプリは数時間または数日間停止された可能性があります。そのため、アプリに古くなった可能性のあるコンテンツまたはネットワーク接続がある場合、アプリの再開時にこれらを更新する必要があります。

広告 3) Launch は、Not running -> Runningからの移行に対応する特別な種類の Activation (アプリケーションへの可能なエントリ ポイントの 1 つ) に過ぎないことを理解しています。いくつかの引用:

何らかの理由でアプリがアクティブ化されると、システムは Activated イベントを送信します。

ユーザーが終了したアプリに切り替えると、システムは、Kind を Launch に設定し、 PreviousExecutionStateTerminatedまたはClosedByUserに設定して、Activated イベントを送信します。アプリは、保存されたアプリケーション データを読み込み、表示されたコンテンツを更新する必要があります。

広告 2) OnLaunchedが実行され、Resumingイベントが発生しなかった場合、アプリは「実行されていない状態」にあったと思います。たとえば、再起動する前にシステムによって終了されました (一時停止 -> 実行されていません)。タスク マネージャーがこの情報を更新しなかった理由がわかりません。

于 2012-09-03T13:02:07.137 に答える
0

私はこれに答えることができます:

1)しかし、なぜ再開イベントが発火しないのですか? (アプリが一時停止状態から実行状態になるため、再開イベントを発生させる必要があります)

アプリを強制的に中断状態にするために使用できるデバッグ ボタンがあります。Visual Studio のクイック検索で「デバッグの場所」を検索します。これは、デバッグ中に「サスペンド」ボタンをタップするデバッグ ツールバーです。アプリに戻ると (戻る前に数秒待ってください)、再開イベントが発生するはずです。

于 2014-01-14T23:42:27.707 に答える