Документация Loader
имеет недостатки.
100% реализаций Loader
, встроенных в сам Android, "отслеживают источник своих данных и предоставляют новые результаты при изменении содержимого".Поскольку на данный момент в самой Android имеется только одна Loader
реализация, их документация является точной, насколько это возможно.
Однако, цитируя мое обновление книги, которое должно быть выпущено через час или два:
В платформе нет ничего, что требовало бы такого поведения.Более того, в некоторых случаях это явно плохая идея - представьте, что загрузчик загружает данные из Интернета, и ему нужно постоянно опрашивать какой-либо сервер, чтобы найти изменения.
Я планирую надобавив SQLiteCursorLoader
, чтобы хотя бы чуть-чуть лучше знать об изменениях в базе данных, если вы маршрутизируете через нее все модификации базы данных.Это также будет иметь ограничения, потому что вы не разделяете Loader
объекты между действиями (не говоря уже о том, чтобы иметь доступ к ним из сервисов).
Единственная причина, по которой CursorLoader
работает так, как это, - это использованиеContentProvider
- одиночный код, который может быть осведомлен обо всех операциях.
В настоящий момент любая часть вашего кода, отвечающая за вставки, обновления и удаления, должна будет либо нажать на SQLiteCursorLoader
наплечо и попросите его обновить или уведомить активность об изменении (например, трансляцию с Service
), чтобы действие могло коснуться SQLiteCursorLoader
на плече.