0

我的应用程序创建日历事件,其中事件的描述中有一个联系人姓名。当用户使用电话的联系人更改联系人姓名时,我希望更改流向日历事件的描述字段。

最好的方法是什么?

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

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

  1. 在联系人上注册内容观察员并比较所有联系人姓名。
  2. 使用同步适配器

哪种方法真的更有效?

我不熟悉同步适配器,但我假设适配器不需要帐户(有这样的事情吗?),我希望更改立即流动(即不是在下一次预定同步时)

任何帮助,包括完全不同的方向,将不胜感激。

4

1 回答 1

1

SyncAdapter 绝对需要一个帐户。让系统识别它们的唯一方法 是使用 ContentResovler 和 AndroidManifest.xml 中的一些 xml 资源将它们与 Account / ContentAuthority 映射相关联。

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

要在一对 ContentProvider 之间交叉填充数据,您需要使用 ContentObserver 和服务来实现。不利的一面是,您需要努力工作才能使您的服务保持活力——在操作系统的高使用率期间,它往往会被杀死。一旦它关闭,您需要找到一种方法来启动它(计时器?),然后手动检查您在服务停止时错过的更改。

于 2011-07-01T12:51:27.167 回答