sql >> Databáze >  >> RDS >> SQLite

Jak vložit velké množství dat do databáze sqlite v systému Android

Jak jste navrhli, počet řádků je obrovský. Doporučuji nepoužívat AsyncTask , protože to není vázáno na životní cyklus vaší aktivity, tj. pokud vaše aktivita, která ji zahájila, zemře, neznamená to AsyncTask zemře také, takže pokud se pokusíte spustit AsyncTask a nějak, pokud vaše aktivita zmizí, např. otočení obrazovky nebo stisknutí klávesy Zpět, po restartu jiného AsyncTask se vytvoří spíše než se spojí s již spouštěným AsyncTask . tedy duplikování stejných operací.

Celkově bych tedy doporučil následující postup

(A)

  1. Vytvořte IntentService , je to handleIntent() api se již spouští v pracovním vláknu, takže se nemusíte o nic starat, a jakmile jsou všechny zprávy ve frontě dokončeny, automaticky zemře, takže se nemusíte vůbec obávat úniku jakýchkoli prostředků.

  2. napište svou logiku pro hromadné vkládání řádků, použijte k tomu rozhraní content resolver bulkInsert() api. Doporučuji vložit 100 jiker na dávku, můžete implementovat rollback a kontroly chyb, abyste se ujistili, že vkládání probíhá normálně.

  3. Po dokončení všech vkládání můžete odesílat příspěvky zpět do svého uživatelského rozhraní pomocí programu Handler a Messenger.

s tím vším dosáhnete dvou hlavních úkolů

  1. Nezavěšovat uživatelské rozhraní a uniknout tak případným chybám ANR
  2. I když je stisknuto tlačítko Zpět, je zajištěno, že operace db bude probíhat hladce, protože byla spuštěna v úloze na pozadí.


  1. Jak zvýšit připojení MySQL (max_connections)?

  2. Více aktualizací v MySQL

  3. Optimalizace výkonu dotazů v MySQL

  4. Výběr náhodných řádků v MySQL