2

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

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

最好的方法是什么?

如果我为数据库创建另一个AsyncTask数据库,并在应用程序启动后立即运行它,我可能会遇到竞争条件,因为我正在从中读取信息以在 UI 中显示时更新数据库。为此推荐什么?我认为这是一个常见问题,尽管我无法找到正确的关键字来找到答案......

谢谢

编辑:我的最低 API 级别为 8,因此任何解决方案都应使用它或在支持库中可用。

4

2 回答 2

2

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

于 2013-05-01T19:40:14.723 回答
0

我不鼓励您使用 AsyncTask 执行任何网络调用。正如您所提到的,当 Activity 再次启动时,AsyncTask 会再次创建,包括当您简单地更改设备的方向时。加载器更好,但它们没有被创建来执行请求调用,因为虽然当你的活动恢复时加载器不会再次创建,但加载器将被恢复,但会从头开始重新启动它的东西。

最好的方法是使用 GoogleIO 2010 中提到的服务 API。由于您想从远程服务器对本地数据库执行一些数据持久性,我建议您使用RESTDroid

于 2013-05-08T07:17:57.667 回答