Android存储RSS提要解析数据在数据库中供离线使用

时间:2013-12-19 18:13:31

标签: android database sqlite rss-reader

我在android中使用sax解析器解析Rss提要。我可以在网络连接时在线显示数据,但我也希望它可以在线下使用,并在再次连接到互联网/ wifi时更新它。我不知道如何去做。

现在最好的方法是什么?我应该构建Sql数据库吗?考虑到我也有图像。 或者还有其他更简单的方法。我希望更简单。

我在这里需要一些关于Sql数据库方法的进一步建议,首先:我的RSS提供图像url链接,我在运行时使用位图和insutstream进行显示,但现在出于离线目的,我需要保存像whatsapp这样的完整图像吗?这是正确的吗 ?如果是,如何在数据库中保存完整的图像?最后我想将sd卡上的完整数据库保存在内部存储器中,在SD卡上存储数据会正常工作还是会产生问题?因为whatsapp在内存中存储了相当多的数据!如果存储在SD卡上不是问题,我如何在SD卡上存储完整的数据?

2 个答案:

答案 0 :(得分:2)

这取决于您希望数据持续多长时间。问问自己:

重启手机后,或强行关闭应用后,用户是否可以使用此数据?它是否应该可用,无论我最后一次连接,是否尽可能最新?

在那种情况下,然后是 - 您应该使用数据库。 Android为sqlite数据库提供了许多内置的辅助类。

http://developer.android.com/training/basics/data-storage/databases.html

哪个应该让你入门。

图像非常简单,因为您只需要隐藏对数据库中图像的引用。您当然也会将这些图像写入磁盘(在SD卡或其他地方......)请参阅:

Save bitmap to location

您的其他选择,afaik是:

1)SharedPreferences(不太适合这个)。

2)序列化数据并从某个文件写出/读入。

如果您仍在寻找有关数据库概念和Android的更多信息,请参阅以下有关该主题的非常好的教程:

http://www.vogella.com/articles/AndroidSQLite/article.html

答案 1 :(得分:0)

您可以使用droidQuery下载RSS Feed和缓存。处理this gist,希望您使用android-rss库,可以将以下缓存标记添加到AjaxOptions对象:

.cache(true).cacheTimeout(AjaxCache.TIMEOUT_NEVER)

这将使得响应被缓存,直到您明确调用:

AjaxCache.sharedCache().clearCache();

网络连接后您可以执行此操作(有关此问题的帮助,请查看NetWatcher)。

请注意,使用此缓存机制可以提供一个非常简单的解决方案,只有在应用程序进程生效时才会存储。如果您想要跨会话保存 - 那么如果用户稍后打开应用并且不在线,您将需要使用更复杂和持久的内容,例如SharedPreferencesSQLite。可以找到一个很好的选项列表here