我的应用会创建日历活动,其中活动的描述中包含联系人姓名。 当用户使用电话的联系人更改联系人姓名时,我希望更改流向日历事件的说明字段。
这样做的最佳方法是什么?
我可以想到两个选择。两者都包含我自己的数据库中的联系人姓名副本。发生更改时,查找记录更改的记录并更新日历事件。
问题是如何有效地将新名称移动到我的数据库。
哪种方法更有效率?
我不熟悉同步适配器,但我认为适配器不需要帐户(有这样的东西吗?),我希望更改立即流动(即不在下一次计划的同步)< / p>
非常感谢任何帮助,包括完全不同的方向。
答案 0 :(得分:1)
SyncAdapter绝对需要一个帐户。 make the system recognize them的唯一方法是在AndroidManifest.xml中使用ContentResovler和一些xml资源将它们与Account / ContentAuthority映射关联起来。
我想你可以编写自己的无操作帐户和无服务权限并让你的SyncAdapter 不与服务器通信......但如果是这样,你最终会得到与定时器调用的服务相同。您不能劫持或与现有的SyncAdapter并行工作 - 必须为给定的ContentAuthority注册一个且仅有一个SyncAdapter。
要在一对ContentProviders之间交叉填充数据,您需要使用ContentObserver和服务来实现。缺点是你需要努力工作才能使你的服务保持活力 - 它会在操作系统的高使用率期间被淘汰。一旦它关闭,您需要找到一种方法来启动它(计时器?),然后手动检查您在服务失效时错过的更改。