2012-02-20 10 views
12

In questo momento per la mia applicazione quando desidero modificare i dati per il mio ContentProvider, utilizzo solo i metodi ContentResolver di inserimento, aggiornamento ed eliminazione. Ma su un paio di progetti di esempio nell'SDK di Android, noto che usano applyBatch o BulkInsert. Quindi voglio sapere quando usare uno di questi metodi e quali sono i vantaggi di usarli su quello che sto facendo ora.Android quando utilizzare ContentResolver applyBatch o BulkInsert

risposta

12

I fornitori di contenuti possono disporre di osservatori, come i cursori, che vengono notificati ogni volta che si inserisce, aggiorna o elimina un inserto. Di solito questo porta a dei lavori per aggiornare l'interfaccia utente. Quando si hanno più operazioni da applicare contemporaneamente, ciò potrebbe comportare aggiornamenti ripetitivi da parte degli osservatori. In generale, se hai più inserimenti, aggiornamenti o eliminazioni da eseguire, è più efficiente eseguirli in blocco.

Detto questo, il metodo ContentProvider.applyBatch() predefinito esegue semplicemente un'iterazione sul batch e li applica comunque singolarmente. Lo scrittore di ContentProvider deve ignorare questo e applicarlo in modo più efficiente per sfruttare le operazioni batch.

5

Solo per aggiungere ulteriori dettagli su ciò che jsmith ha detto, è che BulkInsert non sarà transazionale mentre applyBatch sì, quindi se si vuole assicurarsi che un gruppo di operazioni siano applicate in un modo di transazione, utilizzare applyBatch.

+0

Se si sta creando la propria classe 'ContentProvider', è possibile sovrascrivere' bulkInsert' in modo da utilizzare le transazioni. –

Problemi correlati