我应该将我的联系人列表存储在 DB 还是 Sharedpreference 中以避免运行相同的任务

问题描述

我有我的应用程序,当进入某个活动时,我会在我的手机中显示一个联系人列表(类似于聊天应用程序,您在尝试开始新聊天时会看到一个联系人列表)。 所以我只是想了解这些任务的实现细节,以实现最佳/高效工作。 每当我进入活动时,是否每次从我的设备中获取联系人列表(这实际上是多余的,因为我们可能一遍又一遍地做同样的工作, 但是我们不能再依赖于 DB/SharedPref 中保存的数据,因为联系人数据是动态的并且必然会发生变化, 所以需要您的专家建议如何以最佳方式实际完成这项工作(我已经编写了获取联系人的方法 - 那么我是否应该每次或任何其他方式重新获取联系人,流行的聊天应用程序实现了什么来显示每次都联系?

解决方法

就我个人而言,我会在定期调用的后台线程(使用 coroutines)上实现联系人的获取(也许每次创建活动时,如您所建议的那样,或者当他们打开应用)。

因为它在后台线程上,它会阻止他们使用该应用程序(或在创建活动时任何丢帧)。他们可能有数千个联系人,或者使用的设备速度非常慢。

大概,您希望存储与每个联系人关联的其他一些数据:例如,如果您打开与用户的聊天,您希望将所有消息与用户相关联,因此我将使用这样的数据库realm 而不是共享偏好。

所以整个过程大概是这样的:

  • 打开应用会触发一项服务,该服务会在后台线程上获取用户的所有联系人。
  • 服务更新数据库,可能会删除不存在的联系人并添加新联系人。
  • 如果您在 view model 中处理此问题,您的 Fragment 或 Activity 可以观察联系人列表并在更改后更新 UI。