Android, когда использовать ContentResolver applyBatch или BulkInsert - PullRequest
12 голосов
/ 20 февраля 2012

Прямо сейчас для моего приложения, когда я хочу изменить данные для моего ContentProvider, я просто использую методы ContentResolver для вставки, обновления и удаления. Но в нескольких примерах проектов в Android SDK я заметил, что они используют applyBatch или BulkInsert. Поэтому я хочу знать, когда использовать любой из этих методов и каковы преимущества их использования по сравнению с тем, что я делаю сейчас.

Ответы [ 2 ]

12 голосов
/ 02 марта 2012

Поставщики контента могут иметь наблюдателей, таких как курсоры, которые уведомляются каждый раз, когда происходит вставка, обновление или удаление. Обычно это приводит к некоторой работе по обновлению пользовательского интерфейса. Если у вас есть несколько операций для одновременного применения, это может привести к повторяющимся обновлениям наблюдателей. В общем, если у вас есть несколько операций вставки, обновления или удаления, более эффективно выполнять их массово.

При этом метод ContentProvider.applyBatch () по умолчанию просто перебирает пакет и в любом случае применяет их по отдельности. Автор ContentProvider должен переопределить это и применить его более эффективно, чтобы воспользоваться пакетными операциями.

5 голосов
/ 29 августа 2014

Чтобы добавить больше подробностей о том, что сказал jsmith, BulkInsert не будет транзакционным, а applyBatch - да, поэтому, если вы хотите убедиться, что группа операций применяется транзакционным способом, используйте applyBatch.

...