0

アプリのすべてのアクティビティの操作のためにいくつかのオブジェクトをメモリに保持したいと思います。また、アプリが閉じたときにそれらのオブジェクトを保存したいと思います。これを行う最も効率的な方法はどれですか?私が考えることができるいくつかの可能性は次のとおりです。

1)すべてのアクティビティでオブジェクトのローカルコピーを保持し、それらをシリアル化してインテントに渡します。

2)すべてのアクティビティでオブジェクトのローカルコピーを保持し、それらをシリアル化し、アクティビティの再開と一時停止でそれぞれファイルの読み取りと書き込みを行います。

3)静的変数にしますが、その場合、ファイルの読み取り/書き込み操作をいつ実行するかわかりませんか?このアプローチでは、メモリがリークする可能性があります。

4)Applicationオブジェクトを使用して、オブジェクトをそのオブジェクトの変数として定義します。アクティビティのような明確なライフサイクルがあるので、それに応じて読み取り/書き込みを行うことができます。

4

2 に答える 2

2

アプローチ番号2をお勧めします。理由は「アプリが閉じる」などないからです。Androidは、他の目的でメモリが必要になるまで、メモリに保持しようとします。その後、アプリのプロセスは単純に強制終了され、コールバックが呼び出されることはありません。

必要に応じてオブジェクトを慎重にロードおよび保存する場合は、シングルトンまたはApplicationオブジェクトを使用してオブジェクトをキャッシュできます。ただし、これは、アプリプロセスが終了した場合にのみ、それらに使用されたメモリが再利用されることも意味します。

于 2012-12-29T07:33:24.050 に答える
0

それはあなたのデータに依存します。場合によっては、すべてのアプローチが適切です。

2つの選択肢があると思います。

  • データをsqliteに保持します。ファイルよりも簡単で高速です。アクティビティが開始したら、dbに必要なデータを要求し、それを表示します。(本当に必要な場合はファイルを使用してください)
  • データを格納するシングルトーンクラスを作成します。データはメモリにロードされ、非常に高速にアクセスできます。データが変更されたら、sqliteまたはファイルに保存します。グーグル「アクティビティ間でデータを共有する」
于 2012-12-29T08:15:34.337 に答える