2012-01-01 3 views
2

私はアンドロイドのための "面白い引用"アプリを開発しています。私は私のアプリの中で使用したい1000以上の引用符を持っているが、私はデータベースやテキストファイルを使うべきかどうかわからない。アプリは同じ文章を2度読んではならないことに注意してください。前/次のボタンがあるので、以前の引用を追跡する必要があります。どちらがより良く最適化されているか教えてください。また、データの保存/読み込みに関する良いチュートリアルにリンクしてください。大量の文字列を保存/読み込むには良い方法はありますか?

おかげ

答えて

6

データベースを使用してください。テキストファイルよりも高速で柔軟性があります。ある日あなたはアプリを拡張し、あなたはデータベースを使ってうれしく思います。私は、あなたがアプリケーションを起動するときに、あなたのデータベースの組み込みランダム機能を使ってすべての行を選択することをお勧めします。 1000行が長すぎるはずはありません。次に、結果として得られるArrayList(または使用するために選択したもの)を繰り返し処理します。表示する最初の引用符は、そのリストの要素0、そのリストの2番目の要素要素などとなります。この方法を使用する場合は、使用する引用符を追跡するための他の構造は必要ありません。引用配列を索引付けするために使用するイテレーター変数を使用するだけです。

fetchAllRowsthis pageデータを取得するためのものと思われます。

メモリに保存しすぎないようにすると、これまで使用されていた見積もりIDの一覧のみを保持できます。そのリストの最後の要素が現在の引用符になり、前の要素はユーザーが戻るボタンを押したときに表示される要素になります。

+1

私はchristianに同意し、データベースをWebサービスにフックして、ユーザーが新しいバージョンのアプリをダウンロードする必要なく文字列を更新できるようにすることを検討したいと思うかもしれません。 Googleのアプリエンジンはすばらしいサービスであり、一定の通話量を超えない限り無料です。 http://code.google.com/appengine/ – MikeIsrael

+0

あなたは1回だけしたいと思う文章です。多分あなたはそれを事前に設定してあなたのアプリケーションと一緒に出荷することができますか(またはネットワーク上で読み取り専用にしますか?)そうでない場合は、データが入力されているかどうかを確認した後、データを入力してください。 –

+0

データをメモリに保存することは最適ではないかもしれません(私はこれがモバイルアプリと考えています)。また、既にラップされている引用については、状態を簡単に維持することはできません。これらのすべての点は、あなたが推薦するDBの使用を指しています。 – Nrj

3

あなたは同じ文字列を読み込むことはありません場合は二回、私はオブジェクトが不変であり、参照に再割り当てされるのを待っている文字列プールに固執するようあなたはStringクラスを使用しないことをお勧めしますが、そのあなたは同じ文字列を二度読まないので決して起こりません。

DBの意思を利用すると、複雑さが増します。

フラットファイルをバイト単位で読み込んでから、StringBuiderオブジェクトに変換して、それを単純なものに保ちながら集中的なGC()を防止することをお勧めします。

私は助けてくれるといいですね。

1

USING DBは、すべてのデータをメモリに保存したくないと思うので、問題ありません。あなたはDB内のすべての引用符を保持し、引用符が読み込まれたかどうかを追跡するためのフラグを保持することができます(読み取った後は単にそれをtrueに更新してください)。

このようにして、偽として

1

CsvJdbcとお考えですか?後で大量のレコードがある場合には、実際のデータベースへの簡単なアップグレードパスを持つシンプルなcsvファイルの利点があります。

1kレコードはかなり小さく、私の意見ではデータベースをメリットとして十分ではありません。

関連する問題