0

アプリケーションのデータを取得するために、Json ファイルを Jackson で解析して、カスタム オブジェクト (のリスト) にします。アプリを起動すると、利用可能な新しい Json ファイルがあるかどうかを確認し、ダウンロードするかどうかをユーザーに尋ねます。それ以外の場合は、「古い」Json ファイルを使用します。しかし、アプリを起動するたびに Json を解析します。次に、アプリケーション クラスを使用してオブジェクトのリストを保存し、必要なときにデータに移動します。ほとんどの場合、必要なオブジェクトは 1 つだけです。

複数レイヤーのネストされたオブジェクトを含む巨大なリストから、リストビューを作成するために必要なデータ (名前、ID、2 番目のテキスト、および画像の URL) のみを配置するカスタム オブジェクトの単純な「フラット」配列リストを作成します。何かがクリックされると、ID を使用してすべてのデータを取得します。

この Json ファイル全体を毎回解析するのはかなり時間がかかり、アプリケーションの起動時間が長くなります。もちろん、これはだめです。この膨大なカスタム オブジェクトのリストをアプリケーション クラスに保存すると、デバイスの大量のメモリがいっぱいになり、使用後にクラスが強制終了されることがあり、再度解析する必要があります。

すべてのデータを再解析する必要がない方法はありますか? 私は次のようなプロセスを望んでいました:

  • 新しい Json ファイル
  • 初めて全 JSON を解析して多層化されたカスタム オブジェクトのリストにする
  • リストビューの簡単なリストを作成する
  • 大きなリストを削除/クリアする
  • リスト全体を記憶に保持せずに、巨大なアイテムの1つだけを取得するための巧妙な方法。(おそらくジャクソンと何か)。
  • アプリケーションの破棄時に単純なリストを保存するかもしれませんが、parceable または serializable について何か読みましたか?

誰でもこれを達成する方法を知っていますか? それとも他に素晴らしいアイデアがありますか?

4

3 に答える 3

1

Jackson にはストリーミング API があります。また、(バックグラウンドで) AsyncTask で json を解析し、新しいデータの準備ができたらユーザー インターフェイスを更新することもできます。

于 2012-07-26T22:14:30.403 に答える
0

Androidプラットフォームの設計方法に沿って、おそらくデータをSQLiteデータベースに保存します。

于 2012-07-26T22:00:28.747 に答える
0

ストリーミングJacksonAPI(非常に高速ですが、ほとんどのコンテンツをスキャンする必要があります)の代わりに、エントリごとに1つずつ、さまざまなファイルに保存することもできますか?または、物事をグループ化する方法がある場合、それぞれがいくつかのサブセットを持つ複数のファイルになりますか?

もちろん、本当にたくさんのエントリがある場合は、ブルースが提案したようにSQLiteを使用することは非常に理にかなっています。

于 2012-07-27T18:05:57.593 に答える