【发布时间】:2014-08-29 22:16:07
【问题描述】:
现在对于我的应用程序,当我想更改我的 ContentProvider 的数据时,我只使用 ContentResolver 的插入、更新和删除方法。但在 Android SDK 中的几个示例项目中,我注意到它们使用 applyBatch 或 BulkInsert。所以我想知道什么时候使用这两种方法,以及使用它们与我现在所做的相比有什么优势。
【问题讨论】:
标签: android android-contentprovider
现在对于我的应用程序,当我想更改我的 ContentProvider 的数据时,我只使用 ContentResolver 的插入、更新和删除方法。但在 Android SDK 中的几个示例项目中,我注意到它们使用 applyBatch 或 BulkInsert。所以我想知道什么时候使用这两种方法,以及使用它们与我现在所做的相比有什么优势。
【问题讨论】:
标签: android android-contentprovider
内容提供者可以有观察者,例如游标,每次插入、更新或删除发生时都会收到通知。通常这会导致需要做一些工作来更新 UI。当您同时应用多个操作时,这可能会导致观察者重复更新。一般来说,如果您要执行多个插入、更新或删除操作,批量执行这些操作效率更高。
话虽如此,默认的 ContentProvider.applyBatch() 方法只是简单地迭代批处理并无论如何单独应用它们。 ContentProvider 的编写者必须覆盖它并更有效地应用它以利用批处理操作。
【讨论】:
只是添加更多关于 jsmith 所说的细节,即 BulkInsert 不会是事务性的,而 applyBatch 是的,所以如果您想确保以事务方式应用一组操作,请使用 applyBatch。
【讨论】:
ContentProvider 类,您可以覆盖bulkInsert 以便使用事务。