SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak wstawić dużą ilość danych do bazy danych sqlite w systemie Android

Jak sugerowałeś, liczba wierszy jest ogromna, nie polecam używać AsyncTask , ponieważ nie jest powiązany z cyklem życia aktywności, tj. jeśli aktywność, która ją rozpoczęła, umiera, nie oznacza to AsyncTask również umiera, więc jeśli spróbujesz zainicjować AsyncTask i jakoś, jeśli Twoja aktywność umrze, np. obrót ekranu lub wciśnięty klawisz wstecz, po ponownym uruchomieniu innego AsyncTask zostanie spawnowany, a nie połączony z już wykonywanym AsyncTask . stąd powielanie tych samych operacji.

Podsumowując, polecam następujące podejście

(A)

  1. Utwórz IntentService , to jest handleIntent() API jest już wykonywane w wątku roboczym, więc nie musisz się o nic martwić, a po zakończeniu wszystkich wiadomości w kolejce automatycznie umiera, więc nie martw się o wyciek jakichkolwiek zasobów.

  2. napisz swoją logikę do zbiorczego wstawiania wierszy, użyj narzędzia do rozpoznawania treści bulkInsert() dla tego samego. Polecam wstawianie 100 ikry na partię, możesz zaimplementować wycofywanie i sprawdzanie błędów, aby upewnić się, że wstawianie przebiega normalnie.

  3. Po zakończeniu wszystkich wstawek możesz wysłać z powrotem do swojego interfejsu użytkownika za pomocą programu Handler i Messengers.

z tym wszystkim osiągniesz dwa główne wyzwania

  1. Nie rozłączać interfejsu użytkownika, unikając wszelkich możliwych błędów ANR
  2. Nawet jeśli zostanie naciśnięty klawisz Wstecz, zapewnione jest, że operacja db przebiega płynnie, ponieważ została podjęta w zadaniu w tle.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć wiersze zawierające znaki alfanumeryczne w SQLite

  2. Rejestruj czas zapytań w SQLite na Androidzie

  3. SQLiteException przy użyciu WHERE +KEY_Date+='+data+'

  4. jak uzyskać obraz z rysowalnego zgodnie z ich nazwami w bazie danych sqlite, a następnie wyświetlić go w widoku listy?

  5. Jak zainstalować najnowszą wersję Sqlite aar podczas korzystania z Room na Androidzie?