如何使用Android应用程序检测新版网站?

时间:2011-12-21 17:00:14

标签: android android-widget

我有一个Android应用程序,它是杂志网站的“链接”。

申请的activity将是杂志网站本身。

我为它制作了一个widget并运行service作为唯一目的:检测新杂志何时在线。当服务检测到它时,会更改widget icon

现在我怀疑的是如何才能发现一本新杂志。我考虑每6个小时从网站下载一个文件并比较最后一本杂志的版本(我可以从0开始作为应用程序的本地变量,并与下载的文档提供的数字进行比较)。


有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

这取决于您认为的“变化”。假设您要检测任何更改,请下载杂志主页/其他文件并在其上执行MD5或类似哈希。存储哈希。

下次进行下载时,再次对其进行哈希处理,然后比较哈希值。如果哈希值相同,则页面不变。散列的好处是减少了存储需求 - 您只需要保存少量字节,而不是整个文档。

但是,请注意,大多数页面都不是静态的 - 想象一下在角落里有一个时钟或任何动态内容的页面 - 在这种情况下,您的页面看起来总是不同。< / p>

对于一些运行良好的站点和服务器,您可以查看HTTP标头以获取有关何时创建/修改页面/设置为过期的信息。这不是每个人都提供的,有时可能是完全错误的。

理想的解决方案是找到一个特定页面(或页面的一部分),每个新问题都会改变一次 - 然后你可以继续检查那件事。这方面的一个示例可能是始终指向最新版本的链接或主图像的URL,这些链接随每个问题而变化。

当然,如果杂志愿意提供帮助,他们可以通过多种方式向您公开信息,从一个只有一个问题编号的简单文件到一个完整的网络服务。

编辑:假设您控制了多个杂志,我建议您有一个页面,以易于解析的格式(JSON,XML)返回每个杂志的最新问题列表。如果问题很少/非常手动的过程,这个列表可能是静态的 - 在这种情况下,手动编辑它。更好的是一个简单的数据库表,它被读取以生成列表 - 这样你就可以有一个很好的用户界面来更新它,并允许其他人维护它而不让他们访问服务器文件系统。

我还建议你为每本杂志和每期杂志分配一个真正独特的ID /密钥 - 以便将来你可以添加其他功能,如本地下载以便离线阅读/同步回复问题。 / p>