0

アプリケーションの実行中に電話をロックし、30 分または 60 分後にロックを解除すると、画面が空白になります。私の中にあったすべてのデータ (ユーザーの Twitter フィードと比較すると膨大なリストです)が消えてしまいましたObservable collectionViewModelリフレッシュするとNullReferenceException. state save電話をロックおよびロック解除している間は、何も処理していないことに注意してください。それが私のデータの損失の理由ですか?どうすれば対処できますか?保存できる状態データは最大4Mbに制限があるため、実装してもアプリケーションの動作に影響はありますか?

[アップデート]

私は次のことを試しました:
1) http://www.scottlogic.co.uk/blog/colin/2011/05/a-simple-windows-phone-7-mvvm-tombstoning-example/
2) http:/ /www.scottlogic.co.uk/blog/colin/2011/10/a-windows-phone-7-1-mango-mvvm-tombstoning-example/
など。

私が今直面している問題は、アプリケーションの viewModel にobservable collection、UI にバインドした が含まれていることです。この観察可能なコレクションは、 を含むユーザー定義クラスのコレクションですcomplex data members。それらの1つはですdictionary。ビューモデルを使用して保存しようとするとXMLSerialization、XML シリアライゼーションがディクショナリをサポートしていないため、エラーがスローされます。

Data contract serializationまた、App_Deactivated 中にビューモデルを IS に書き込み、App_Activated で取得しようとしました。しかし、私のコレクションは再開時に null です。IS ファイルを開くと、コレクションがファイルに書き込まれていないことが示されます。key ingredientこの問題を解決するためにいくつか不足していますか?

注: 私のリストが必要です。データを更新できません。

4

1 に答える 1

0

これは間違ったアプローチだと思います。

Tombstoningは、データではなく状態を保存できるように設計されています。次のものを保存します。

  1. 現在表示しているページ
  2. 現在表示しているデータのリストを取得するために使用されたパラメーター(存在する場合)
  3. 任意の選択状態(ユーザーが行を選択したかどうかなど)
  4. 任意のページ状態(編集モードなど)

これらのすべてが当てはまるわけではありませんが、何を保存する必要があるかについてのアイデアが得られるはずです。

これは、複雑なオブジェクトの大きなチェーンではなく、単純なデータ型を使用する非常に小さなデータセットになります。

それで:

  1. データの取得に使用するプロパティ/パラメータを保存します
  2. アプリが再開したら、パラメータを使用してデータを再度取得します。これに時間がかかる場合は、ユーザーに何らかの形式の進行状況通知を送信してください。これを正確に行うことができない場合は、ロードが完了するまで画面にアクティビティを表示して、ユーザーが何かが起こっていることを認識できるようにします。
于 2012-10-04T15:20:43.100 に答える