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
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.
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.
Se si sta creando la propria classe 'ContentProvider', è possibile sovrascrivere' bulkInsert' in modo da utilizzare le transazioni. –