sql >> Database >  >> RDS >> SQLite

Hoe een grote hoeveelheid gegevens in de sqlite-database in Android in te voegen

Zoals je hebt gesuggereerd, is het aantal rijen enorm. Ik raad aan om AsyncTask niet te gebruiken , omdat het niet gebonden is aan uw activiteitslevenscyclus, d.w.z. als uw activiteit waarmee deze begon, sterft, betekent dit niet AsyncTask sterft ook, dus als je probeert een AsyncTask te starten en op de een of andere manier als je activiteit sterft, bijvoorbeeld schermrotatie of terug-toets ingedrukt, bij het opnieuw opstarten van een andere AsyncTask zal worden voortgebracht in plaats van dat het wordt gekoppeld aan het al uitvoeren van AsyncTask . vandaar het dupliceren van dezelfde bewerkingen.

Dus al met al zou ik de volgende aanpak aanraden

(A)

  1. Maak een IntentService , het is handleIntent() api wordt al uitgevoerd in een werkthread, dus u hoeft zich nergens zorgen over te maken, en zodra alle berichten in de wachtrij zijn voltooid, sterft het automatisch, dus u hoeft zich geen zorgen te maken over het lekken van bronnen.

  2. schrijf uw logica voor het in bulk invoegen van rijen, gebruik hiervoor de content resolver bulkInsert() api. Ik raad aan om 100 kuiten per batch in te voegen. U kunt terugdraai- en foutcontroles uitvoeren om ervoor te zorgen dat het invoegen normaal verloopt.

  3. Zodra alle invoegingen zijn voltooid, kun je terug naar je gebruikersinterface posten met behulp van Handler en Messengers.

met dit alles bereik je twee grote uitdagingen

  1. U mag uw gebruikersinterface niet ophangen en zo aan een mogelijke ANR ontsnappen
  2. Zelfs als de back-toets wordt ingedrukt, zorgt u ervoor dat de db-bewerking soepel verloopt zoals deze werd uitgevoerd in de achtergrondtaak.


  1. Gebruik PARSENAME() om een ​​deel van een objectnaam terug te geven in SQL Server

  2. Hoe verander ik de standaardtaal voor SQL Server?

  3. Entity Developer en ADO.Net Data Providers ondersteunen nu Entity Framework Core 5

  4. Rijen retourneren die niet-alfanumerieke tekens bevatten in SQL Server