Android何时使用ContentResolver applyBatch或BulkInsert

时间:2012-02-20 15:17:18

标签: android android-contentprovider

现在,当我想为我的ContentProvider更改数据时,我只使用插入,更新和删除的ContentResolver方法。但是在Android SDK的几个示例项目中,我注意到它们使用了applyBatch或BulkInsert。所以我想知道何时使用这些方法中的任何一种,以及使用它们比我现在所做的更有优势。

2 个答案:

答案 0 :(得分:12)

内容提供商可以拥有观察者,例如游标,每次插入,更新或删除时都会收到通知。通常,这会导致一些工作要更新UI。当您同时应用多个操作时,这可能会导致观察者重复更新。通常,如果您要执行多次插入,更新或删除操作,那么批量执行它们会更有效。

话虽这么说,默认的ContentProvider.applyBatch()方法只是遍历批处理并无论如何单独应用它们。 ContentProvider的编写者必须覆盖它并更有效地应用它以利用批处理操作。

答案 1 :(得分:5)

只是为了添加有关jsmith所说的更多细节,那就是在applyBatch是的时候BulkInsert不会是事务性的,所以如果你想确保以事务方式应用一组操作,请使用applyBatch。