2

我正在开发一个联系人应用程序,我需要支持大量联系人。假设用户有 10 万个联系人。

要求是 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