将联系人姓名同步到日历事件说明的最佳方法是什么

时间:2011-04-26 11:17:47

标签: android android-syncadapter contentobserver

我的应用会创建日历活动,其中活动的描述中包含联系人姓名。 当用户使用电话的联系人更改联系人姓名时,我希望更改流向日历事件的说明字段。

这样做的最佳方法是什么?

我可以想到两个选择。两者都包含我自己的数据库中的联系人姓名副本。发生更改时,查找记录更改的记录并更新日历事件。

问题是如何有效地将新名称移动到我的数据库。

  1. 在通讯录上注册内容观察器并比较所有联系人姓名。
  2. 使用同步适配器
  3. 哪种方法更有效率?

    我不熟悉同步适配器,但我认为适配器不需要帐户(有这样的东西吗?),我希望更改立即流动(即不在下一次计划的同步)< / p>

    非常感谢任何帮助,包括完全不同的方向。

1 个答案:

答案 0 :(得分:1)

SyncAdapter绝对需要一个帐户。 make the system recognize them的唯一方法是在AndroidManifest.xml中使用ContentResovler和一些xml资源将它们与Account / ContentAuthority映射关联起来。

我想你可以编写自己的无操作帐户和无服务权限并让你的SyncAdapter 与服务器通信......但如果是这样,你最终会得到与定时器调用的服务相同。您不能劫持或与现有的SyncAdapter并行工作 - 必须为给定的ContentAuthority注册一个且仅有一个SyncAdapter。

要在一对ContentProviders之间交叉填充数据,您需要使用ContentObserver和服务来实现。缺点是你需要努力工作才能使你的服务保持活力 - 它会在操作系统的高使用率期间被淘汰。一旦它关闭,您需要找到一种方法来启动它(计时器?),然后手动检查您在服务失效时错过的更改。