android - 如何使用 SQLite 数据库存储来自 Web 的同步数据 - 线程安全

标签 android android-sqlite android-networking

我有一个 AsyncTask,它从 Web 服务获取信息并显示在 UI 中。这要求我每次应用程序启动时都获取信息,这会浪费带宽,并且在启动应用程序时需要很长时间才能显示信息。

我想将获取的信息存储在本地 SQLite 数据库中,并每隔一段时间将其与来自 Web 服务的数据同步。

做到这一点的最佳方法是什么?

如果我为数据库创建另一个AsyncTask,并在应用程序启动后立即运行它,则可能会出现竞态条件,即当我从中读取信息以显示时,数据库会更新在用户界面中。为此有何建议?我认为这是一个常见问题,尽管我无法找到正确的关键字来找到答案......

谢谢

编辑:我的最低 API 级别是 8,因此任何解决方案都应该适用于它或在支持库中提供。

最佳答案

如果您想将数据本地缓存在 SQLite 数据库中,请考虑创建 Content Provider它提供了 SQLite 数据库的包装器,还允许您使用 Loaders它可以从数据库中提取信息,并随着基础数据的变化自动更新您的 UI。

关于android - 如何使用 SQLite 数据库存储来自 Web 的同步数据 - 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325074/

相关文章:

java - 将大 CSV 文件加载到 SQLITE 数据库

java - 像api调用这样的网络相关任务应该放在Activity生命周期的什么位置?

android - 星巴克在商店附近时如何在 Android 设备上显示 UI?

android - 我们可以在 android 中打电话时录音吗?

android - 折线选项不能为空

java - 如何使用POST查询上传数据?

java - 未在 Android 应用程序中使用 SQLite 创建表

java - 排序时如何忽略第一个单词

android - 将数组中的值添加到 XY 系列

java - 如何修复 'android.os.NetworkOnMainThreadException' ?