【发布时间】:2016-01-09 15:07:42
【问题描述】:
我已经实现了一个同步适配器,它将我的联系人与服务器同步,并返回更少的在我的应用程序上注册的联系人。我将我的应用程序帐户添加到这些联系人中,并将它们添加到我的电话簿联系人中。 我实现了一个观察者类,它观察我的电话簿联系人是否有任何变化(如添加、编辑或删除),如下所示
protected void onCreate(final Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mAccount = CreateSyncAccount(this);
ContentResolver.setSyncAutomatically(mAccount, AUTHORITY, true);
mResolver = getContentResolver();
mUri = new Uri.Builder()
.scheme(SCHEME)
.authority(AUTHORITY)
.path(TABLE_PATH)
.build();
TableObserver observer = new TableObserver();
mResolver.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, observer);
通过这样做,同步适配器进入无限循环并保持与服务器同步联系人。
我猜这可能是因为添加了联系人,并且观察者在使用同步适配器添加联系人时一次又一次地启动同步适配器。
MyObserver 类的 onChange 方法是这样的:
@Override
public void onChange(boolean selfChange, Uri changeUri) {
mResolver.requestSync(mAccount, AUTHORITY, new Bundle());
}
请帮我解决如何仅在用户手动修改电话簿联系人时才能同步联系人,而不是在同步适配器添加联系人时。 谢谢
【问题讨论】:
标签: android performance android-syncadapter