gpt4 book ai didi

android - 即使游标没有变化,也会调用 ContentObserver

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:37 25 4
gpt4 key购买 nike

我有一个内容观察器,当我的同步适配器添加的联系人之一被修改时,它应该得到通知。我注册和取消注册观察者这样做:

private static final Uri MYAPP_CONTENT_URI = ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(RawContacts.ACCOUNT_NAME, SyncAdapter.MYAPP_ACCOUNT_NAME).appendQueryParameter(RawContacts.ACCOUNT_TYPE, MY_APP_ACCOUNT_TYPE).build();

public static void registerContentObserver() {
ContentResolver resolver = MyApplication.getAppContext().getContentResolver();
cursorContacts = resolver.query(MYAPP_CONTENT_URI, null, RawContacts.DELETED + "=0", null, null);
cursorContacts.registerContentObserver(MYAPP_URI_OBSERVER);
}

public static void unregisterContentObserver() {
if (cursorContacts != null) {
cursorContacts.unregisterContentObserver(MYAPP_URI_OBSERVER);
cursorContacts.close();
}
}

问题是,即使在我注册观察者后光标为空(getCount 返回 0)时,我也会收到对 onChange 的调用,这与我在 native 地址簿中所做的一样。难道不应该只在游标中的一个条目被修改时调用观察者吗?文档指出:

Register an observer that is called when changes happen to the content backing this cursor

“支持此游标的内容”是什么?我认为这是光标中联系人的 lookupuri 列表,但看起来足以更改 ContactsContract.RawContacts.CONTENT_URI。

我还尝试为每个 Uri 注册一个观察者。它没有帮助。尽管 ContentResolver.registerContentObserver 的文档指出:

Register an observer class that gets callbacks when data identified by a given content URI changes.

Parameters
uri The URI to watch for changes. This can be a specific row URI, or a base URI for a whole class of content.
notifyForDescendents If true changes to URIs beginning with uri will also cause notifications to be sent. If false only changes to the exact URI specified by uri will cause notifications to be sent. If true, than any URI values at or below the specified URI will also trigger a match.

(我将 notifyForDescendents 设置为 false,但无论如何它都不应该调用观察者)。

怎么了?谢谢

最佳答案

何时报告更改由内容提供者决定。对于复杂的内容提供者(如联系人提供者),可能很难确定因操作而发生变化的所有特定 URI,因此它们只是在发生某些事情时报告全局变化。

关于android - 即使游标没有变化,也会调用 ContentObserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9174362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com