【发布时间】:2021-05-09 17:12:45
【问题描述】:
我编写了一个应用程序,用户可以在其中添加事件来跟踪某些活动。数据保存在Room 数据库中。该应用程序只有一个活动并使用片段。
我当前的实现如下:我有一个LiveData,它有一个接口来获取“所有条目”、“所有 X 类型的条目”和“具有特定 ID 的条目”。然后,当每个片段被加载时,它会从数据库中检索它需要的数据。有时需要更多时间,有时需要更少时间,但等待数据加载可能会很烦人。
我一直在考虑将数据一直保存在内存中,并且每次用户更新某些内容时,我都会将其保存在内存中,并在后台线程中将其保存到数据库中。
现在问题来了:
- 最简单的解决方案是在应用程序启动时加载所有数据。用户会看到某种加载屏幕。然后,每次调用“获取数据”都会立即返回。问题 - 这个加载时间可能非常长,并且可以在用户开始使用应用程序时分块完成。就像 facebook 中的加载提要一样。
- 第二种解决方案是“按需”加载 - 在第一次请求某些内容时加载。正因为如此,在我的应用程序的任何地方,我都会有一个类似模式的观察者,住在
LiveData,以通知数据已准备好。但是,我希望它仅在未加载数据时才加载数据。
我正在搜索的是类似于 LiveData 的东西,但它会加载数据一次,然后是每个人,而不是每次 - 例如一个返回 LiveData 的函数,它会从数据库加载数据。
此外,我认为我的设计可能遗漏了 Android 中常见的一些东西,我很想听听它是什么。实现此类应用程序的正确方法是什么?
【问题讨论】:
标签: android android-livedata android-viewmodel