下午好。
我只是不明白如何在 android 中订阅数据库更新(SQLiteDatabase)?
目前有几个问题:
- 来自另一个进程的更改(如果它已更改,并且我们使用通常的观察者模式,那么在我们的进程中将不会发生更新。
- 从另一个类实例更改。问题与上一段相同。
我尝试使用 FileObserver (订阅数据库文件 MODIFY 事件),但它有问题:
- 事实上,它会通知数据库中的每一次更改。也就是说,要么你需要在它上面挂上某种去抖动,要么已经在订阅者中管理它。
- 单个更改(尤其是插入)可以触发多个 MODIFY 事件。
- 该事件发生在对象中的数据库同步之前。也就是说,如果我们通知,数据库实例中的数据可能不会更新(竞争条件)。
我尝试使用一堆FileObserver -> обновление бд объектов -> рассылка подписчикам
,但由于某种原因,数据库中的数据仍然不是最新的。
请不要建议使用 ContentProvider,因为据了解,更改不仅可以在 UI 中接收。
所以问题是:有没有办法跟踪数据库更新?