sql >> Base de Datos >  >> RDS >> SQLite

Cómo insertar una gran cantidad de datos en la base de datos sqlite en Android

Como ha sugerido, la cantidad de filas es enorme. Recomendaré no usar AsyncTask , ya que no está vinculado al ciclo de vida de su actividad, es decir, si la actividad que la inició muere, no significa AsyncTask muere también, por lo que si intenta iniciar una AsyncTask y de alguna manera si su actividad muere, por ejemplo, la rotación de la pantalla o la tecla Atrás presionada, al reiniciar otra AsyncTask se generará en lugar de que se vincule a la ejecución de AsyncTask . por lo tanto duplicando las mismas operaciones.

Entonces, en general, recomendaría seguir el enfoque

(A)

  1. Crear un IntentService , es handleIntent() api ya se ejecuta en un subproceso de trabajo, por lo que no tiene que preocuparse por nada, y una vez que todos los mensajes en su cola finalizan, muere automáticamente, por lo que no se preocupe en absoluto por la fuga de recursos.

  2. escriba su lógica para insertar filas a granel, use la API de resolución de contenido bulkInsert () para lo mismo. Recomendaré insertar 100 huevas por lote, puede implementar reversiones y verificaciones de errores para asegurarse de que la inserción se realice normalmente.

  3. Una vez que finalice toda la inserción, puede volver a publicar en su interfaz de usuario utilizando Handler y Messengers.

con todo esto lograrás dos grandes retos

  1. Para no colgar tu UI, escapando de cualquier posible ANR
  2. Incluso si se presiona la tecla Atrás, se aseguró de que la operación de db se realice sin problemas, ya que se realizó en la tarea en segundo plano.