2012-02-24 22 views
0

私は、主にオブジェクトのツリーである1つのインスタンスで構成されるアプリを持っています。私の電話がスリープするか、私がアプリを切り替えるたびに、私のアプリがリセットされ、このオブジェクトツリー内のすべてのデータが失われます。オブジェクトのツリーをバンドルに渡すにはどうすればよいですか?

私はまずonSaveInstanceState()を使用してみましたが、保存されたインスタンス化バンドルでは必要なオブジェクトのインスタンスを渡すことができませんでした。オブジェクトをパーセルとして渡そうとしましたが、オブジェクト内のオブジェクトをパーセルに保存できませんでした。

最後に、私はgetNonConfigurationInstanceを使用してみましたが、これはうまく動作しませんでした。 API11の代わりに、私はAPI7を使用しています。

私はドキュメントを読んできましたが、私のオブジェクトをすべて調べて、各変数を1つずつ保存してインスタンスの状態を保存することができません。前者は、オブジェクトを保持し、後者はそれを保存しているため

おかげ

答えて

3
  1. あなたは、唯一のonRetainNonConfigurationInstanceと一緒にgetNonConfigurationInstanceを使用する必要があります。また、同じプロセスでアクティビティがすぐに再作成された場合など、コンフィグレーションが変更された場合はしか動作しません。

  2. ツリー上のオブジェクトがシンプルな場合は、JSON形式にしてシリアライズ/デシリアライズしてみてください。私はかつて私のコントローラー階層の状態を維持するためにそれをした、素晴らしい仕事。

  3. あなたはputBundle(String key, Bundle value)Bundleの内側Bundle秒を置くことができます。

  4. Bundleの中にParcelableを入れてputParcelable(String key, Parcelable value)とすることができます。

オプション2、3と4のいずれかJSONObject秒、Bundle秒またはParcelable sから/にあなたの木の再帰的なコンバータを書くためにあなたが必要となります。

関連する問題