1

アプリケーション セッション中にデータを処理する必要があるアプリケーションを開発しています。アプリケーションが強制終了された後、またはユーザーが手動でアプリケーションからログアウトした後は、データは必要ありません。

POJOを使用してデータを保存しています。POJO は、アカウント、ユーザー、キャンパスなどのようなものです。これらのデータはすべて、REST API 呼び出しから JSON の形式で取得します。

私はかなり新しい Android 開発者であるため、このシナリオで推奨されるストレージ アプローチを理解しようとしています。(SQLite、SharedPreferences、ApplicationContext、Bundles、ArrayList、Maps など)

パフォーマンスは重要であり、ユーザー セッション中にこのデータに対して検索が実行されます。

JSON オブジェクトを頻繁に構築し、API にポストバックする必要があります。

何か案は?

4

2 に答える 2

1

アプリケーションにデータを配置する

データを保持する必要がなく、そのライフサイクルが短い場合は、アプリケーションのサブクラスを作成して保持することをお勧めします。これは、Android プラットフォームでインメモリ グローバル データを保持する方法です - > How-to?

インメモリ SQLite テーブル/データベースにデータを配置する

または、データのクエリに役立つ場合は、インメモリ SQLite テーブルが必要になる場合があります。Androidでもインメモリテーブルが可能です。方法?

考慮事項

最初の方法で最高のパフォーマンスが得られる場合があります。すべてのデータはメモリ上にあるため、簡単にアクセスできます。しかし、データの構造が非常に複雑で、クエリが複雑な場合は、SQLite を使用してデータのクエリをより簡単にすることができます。パフォーマンスは、データとクエリがどの程度複雑かによって異なります。物事はメモリ上にあるため、パフォーマンスは依然としてかなり良好です。

しかし、注意が必要です。メモリを使いすぎてしまうと、アプリケーションが Android フレームワークによって強制終了される可能性が高くなります。そしてあなたのデータは失われます。(5MB は問題ないかもしれませんが、10MB は多すぎるかもしれません。何が起こるかをテストする必要があります。)

メモリの負荷が高い場合は、ディスクにオフロードする必要があります。特にストレージがほぼいっぱいになると、パフォーマンスが低下します。その場合、アクセスがかなり遅くなる可能性があります。データを保存および取得する最も簡単な方法は、SharedPreferences です。JSON を String プリファレンスとして記述できます。繰り返しますが、データが複雑すぎて、データベースのようにクエリを実行するのが便利な場合は、SQLite を使用できます。

于 2012-09-18T04:43:23.153 に答える
0

SQLite は、データのランダム アクセスとクエリが必要な場合に適したオプションですが、CRUD または何らかの SQL データバインドを自分で実装する必要があります。

すべてのデータを 1 つにまとめる必要がある場合は、JSON としてローカル ストレージに保存してから解析することができます (簡単にするために、小さなデータバインド ライブラリを作成しました: https://github.com/ko5tik/jsonserializer ) 。

あなたのデータが限られた量のプリファレンスのようなものである場合、プリファレンス ストレージを使用することができます (このための小さなライブラリも作成しました: https://github.com/ko5tik/andjectを使用すると、プリファレンスをオブジェクトに簡単にマーシャリングおよびアンマーシャリングできます)

于 2012-09-18T06:19:19.383 に答える