【问题标题】:Prevent ContentObserver from getting a "specific" change on URI防止 ContentObserver 对 URI 进行“特定”更改
【发布时间】:2017-07-31 14:42:52
【问题描述】:

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

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

我希望我的ContentObserver 仅了解其他应用程序产生的更改。例如,当用户使用移动应用编辑ContractsContacts DB 时。

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

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

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

谢谢

【问题讨论】:

    标签: android android-contentprovider android-contentresolver contentobserver


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多