質問

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

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

他のアイデア?

役に立ちましたか?

解決

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

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

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

他のヒント

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

選択する内容は、保存するデータの種類により左右されると思います。データベースが持つことができる能力(クエリなど)が必要な場合は、必ずSQLiteを使用してください。ただし、dbが不要な場合、または大幅に変化する(リレーショナルデータベースで簡単に設定できない)データがある場合は、ファイルを使用します。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top