重 ContentProvider 查询和 ListView
Heavy ContentProvider query and ListView
对于一个可能是新手的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。
我想做的很简单:显示一个 Android 包含大量数据库存储字符串的 ListView。 "a lot" 我的意思是最多 100MB,但 ListView 应该立即开始显示内容。
上下文是:这是笔记管理应用程序,默认情况下它应该显示所有未过滤的用户笔记。我正在研究如果有很多笔记,应用程序将如何表现。
现在我将推荐的方法与 Loader 框架一起使用:在 onCreateLoader 中启动 ContentProvider 查询,然后在 onLoadFinished 中将生成的 Cursor 分配给 ListView 的适配器。
这仍然很慢(初始加载最多 10 秒)。我研究了 Cursor 的来源,知道它保留了 "window" 数据,因此不应一次加载所有 100MB 的文本。不过好像是这样。
我认为这是一项相当常见的任务,很惊讶没有找到任何关于它的有用信息。这是应用程序的关键部分,我想从一开始就把它做好 - 以后很难重构它。
所以有人可以帮忙吗?延迟加载是答案吗?为什么 Cursor 不自己做?如何正确执行 - 我是否必须先缓存 ID 数组并在滚动时加载块?
谢谢!
SimpleCursorAdapter
+ CursorLoader
应该可以正常工作,看来您的数据库查询很慢,很可能您想对未索引字段
上的数据进行排序
对于一个可能是新手的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。
我想做的很简单:显示一个 Android 包含大量数据库存储字符串的 ListView。 "a lot" 我的意思是最多 100MB,但 ListView 应该立即开始显示内容。
上下文是:这是笔记管理应用程序,默认情况下它应该显示所有未过滤的用户笔记。我正在研究如果有很多笔记,应用程序将如何表现。
现在我将推荐的方法与 Loader 框架一起使用:在 onCreateLoader 中启动 ContentProvider 查询,然后在 onLoadFinished 中将生成的 Cursor 分配给 ListView 的适配器。
这仍然很慢(初始加载最多 10 秒)。我研究了 Cursor 的来源,知道它保留了 "window" 数据,因此不应一次加载所有 100MB 的文本。不过好像是这样。
我认为这是一项相当常见的任务,很惊讶没有找到任何关于它的有用信息。这是应用程序的关键部分,我想从一开始就把它做好 - 以后很难重构它。
所以有人可以帮忙吗?延迟加载是答案吗?为什么 Cursor 不自己做?如何正确执行 - 我是否必须先缓存 ID 数组并在滚动时加载块?
谢谢!
SimpleCursorAdapter
+ CursorLoader
应该可以正常工作,看来您的数据库查询很慢,很可能您想对未索引字段