0

アプリのパフォーマンスを向上させるために、RSS フィードを SQLite データベースにキャッシュしたいと考えています。
RSS フィードの非常に基本的な部分、つまり , title, descriptionURLguidpubDate. 今のところ、それらを処理して、カスタム クラスの Vector<Feed>場所に保存できます。Feed

Androidの初心者として、気が遠くなるようなことがいくつかあります。
以下のようなタイトルのフィード アイテムがあるとします。

1. Cat Kills the Dog
2. Curosity Killed the Cat in Revenge
3. Y U NO leave Cat alone ?  

最初の実行では、テーブルの行数を取得するとゼロが返されます。つまり、すべてのフィードをデータベースに追加する必要があります。問題はありません。
フィードが更新されたときに問題が発生します。更新されたフィードは次のとおりです。

*. Quick Brown Fox Jumps Over The Lazy Dog. Dog Dies.
1. Cat Kills the Dog
2. Curosity Killed the Cat in Revenge
3. Y U NO leave Cat alone ?

ロジックは次のとおり
です。 1. RSS フィードの解析を開始します。
2. 新しく取得した RSS フィードのタイトルを読み取ります。
3. データベースの最初の行のタイトルと一致していますか?
3.1. いいえ、解析を続けて、このフィードをデータベースに追加してください。
3.2. はい、解析を停止して、このフィードをデータベースに追加します。

問題は、ここで追加された行がテーブルの最後の行になることですが、RSS XML フィードのように最初の行にする必要があるため、その後の比較が容易になります。

問題は、フィード XML と同様の行の順序を維持することです。
どうすればその順序を維持できますか?

または、フィードを整理して保存するためのより良い方法はありますか?

4

1 に答える 1

1

まず、タイトルが一意であることに依存しないでください。代わりにguid、アイテムの一意の識別子となるフィールドを使用してください ( RSS 仕様を参照してください)。

フィードを更新しています

取得したフィードの各アイテムを調べてguid、データベースに既に存在するかどうかを確認します。存在する場合はスキップします。

存在しない場合は、エントリを作成します。

したがって、ロジックを修正します。

  1. RSS フィードの解析を開始します。
  2. guid新しく取得した RSS フィードのを読み取ります。
  3. guidデータベース内のどの行とも一致しますか? 3.1. いいえ、解析を続けて、このフィードをデータベースに追加してください。3.2. はい、解析を停止して、このフィードをデータベースに追加します。

アイテムの順序

pubDateアイテムが公開された時期を示すと呼ばれるフィールドもあります。pubDatefor each アイテムをデータベースに保存し、ORDER BY取得時に句で使用するだけです。

SELECT * FROM items ORDER BY pubDate DESC

これにより、元の発行順にアイテムが表示されます。

UPDATE : SQLite には日付のネイティブ データ型がないため、時間/日付ヘルパー関数を利用するか、コードをデータベースに挿入する前にエポック形式に変換することができます。pubDate

于 2013-08-11T17:36:58.723 に答える