我正在创建应该具有离线模式的应用,因此以前下载的数据应存储在某处,最常见的方式是将数据存储在SQLite
数据库中。
大多数SQLite
数据库与android中的Content Provider
一起使用。我清楚地了解内容提供商的目的是什么(在不同应用程序之间共享数据),但在我的情况下,应用程序永远不需要与系统中的其他应用程序共享数据。
Content provider
具有与HTTP
请求(GET,POST,PUT,DELETE)
类似的界面
我的想法是创建可以像这样使用getAllLatestNews();
的外观类,首先它将尝试从互联网获取最新数据,如果失败 - 将使用来自数据库的数据,如果请求成功,它也将保存检索数据到数据库。这个类将是用于分隔不同应用程序层的外观(不是直接从活动发出请求)。
但是现在我有点困惑地决定我何时需要Content Provider
。我可以使用SQLiteOpenHelper
类来检索数据并将数据保存到数据库中,甚至可以使用ORM库来执行此操作
首先,我想通过REST API Pattern B
实施Virgil Dobjanschi
。但是现在我不确定这个,也许最好为Robospice(在我的情况下,在服务中的网络请求)请求创建外观并在那里做持久性?
请分享您对此主题的看法,如有任何帮助,我将不胜感激。
修改
我问了这个问题,因为我觉得直接从活动中提出请求是不好的做法,即使它们是在服务范围内进行的,我想分开我的应用程序的不同层,以使其更灵活,可维护性。
答案 0 :(得分:3)
由于您不打算分享您的数据,我会说实施ContentProvider是过度的。
我个人非常喜欢ORM图书馆(目前我在几个项目中使用SugarOrm),所以我会走这条路。
然后在应用启动时,您将检查您是否拥有有效的互联网连接,并根据该连接在线获取最新信息,或从数据库中检索旧信息。
为了分离逻辑,我很可能在服务中实现在线信息的获取,然后将其存储在数据库中并广播到信息现在可用的活动,然后活动可以检索来自新更新数据库的信息。
答案 1 :(得分:2)
内容提供商绝对是在应用程序之间共享数据,没有这个目的是没有用的。
如果您想私下在您的应用中使用这些数据,您可以使用SQLite数据库。还有其他可用的对象:
内容提供程序具有与HTTP请求(GET,POST,PUT,DELETE)类似的接口
我不这么认为。它更像是SQL语言。