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

Sådan indsætter du store mængder data i sqlite-databasen i Android

Som du har foreslået, er antallet af rækker enormt. Jeg vil anbefale ikke at bruge AsyncTask , da det ikke er knyttet til din aktivitets livscyklus, dvs. hvis din aktivitet, der startede den dør, betyder det ikke AsyncTask dør også, så hvis du forsøger at starte en AsyncTask og på en eller anden måde hvis din aktivitet dør, f.eks. skærmrotation eller tryk på tilbagetasten, når du genstarter en anden AsyncTask vil blive affødt i stedet for at blive linket til allerede at udføre AsyncTask . derfor duplikere de samme operationer.

Så alt i alt vil jeg anbefale at følge fremgangsmåden

(A)

  1. Opret en IntentService , det er handleIntent() api køres allerede i en arbejdstråd, så du ikke behøver at bekymre dig om noget, og når alle beskeder i køen er færdige, dør den automatisk, så ingen bekymring overhovedet om at lække nogen ressourcer.

  2. skriv din logik for at indsætte rækker i bulk, brug content resolver bulkInsert() api til samme. Jeg vil anbefale at indsætte 100 rogn pr. batch, du kan implementere rollback og fejltjek for at sikre, at indsatsen går normalt.

  3. Når alt indsættelse er færdigt, kan du sende tilbage til din brugergrænseflade ved hjælp af Handler og Messengers.

med alt dette vil du opnå to store udfordringer

  1. For ikke at afbryde din brugergrænseflade, undgå enhver mulig ANR
  2. Selv hvis tilbage-tasten trykkes ned, sikres det, at db-driften fortsætter problemfrit, da den blev taget op i baggrundsopgaven.


  1. Hvad er en lagret procedure?

  2. Eksekverer sæt SQL-forespørgsler ved hjælp af batch-fil?

  3. Forespørgselsydeevneindsigt:Opdag, hvad der bruger ressourcer i din Azure SQL-database?

  4. Hvordan virker GROUP BY?