如何在 kotlin 的离线 Android 应用程序中管理数据?

How to manage data in an offline Android app in kotlin?

我想制作一个可以离线使用的 android 应用程序。对于数据部分,我想在 json 文件中包含一些数据,每当我的应用程序首先打开时,就会获取 JSON 文件,并且我想从获取的数据中创建表格条目 android房间数据库(离线)。因此,假设如果用户喜欢某些引述,那么我可以在房间数据库中更改该引述的状态,当用户单击“喜欢的引述”导航时,我可以显示那些被喜欢的离线存储的引述(当然,当用户删除时数据将丢失的应用程序)。我面临的问题是从哪里获取该数据文件并在房间数据库中创建条目。如果我在 onCreate() 中执行此操作,那么每当用户打开此应用程序时,每次都会创建重复的条目。如何使这些条目成为唯一条目?

有几种方法可以做到这一点。一种方法是在每个元素中包含一个随机 UUID,并使数据库中的该列具有 UNIQUE 约束。然后重新添加它会失败(或者你可以使用 UPSERT 然后它会自动更新数据以防数据更改)。

另一种方法是,如果文件已经存在于 onCreate 中,则不处理该文件。你的逻辑可以

if(network_exists) {
   copy_file_from_network()
}
else if(json file exists) {
   return
}
else {
  copy_file_from_assets()
}
process_json_file()

实际上,我可以看到一个很好的论据来同时执行这两种操作 - 如果现有行有更新,您就可以处理它们,但如果没有新数据,您就不会浪费时间。

至于放这个的好地方 - 我会 运行 在你的初始屏幕上放这个,如果你有的话,这样用户就会知道你可能需要处理一段时间。