私のアプリは Web サーバーからのデータを使用します。Web サイトでは、機能するのに数ミリ秒かかる ajax 呼び出しを使用してオートコンプリートを取得できます。しかし、アンドロイドの場合、サイトからすべてのキーワードを取得し、それらを配列に格納し、n アダプターを作成して AutoCompleteTextView に設定する必要があります。問題は、サーバー上に 10,000 個のキーワードがあるため、そのような膨大なデータをフェッチするのが問題になることです。私の場合、オートコンプリートを達成する他の方法はありますか?? ありがとうございました
質問する
1045 次
2 に答える
2
アプリを ANR しないように非 UI スレッドでデータをプリフェッチし、同じデータを繰り返しフェッチしないように何らかのローカル キャッシュまたはサービスの形式でアクセスできるようにする必要があることは明らかです。
最も複雑でないものから最も複雑なものまでのオプション:
- を使用して
AsyncTask
、結果を何らかの静的変数に格納します。 AsyncTask
(1) のような概念または類似 の概念を使用しますが、グアバに見られるようなキャッシュに結果を保存します: http://code.google.com/p/guava-libraries/wiki/CachesExplained- サービスを構築します: http://developer.android.com/reference/android/app/Service.html#WhatIsAService。サービスのアーキテクチャは、呼び出しの複雑さに応じて階層化できます。ajax 呼び出しから取得するドメインが複雑で、このオートコンプリート機能以外にも使用されている場合は、リポジトリパターンを確認してください。
于 2012-05-26T06:53:44.910 に答える
0
Web サイトに実装されているオートコンプリートと同様のオートコンプリートを作成することをお勧めします。つまり、ユーザーが特定の文字数を入力すると、候補が取得されてドロップダウンに表示されます。平均的なユーザーは、多くても 100 個のキーワードを使用すると思います (作成しているアプリによって異なります)。それが、あなたが達成しようとしているものと類似している自分のアプリで私がやっていることです。もちろん、提案を取得するために AsyncTask を使用します。
10k のキーワードをすべてダウンロードする必要がある場合は、キーワードを使用して静的配列を作成しないでください (db で変更されないと仮定して)。
于 2012-05-30T10:45:26.550 に答える