Подтвердить что ты не робот

Android, когда использовать ContentResolver applyBatch или BulkInsert

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

4b9b3361

Ответ 1

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

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

Ответ 2

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