私のアプリは電話にデータを保存する必要がありますが、より効率的な方法がわかりません。データなどを検索する必要はありません。アプリを閉じるときにアプリの現在の状態を保存し、バックアップ時に復元できるようにする必要があります。1MB から 10MB のデータを保存する必要があります。
基本的に、データを含むカスタム クラスがたくさんあります。現在、それらを Serializable として保持し、各クラスをファイルに保存するだけです。それを変更してSQLiteに保存する理由はありますか?
sqlite を使用する場所があれば、保存することができます。また、データを保持しているアプリ/アクティビティが OS によって突然強制終了された場合、DB 内の内容がほぼ最新であることを知ることができます。私が見ることができないことと、ユースケースにsqliteを使用する明らかな理由があります。また、SQL アプローチの場合、後でドメイン オブジェクトの構造を変更し、データベースの古いバージョンから新しいバージョンにデータを移行するための明確な方法があります。これは、シリアル化されたオブジェクトを使用して行うこともできますが、その場合、オブジェクトを新しいものと古いものの両方で同時に複製する必要があります。特に、バージョン x から y に移行する必要があることを考えると、これは非常に恐ろしく面倒に思えます。そのため、ドメイン オブジェクトを更新する必要が生じた場合、非常に厄介な問題が発生する可能性があります。
あなたの質問で、データはアプリの状態を保存するためだけのものであると述べています。したがって、特にファイルサイズが10MBをはるかに超えることはないと述べているため、私の最初の応答はデバイスにデータを保持することです。適正。
したがって、あなたへの私の答えは、デバイス上にそのまま保持することです。将来、情報の使用方法が変わった場合は、このアプローチを再検討する必要がありますが、現時点では完全に論理的です。
シリアル化されたクラスのみを保存する場合は、このスレッドで説明されているように ORM マッパーを使用できます。これにより、独自のマッパーを作成する手間が省け、新しいクラスに簡単に拡張できます。また、要件が変更された場合は、データを検索できます。
システムを SQLite に変更する唯一の理由は、より快適で、おそらくより確実なシステムです。たとえば、ファイルが存在するかどうかを確認したり、コンテンツを解析したりする必要があります。SQLite を使用する場合は、データの整合性を検証する必要がなく、Android も少し役立ちます。また、データを ListView に表示するなど、他の目的でデータを使用することもできます。