0

最近、私は解決するのが本当に難しい問題に直面しています。

フラグメントを含むビューページャーを持つアクティビティ A があります。サーバーからデータをロードし、ビューにフィードしています。サーバーから受信したデータは、アプリケーション全体でアクセスできるシングルトン クラスに格納されます。ここで、ユーザーは、シングルトン クラスを介してサーバー データを使用する別のアクティビティ B に移動します。

ユーザーがホームを押してさまざまなアプリケーションを起動すると、アプリがバックグラウンドで強制終了されます。アプリケーションを再起動すると、OS は保存された状態でアクティビティ B を再度ロードしようとしますが (onSaveInstance では何もしていません)、シングルトン クラスのデータは既に失われ、アプリがクラッシュします。問題は、このアクティビティでサーバー データを再度取得できないことです。このアクティビティの onSaveInstance にデータ全体を保存する必要がありますか? シングルトン クラスを使用してすべてのデータを保存することはお勧めできませんか?

このような状況を処理する理想的な方法は何ですか?どんな助けも大歓迎です。

4

2 に答える 2

0

データの機密性はどの程度ですか? Android では、スケルトンを使用してデータを移動することはお勧めしません (インテントを介して渡す場合は静的です (いいえと言ってください))。イーサウェイは、おそらくデータをメインメモリに保存する必要があるとコメントしました。Android には、実際にファイルに書き込む以外にいくつかのオプションがあります。データの量とその構造に応じて、いくつかのオプションがあります。

  1. ContentProviderContentResolver基本的な概要。他のアプリケーションからデータにアクセスできるようにする予定がない限り、これはお勧めしません。
  2. SQLite . 既存の SQL の知識がある場合や、リレーション データベースが必要な大量のデータがある場合に適しています。
  3. 共有設定。その名前が示すように、通常はユーザー プレゼンス データの保存に使用されますが、任意のデータの保存にも使用できます。大量のデータや複雑なデータを保存する必要がある場合はお勧めしません。
  4. ファイル. 古き良き Java ファイル クラスです。説明は不要です。

私たちのデータを使用して、上記のメソッドのいずれかへの io を処理する DataStore 管理クラスを作成することをお勧めします。そのため、データを参照するときは、そのクラスから単純にプルします。

于 2012-12-21T05:03:20.297 に答える
0

このような状況を回避するには、次のことを考慮する必要があります。

于 2014-04-08T19:53:40.233 に答える