2

連絡先アプリケーションを開発していますが、多数の連絡先をサポートする必要があります。ユーザーが1万人の連絡先を持っているとしましょう。

要件は次のとおりです。1) 高速スクロールのセクション化されたリストビュー 2) 姓または名、電子メールまたは電話番号のユーザー タイプとして連絡先を検索

私はこれにコンテンツプロバイダーを書きました。5つの列を持つテーブルがあります。

_id firstname lastname email phonenumber

サポート ライブラリのカーソル ローダーで loadermanger コールバックを使用して、コンテンツ プロバイダーにクエリを実行しています。

しかし、テーブルの50000行でこの問題に直面しています。

1) ANR - このログの場合 - おそらくカーソルによるヒープ メモリの割り当てと割り当て解除が頻繁に行われるため

05-30 18:59:20.775: E/CursorWindow(13798): need to grow: mSize = 1048576, size = 54,     freeSpace() = 32, numRows = 8509
05-30 18:59:20.775: E/CursorWindow(13798): not growing since there are already 8509 row(s), max size 1048576
05-30 18:59:20.775: E/CursorWindow(13798): The row failed, so back out the new row accounting from allocRowSlot 8508
05-30 18:59:20.775: E/Cursor(13798): Failed allocating fieldDir at startPos 10537 row 8508

2) アダプターからセクション コードを削除すると、ANR の頻度が減るように見えますが、それでも FASTSCROLL によって ANR が発生します。

3)検索:「FTS3」を使用して検索を高速化できますが、それは私の要件ではありません。クエリでのみ「LIKE」または「CONTAINS」を使用する必要があります。

この要件を達成することは不可能ですか?グーグルの人たちはどうやってやっているの?

4

0 に答える 0