2012-02-20 11 views
12

Ahora mismo para mi aplicación cuando quiero alterar datos para mi ContentProvider, solo uso los métodos ContentResolver de insertar, actualizar y eliminar. Pero en un par de proyectos de muestra en el SDK de Android, noté que usan applyBatch o BulkInsert. Así que quiero saber cuándo usar cualquiera de estos métodos y cuáles son las ventajas de usarlos sobre lo que estoy haciendo ahora.Android cuando usar ContentResolver applyBatch o BulkInsert

Respuesta

12

Los proveedores de contenido pueden tener observadores, como los cursores, que se notifican cada vez que ocurre una inserción, actualización o eliminación. Por lo general, esto resulta en algún trabajo que se realiza para actualizar la interfaz de usuario. Cuando tiene varias operaciones para aplicar al mismo tiempo, esto podría dar lugar a actualizaciones repetitivas por parte de los observadores. En general, si tiene varias inserciones, actualizaciones o eliminaciones para realizar, es más eficiente hacerlo a granel.

Dicho esto, el método predeterminado ContentProvider.applyBatch() simplemente itera sobre el lote y los aplica de forma individual de todos modos. El escritor de ContentProvider debe anular esto y aplicarlo de manera más eficiente para aprovechar las operaciones por lotes.

5

Solo para agregar más detalles sobre lo que dijo jsmith, es que BulkInsert no será transaccional mientras que applyBatch sí, por lo que si desea asegurarse de que se aplica un grupo de operaciones en una transacción, use applyBatch.

+0

Si está creando su propia clase 'ContentProvider', puede anular' bulkInsert' para que se utilicen las transacciones. –

Cuestiones relacionadas