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