大量数据 + Objectbox + RecyclerView 适配器

3

作为一个Android新手,我已经在ObjectBox数据库中存储了10万个项目。

在展示RecyclerView之前,我必须每次更新数据集(因为增加、删除项目)。所以我调用myRecyclerViewAdapter.setDataset(myObjectBox.getAll())

所以,在展示UI之前,查询需要一点时间,UI会有些卡顿。之后,UI正常工作。

有没有什么方法可以加速查询的速度?


2
请使用懒加载(io.objectbox.query.LazyList<E>)。 - pskink
谢谢@pskink,但我不知道如何使用LazyList。你能给我一个小的代码示例吗? - Jaya Prakash
已经尝试过了,但是我无法理解。对于部分加载、缓存等感到困惑。提供一个带有RecyclerView实现的代码示例会很有帮助。 - Jaya Prakash
1个回答

3

您不应该在主线程上查询大量数据。请查看响应式查询

最简单的示例:

Query<Task> query = taskBox.query().build();
query.subscribe(subscriptions)
     .on(AndroidScheduler.mainThread())
     .observer(data -> updateUi(data));

Please read the full docs.


很高兴收到您的来信,Markus先生。我会尝试编写代码,但如果您能在Github或其他地方提供RecyclerView的示例实现,那将是非常有帮助的,特别是对像我这样的新手。 - Jaya Prakash
一个问题:每当我删除一个项目时,我都会调用notifyItemRemoved()。但是在添加项目时没有进行任何调用。但代码仍然可以正常工作。为什么?需要调用notifyDataSetChanged()吗? - Jaya Prakash
每个人都应该尝试一下Objectbox...它真的很惊艳! - Jaya Prakash
1
观察者会在更新时自动触发。我在答案中提供了相关链接进行说明。 - Markus Junginger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接