連絡先アプリケーションを開発していますが、多数の連絡先をサポートする必要があります。ユーザーが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」を使用する必要があります。
この要件を達成することは不可能ですか?グーグルの人たちはどうやってやっているの?