对于一个可能是菜鸟的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。
我想做的很简单:显示一个包含大量数据库存储字符串的 Android ListView。我所说的“很多”是指最多 100MB,但 ListView 应该会立即开始显示内容。
上下文是:这是笔记管理应用程序,默认情况下它应该显示所有未过滤的用户笔记。我正在研究如果有很多笔记,应用程序将如何表现。
现在我将推荐的方法与 Loader 框架一起使用:在 onCreateLoader 中启动 ContentProvider 查询,然后在 onLoadFinished 中将生成的 Cursor 分配给 ListView 的适配器。
这仍然是非常缓慢的(初始加载最多 10 秒)。我研究了 Cursor 的来源,知道它保留了一个数据“窗口”,因此不应一次加载所有 100MB 的文本。不过好像是这样。
我认为这是一项相当常见的任务,很惊讶没有找到任何关于它的有用信息。这是应用程序的关键部分,我想从一开始就把它做好 - 以后很难重构它。
所以有人可以帮忙吗?延迟加载是答案吗?为什么 Cursor 不自己做?如何正确执行 - 我是否必须先缓存 ID 数组并在滚动时加载 block ?
Cảm ơn!
SimpleCursorAdapter
+ CursorLoader
应该可以正常工作,似乎您的数据库查询很慢,很可能您想对未索引字段上的数据进行排序
Tôi là một lập trình viên xuất sắc, rất giỏi!