防止 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":
我找到的唯一解决方案是:
- 注销
ContentObserver
在启动我的应用 "edit function" 之前
- 在我的函数完成所有工作后
ContentObserver
再次注册。
谢谢
这不是您的 ContentProvider
,因此您无法阻止 Android 更新已注册的观察员。你的观察者对 Android.
没什么特别的
因此,除了您的注销-修改-注册流程之外,您还可以告诉您的观察者忽略下一次更新(让它在 boolean
或其他内容中跟踪),然后修改数据。当设置 boolean
时,观察者将跳过它通常做的任何工作,只需将其翻转到 false
以获取未来的更改。
这两者都存在竞争条件(您和另一个应用同时修改提供程序)。
恕我直言,理想情况下,您可以修改观察者触发的任何逻辑,以适应来自您自己的更新的触发器,以便平等对待所有数据更改,无论是否来自您的应用程序。
我有一个允许用户编辑 ContractsContacts
数据库的应用程序。
当用户使用我的应用程序的功能编辑 ContractsContacts
数据库时,我不希望我的 ContentObserver
知道这些更改。
我希望我的 ContentObserver
只知道其他应用程序生成的更改。例如,当用户使用移动应用程序编辑 ContractsContacts
数据库时。
所以,我的问题是:有没有办法告诉 ContentObserver
"hey, don't listen to this change, because I'm aware of it, dont call your onChange()
method":
我找到的唯一解决方案是:
- 注销
ContentObserver
在启动我的应用 "edit function" 之前 - 在我的函数完成所有工作后
ContentObserver
再次注册。
谢谢
这不是您的 ContentProvider
,因此您无法阻止 Android 更新已注册的观察员。你的观察者对 Android.
因此,除了您的注销-修改-注册流程之外,您还可以告诉您的观察者忽略下一次更新(让它在 boolean
或其他内容中跟踪),然后修改数据。当设置 boolean
时,观察者将跳过它通常做的任何工作,只需将其翻转到 false
以获取未来的更改。
这两者都存在竞争条件(您和另一个应用同时修改提供程序)。
恕我直言,理想情况下,您可以修改观察者触发的任何逻辑,以适应来自您自己的更新的触发器,以便平等对待所有数据更改,无论是否来自您的应用程序。