【问题标题】:ContentObserver for SQLite database Android用于 SQLite 数据库 Android 的 ContentObserver
【发布时间】:2014-01-11 19:57:35
【问题描述】:

我有一个带有 SQLite 数据库的 android 应用程序,我想知道如何创建和注册一个ContentObserver,它将在数据库更改时收到通知。我知道我可以使用ContentProvider 来做到这一点,但我只是将数据库用于我的应用程序,所以没有必要将它变成ContentProvider,我想知道是否有办法避免这种情况。

谢谢!

【问题讨论】:

  • 在 Java(1.7 之前)中没有像 WatchService 那样用于监视目录的功能吗?
  • 只需创建一个内容提供者,很简单

标签: android sqlite observer-pattern contentobserver


【解决方案1】:

ContentObserver 仅适用于 ContentProvider

听起来您想要的是一个事件总线,您的更改数据库的代码可以发布一个事件,而您对此类更改感兴趣的代码可以监听该事件。基本上,您使用事件总线作为观察者模式的通信层。这里的“三大”选项是:

【讨论】:

  • afaik ContentObserver 是一般用途的野兽
  • @pskink:不是这样。您可以将ContentObserver 硬塞到与ContentProvider 一起工作之外的角色中,而忽略Uri 等,但使用ContentObserver 以外的其他东西并不会为您带来任何好处。 Android 唯一使用ContentObserver 的地方是ContentProvider
  • 我想说 ContentResolver 是 android 使用 ContentObservers 的主要地方,所以使用 CR API OP 可以实现他们想要的
  • @pskink:欢迎您提供一个工作示例,其中ContentResolver 在没有ContentProvider 的情况下访问SQLiteDatabase
猜你喜欢
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多