防止 ContentObserver 在 URI 上获取"specific"更改



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

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

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

所以,我的问题是:有没有办法告诉ContentObserver"嘿,不要听这个变化,因为我知道,不要叫你的onChange()方法">

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

  1. 在启动我的应用程序的"编辑功能"之前取消注册ContentObserver
  2. 在我的函数完成所有工作后再次注册ContentObserver

谢谢

这不是您的ContentProvider,因此您无法阻止 Android 更新注册的观察者。你的观察者对Android来说没有什么特别之处。

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

这两者都受到争用条件的影响(你和另一个应用同时修改提供程序(。

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

最新更新