我有一个 AsyncTask
,它从 Web 服务获取信息并显示在 UI 中。这要求我每次应用程序启动时都获取信息,这会浪费带宽,并且在启动应用程序时需要很长时间才能显示信息。
我想将获取的信息存储在本地 SQLite 数据库中,并每隔一段时间将其与来自 Web 服务的数据同步。
做到这一点的最佳方法是什么?
如果我为数据库创建另一个AsyncTask
,并在应用程序启动后立即运行它,则可能会出现竞态条件,即当我从中读取信息以显示时,数据库会更新在用户界面中。为此有何建议?我认为这是一个常见问题,尽管我无法找到正确的关键字来找到答案......
谢谢
编辑:我的最低 API 级别是 8,因此任何解决方案都应该适用于它或在支持库中提供。
最佳答案
如果您想将数据本地缓存在 SQLite 数据库中,请考虑创建 Content Provider它提供了 SQLite 数据库的包装器,还允许您使用 Loaders它可以从数据库中提取信息,并随着基础数据的变化自动更新您的 UI。
关于android - 如何使用 SQLite 数据库存储来自 Web 的同步数据 - 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325074/