Android 中的加载程序、sqlite 和 REST 问题
Loaders, sqlite and REST issue in Android
我想与您分享我在开发一个 Android 应用程序时遇到的一个问题。
我的应用程序的架构如下:
- 我有一个 SQLite 数据库来保存所有项目。
- 我有一个 REST 服务来获取所有项目。
- 我在活动中有一个带有加载器的内容提供程序,用于将数据库中的所有信息加载到 UI。
当我打开应用程序时问题就来了 我通过加载程序加载数据库中的所有信息。与此同时,我创建了一个服务来获取所有新信息。由于后端不保存项目中修改的时间值或类似的东西,我必须删除所有数据库项目并插入新项目。
在那段时间用户可以点击从数据库加载的项目,但如果就在那一刻在详细信息 activity 中打开项目(来自数据库中的数据)可能会导致由于该项目的空指针在那一刻不在数据库中,直到加载新项目。
我的问题是,我该如何解决这个问题?我想听听一些在这种情况下可能会更好的架构。您能否提供一些 link 文档或信息?
提前致谢!
了解 transactions. Do your delete/insert inside of a transaction, and make sure you understand about transaction isolation。如果您在事务中执行 delete/insert,那么在提交事务之前,其他连接不应该知道数据。
我想与您分享我在开发一个 Android 应用程序时遇到的一个问题。
我的应用程序的架构如下:
- 我有一个 SQLite 数据库来保存所有项目。
- 我有一个 REST 服务来获取所有项目。
- 我在活动中有一个带有加载器的内容提供程序,用于将数据库中的所有信息加载到 UI。
当我打开应用程序时问题就来了 我通过加载程序加载数据库中的所有信息。与此同时,我创建了一个服务来获取所有新信息。由于后端不保存项目中修改的时间值或类似的东西,我必须删除所有数据库项目并插入新项目。
在那段时间用户可以点击从数据库加载的项目,但如果就在那一刻在详细信息 activity 中打开项目(来自数据库中的数据)可能会导致由于该项目的空指针在那一刻不在数据库中,直到加载新项目。
我的问题是,我该如何解决这个问题?我想听听一些在这种情况下可能会更好的架构。您能否提供一些 link 文档或信息?
提前致谢!
了解 transactions. Do your delete/insert inside of a transaction, and make sure you understand about transaction isolation。如果您在事务中执行 delete/insert,那么在提交事务之前,其他连接不应该知道数据。