SQLite
 sql >> Database >  >> RDS >> SQLite

Come inserire grandi quantità di dati nel database sqlite in Android

Come hai suggerito, il numero di righe è enorme, ti consiglio di non usare AsyncTask , poiché non è legato al ciclo di vita della tua attività, ad esempio se l'attività che l'ha iniziata muore, non significa AsyncTask muore anche lui, quindi se provi ad avviare un AsyncTask e in qualche modo se la tua attività si interrompe, ad esempio la rotazione dello schermo o il tasto Indietro premuto, al riavvio di un altro AsyncTask verrà generato piuttosto che essere collegato a AsyncTask già in esecuzione . duplicando quindi le stesse operazioni.

Quindi, tutto sommato, consiglierei di seguire l'approccio

(A)

  1. Crea un IntentService , è handleIntent() api viene già eseguito in un thread di lavoro, quindi non devi preoccuparti di nulla e, una volta che tutti i messaggi nella sua coda sono terminati, muore automaticamente, quindi non preoccuparti di perdere risorse.

  2. scrivi la tua logica per inserire righe in blocco, usa il risolutore di contenuti bulkInsert() API per lo stesso. Consiglierò di inserire 100 uova per batch, puoi implementare controlli di rollback e errori per assicurarti che l'inserimento avvenga normalmente.

  3. Una volta terminato tutto l'inserimento, puoi inviare di nuovo alla tua interfaccia utente utilizzando Handler e Messengers.

con tutto questo realizzerai due grandi sfide

  1. Non riagganciare l'interfaccia utente, eludendo ogni possibile ANR
  2. Anche se viene premuto il tasto Indietro, assicurati che l'operazione db proceda senza intoppi come era stata eseguita nell'attività in background.