13

外部サーバーに定期的に情報を送信するアプリケーションを開発しています。バックアップの目的で、送信されるデータのローカル コピーを作成します。

バッテリ寿命を節約するという観点から、データを保存するための最良のオプションは何ですか? 各データ送信は、約 5K ~ 10K のシリアル化されたオブジェクト (クラスには、日付、数字、および文字列を含む 5 つのフィールドがあります) です。

他のアイデアはありますか?

4

3 に答える 3

16

SQLite db は単にシステム上のファイル (に格納されている) であるため、SQLite を使用するかファイルを使用するかは問題ではないと思います/data/data/<your_package>/databases/。ファイルを適切なタイミングでハード ドライブに保存する必要があるのと同じように、適切なタイミングでデータベースにコミットする必要があります。つまり、どちらの方法でも、同じ数のハード ドライブの書き込みを使用できます。

どちらを選択するかは、保存するデータの種類に大きく依存すると思います。データベースを持つことで付与できる機能 (クエリなど) が必要な場合は、必ず SQLite を使用してください。ただし、データベースが必要ない場合、またはデータが大きく変化する (そしてリレーショナル データベースで簡単にセットアップできない) 場合は、ファイルを使用します。

確実に言えることは、シリアル化を使用してファイルを保存することを選択した場合は、シリアル化を使用しないことです。Android のシリアル化は遅く、遅く、遅く、大きなファイルが作成されます。パフォーマンス上の理由から、独自の XML または JSON 形式を作成する方がはるかに優れています。

于 2009-11-26T15:59:40.230 に答える
14

バッテリーの寿命については直接的にはわかりませんが、管理しやすいのはどれですか? データを管理する操作が減ると、CPU サイクルが減り、バッテリー寿命が長くなります。

SQLite オプションの方が簡単だと思います。データを格納する SQLite テーブルに日付列を配置できます。これにより、不要になった古い送信を簡単に削除でき、すべてネイティブ SQL ライブラリを介して処理されます。独自の Java コードを使用して、ファイル全体の負荷 (さらに悪いことに 1 つのファイル) を管理するのは、はるかに手間がかかります。

さらに、データをデータベースに書き込み、再度読み取る必要があるまで忘れることができます。データをファイルに保存する場合は、 Android アプリケーションのライフ サイクルに基づいて、いつファイルを読み書きする必要があるかを理解する必要があります。バッテリーが心配な場合は、必要以上に頻繁にファイルを書き込んだり、データをメモリにキャッシュしたりしたくないでしょうが、アプリが一時停止または破棄されたときにデータを失わないようにする必要があります。 . 私の意見では、SQLite データベースを使用する方がはるかに簡単で、これについて心配する必要はありません。

于 2009-11-26T12:47:24.283 に答える
4

アプリケーションはマルチスレッドですか? 複数のスレッドがデータ ストアにアクセスしている場合は、SQLite を使用します。ロックの問題は SQLite に任せましょう。

于 2009-11-27T18:28:39.150 に答える