6

Windows 8のアプリケーションでは、このページに戻るときにPageのコンストラクタが常に呼び出されることがわかりましたが、Windows Phone 7のアプリケーションではそうではありません。Windows 8で戻るときにページコンストラクタが再度呼び出されるC#App

この動作のため、そのページのすべてのプロパティが失われ、ページが再アクティブ化された後に何らかの方法でそれらを保存し、再割り当てする必要があります。現時点では、SaveStateメソッドを使用してデータを保存し、LoadStateメソッドでデータを再割り当てします。両方のメソッドはサンプルグリッド/分割アプリケーションに組み込まれています。

なぜこのように設計されているのでしょうか、ページのインスタンスを維持するためのよりよい方法があるのでしょうか?

+1

+1これを呼び出すため。それは私を守ってくれました。これは大きな変化であり、状態とVMのライフサイクルを完全に再考することを意味します。 –

答えて

5

メモリに保存するページごとにPage.NavigationCacheMode = NavigationCacheMode.Requiredを設定できますが、ユーザーがこれらのページを無限にナビゲートしてメモリをリークできるようにする必要があることに注意してください。

+0

ありがとう!なぜメモリの問題があるのだろうか?それにはベストプラクティスはありますか? –

+0

まあ、ページをメモリに保存すると、ページが保持するメモリは、バック・スタックとフォワード・スタックからページを削除するまで解放されません。大量のメモリを割り当てる場合は、OnNavigatedToでそれを行い、OnNavigatedFromで解放することができますが、最良の方法は、ページインスタンスキャッシュなしでそのまま残すことです。 –

+0

ありがとう、私はそれをテストします。 –

関連する問題