如何提高 Room 查询次数

问题描述

我在我的应用中成功地使用了 Android Room 和 LiveData 的组合,但我注意到在查询和将数据呈现给 UI 之间存在显着延迟。这不是世界末日,根本不是不可持续的,但是当打开其他消息应用程序(如 WhatsApp)时,差异是巨大的。当我打开这样的应用程序时,对话和消息已经可用,甚至没有时间播放 RecyclerView 列表中通常可用的淡入认动画。

另一方面,在我的应用中,我可以清楚地看到数据在呈现给 UI 之前所花费的延迟。

我知道将视图模型附加到片段意味着每次重建关联的片段时都会重建相同的视图模型,因此理论上将该视图模型附加到活动将意味着数据将在内存中存活更长时间,从而节省加载时间当重建片段时,但它第一次加载它仍然会显示出明显的延迟,所以这不是一个理想的解决方案,我也不知道这是否是一个不明智的修改(将片段的视图模型附加到活动生命周期片段的)。

有什么方法可以改进吗?也许 WhatsApp 使用了一个完全不同的 sqlite 库,它比 Room 稍微快一点,所以我永远无法使用 Room 实现这种性能

解决方法

我认为,在尝试修复可能存在的瓶颈之前,您必须先调查问题:

  1. 缓慢的数据库查询 原因:
  • 海量数据
  • 未优化的查询
  • 中间件转换(如果你使用它) 只需计算 5-10 次通话的中间时间即可。
  1. UI 绘制缓慢
  • 检查您的 RecyclerView 或其他 UI。 使用 AndroidStudio 分析器找出潜在的慢代码。