防止 ContentObserver 对 URI 进行 "specific" 更改

Prevent ContentObserver from getting a "specific" change on URI

我有一个允许用户编辑 ContractsContacts 数据库的应用程序。

当用户使用我的应用程序的功能编辑 ContractsContacts 数据库时,我不希望我的 ContentObserver 知道这些更改。

我希望我的 ContentObserver 只知道其他应用程序生成的更改。例如,当用户使用移动应用程序编辑 ContractsContacts 数据库时。

所以,我的问题是:有没有办法告诉 ContentObserver "hey, don't listen to this change, because I'm aware of it, dont call your onChange() method":

我找到的唯一解决方案是:

  1. 注销 ContentObserver 在启动我的应用 "edit function" 之前
  2. 在我的函数完成所有工作后 ContentObserver 再次注册

谢谢

这不是您的 ContentProvider,因此您无法阻止 Android 更新已注册的观察员。你的观察者对 Android.

没什么特别的

因此,除了您的注销-修改-注册流程之外,您还可以告诉您的观察者忽略下一次更新(让它在 boolean 或其他内容中跟踪),然后修改数据。当设置 boolean 时,观察者将跳过它通常做的任何工作,只需将其翻转到 false 以获取未来的更改。

这两者都存在竞争条件(您和另一个应用同时修改提供程序)。

恕我直言,理想情况下,您可以修改观察者触发的任何逻辑,以适应来自您自己的更新的触发器,以便平等对待所有数据更改,无论是否来自您的应用程序。