【发布时间】:2017-06-03 03:12:06
【问题描述】:
我试图从过去几周了解同步适配器的整个概念,并且对功能有一些疑问。
我想听听android联系人的所有变化
方法一:
我创建了一个自定义帐户,还创建了一个同步适配器。
编写了一个广播监听器,收听ContactsContract.Contacts.CONTENT_URI 和
public void onChange(boolean selfChange) 的 ContentObserver 类我正在调用 ContentResolver.requestSync(account,ContactsContract.AUTHORITY,bundle),它充当触发点以在联系人数据发生更改时启动同步适配器。
到这里为止一切看起来都很好,但是在 SyncAdapter 类中,我没有在 onPerofmSync 的 SyncResult 变量中获得任何数据
那么我如何从联系人中获取增量更改?
如果这不是触发同步适配器的方式,请纠正我。
方法二:
我遵循了一些示例,他们正在讨论查询联系人数据库,其中dirtyFlag 设置为 1。
我能够得到更改,但我的问题是
谁会将
dirtyFlag的值重新设置为“0”?
如果我必须这样做,那么可以说手机上有多个应用程序可以做同样的事情。如果某个应用程序在我的应用程序尝试访问信息之前将标志设置为“0”。我会错过所有的变化。
方法3:
查询数据库并为我自己的数据库中的每个联系人跟踪version,如果“版本”已更改,则将其视为联系人更改。这看起来是一个繁重的过程。
最后我的问题是什么是聆听变化的最佳方式 用户设备上的联系人?
【问题讨论】:
-
我来晚了,但第一种方法接近推荐的方法 => developer.android.com/training/sync-adapters/…
标签: android android-contacts android-syncadapter