SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como inserir grande quantidade de dados no banco de dados sqlite no Android


Como você sugeriu, o número de linhas é enorme, recomendo não usar AsyncTask , pois não está vinculado ao seu ciclo de vida da atividade, ou seja, se a atividade que a iniciou morrer, isso não significa AsyncTask morre também, então se você tentar iniciar um AsyncTask e de alguma forma se sua atividade morrer, por exemplo, rotação de tela ou tecla de volta pressionada, ao reiniciar outro AsyncTask será gerado em vez de ser vinculado ao AsyncTask já em execução . portanto, duplicando as mesmas operações.

Então, apesar de tudo, eu recomendaria seguir a abordagem

(UMA)

  1. Crie um IntentService , é handleIntent() api já é executado em um thread de trabalho para que você não precise se preocupar com nada, e quando todas as mensagens em sua fila são concluídas, ele morre automaticamente, portanto, não se preocupe com o vazamento de recursos.

  2. escreva sua lógica para inserir linhas em massa, use o resolvedor de conteúdo bulkInsert() api para o mesmo. Eu recomendarei a inserção de 100 roes por lote, você pode implementar verificações de rollback e erro para garantir que a inserção ocorra normalmente.

  3. Depois que todas as inserções estiverem concluídas, você poderá postar de volta na interface do usuário usando o Handler e os Messengers.

com tudo isso você alcançará dois grandes desafios
  1. Para não desligar sua interface do usuário, escapando de qualquer ANR possível
  2. Mesmo se a tecla Voltar for pressionada, garantimos que a operação do banco de dados continue sem problemas, pois foi realizada na tarefa em segundo plano.