同步服务

时间:2013-09-23 07:46:03

标签: android synchronization

我正在尝试编写本地(远程?)服务,其唯一的职责是定期检查一组远程URL,以查看是否发生了某些更改(在这种情况下,更新自己的数据库)相应地)。

SyncAdapter不是可能选择的原因是我无法使用LoginManger:我通过网络表单登录到第三方网站(通过SAML,确切地说,使用一组cookie保持会话。没有身份验证令牌,没有无限会话。因此,没有LoginManager,最终没有SyncAdapter

另一方面,SyncAdapter会处理很多我真正想做的事情,但我不知道如何:它以非严格的时间表触发更新过程,但是基于电池状态,网络信号强度, 等等。通过这种方式,同步几乎是连续的,如果我收到邮件,Gmail应用程序会通知它3,可能是4秒钟。

我想编写自己的服务,允许用户更新应用程序数据库(我不在乎它是否立即或每天两次,更新很少但实际上很重要),这不会导致电池排水,以及(如果可能,不重要),可以通过前景活动解雇/停止。

1 个答案:

答案 0 :(得分:1)

你提到了两种可能性。一个是你自己和另一个同步的“没有很好记录的”SyncAdapter,这是自Android 2以来可用的。

两者都有利弊:

  • 自我编写的服务定义明确,并且有大量的示例和文档。
  • 即使是Google经理也不太了解SyncAdapter。我在Google的IO上看过演示文稿。他们谈论了蝙蝠排水的问题,但根本没有提到SyncAdapter。
  • 另一方面,SyncAdapter具有您需要的所有功能(可能更多)。你必须建立空类,例如授权启动并运行。

我建议尝试使用SynvAdapter。我理解这个概念并让我的第一个应用程序启动并运行的方式是SyncAdapter Concept overview