我有一个允许用户编辑ContractsContacts
数据库的应用程序。
当用户使用我的应用程序的功能编辑ContractsContacts
数据库时,我不希望我的ContentObserver
知道这些更改。
我希望我的ContentObserver
只知道其他应用程序生成的更改。例如,当用户使用移动应用程序编辑ContractsContacts
数据库时。
所以,我的问题是:有没有办法告诉ContentObserver
"嘿,不要听这个变化,因为我知道,不要叫你的onChange()
方法">:
我找到的唯一解决方案是:
- 在启动我的应用程序的"编辑功能"之前取消注册
ContentObserver
- 在我的函数完成所有工作后再次注册
ContentObserver
。
谢谢
这不是您的ContentProvider
,因此您无法阻止 Android 更新注册的观察者。你的观察者对Android来说没有什么特别之处。
因此,除了取消注册-修改-注册流程之外,您还可以告诉观察者忽略下一次更新(让它在boolean
或其他东西中跟踪它(,然后修改数据。当该boolean
设置时,观察者会跳过它通常所做的任何工作,只需将其翻转到false
以获取未来的更改。
这两者都受到争用条件的影响(你和另一个应用同时修改提供程序(。
理想情况下,恕我直言,您可以修改观察者触发的任何逻辑,以使用来自您自己的更新的触发器,以便平等对待数据的所有更改,无论是否来自您的应用程序。