我在android中使用sax解析器解析Rss提要。我可以在网络连接时在线显示数据,但我也希望它可以在线下使用,并在再次连接到互联网/ wifi时更新它。我不知道如何去做。
现在最好的方法是什么?我应该构建Sql数据库吗?考虑到我也有图像。 或者还有其他更简单的方法。我希望更简单。
我在这里需要一些关于Sql数据库方法的进一步建议,首先:我的RSS提供图像url链接,我在运行时使用位图和insutstream进行显示,但现在出于离线目的,我需要保存像whatsapp这样的完整图像吗?这是正确的吗 ?如果是,如何在数据库中保存完整的图像?最后我想将sd卡上的完整数据库保存在内部存储器中,在SD卡上存储数据会正常工作还是会产生问题?因为whatsapp在内存中存储了相当多的数据!如果存储在SD卡上不是问题,我如何在SD卡上存储完整的数据?
答案 0 :(得分:2)
这取决于您希望数据持续多长时间。问问自己:
重启手机后,或强行关闭应用后,用户是否可以使用此数据?它是否应该可用,无论我最后一次连接,是否尽可能最新?
在那种情况下,然后是 - 您应该使用数据库。 Android为sqlite数据库提供了许多内置的辅助类。
http://developer.android.com/training/basics/data-storage/databases.html
哪个应该让你入门。
图像非常简单,因为您只需要隐藏对数据库中图像的引用。您当然也会将这些图像写入磁盘(在SD卡或其他地方......)请参阅:
您的其他选择,afaik是:
1)SharedPreferences(不太适合这个)。
2)序列化数据并从某个文件写出/读入。
如果您仍在寻找有关数据库概念和Android的更多信息,请参阅以下有关该主题的非常好的教程:
答案 1 :(得分:0)
您可以使用droidQuery下载RSS Feed和缓存。处理this gist,希望您使用android-rss库,可以将以下缓存标记添加到AjaxOptions
对象:
.cache(true).cacheTimeout(AjaxCache.TIMEOUT_NEVER)
这将使得响应被缓存,直到您明确调用:
AjaxCache.sharedCache().clearCache();
网络连接后您可以执行此操作(有关此问题的帮助,请查看NetWatcher)。
请注意,使用此缓存机制可以提供一个非常简单的解决方案,只有在应用程序进程生效时才会存储。如果您想要跨会话保存 - 那么如果用户稍后打开应用并且不在线,您将需要使用更复杂和持久的内容,例如SharedPreferences
或SQLite
。可以找到一个很好的选项列表here。