Как вы предложили, количество строк огромны я рекомендую не использовать AsyncTask
, как его не привязан к вашей деятельности жизненного цикла, т.е. если вы деятельность, которая началась она умирает, это не значит, AsyncTask
умирает так что если вы попробуете инициировать AsyncTask и как-то, если ваша деятельность умрет, например, вращение экрана или нажатие клавиши «Назад», при перезапуске другой AsyncTask
будет порожден, а затем он будет связан с уже выполненным AsyncTask
. следовательно, дублируя те же операции.
Таким образом, в целом я бы рекомендовал следующий подход
(A)
Создать IntentService
, это handleIntent()
апи уже выполняется в рабочем потоке, поэтому вам не придется беспокоиться о любая вещь, и как только все отправленные в очередь очереди закончены, она автоматически умирает, поэтому не беспокойтесь о утечке каких-либо ресурсов.
напишите свою логику для вставки строк навалом, используйте контент resolver bulkInsert() api для этого. Я рекомендую вставлять в 100 коней за партию, вы можете реализовать проверки отката и ошибок, чтобы убедиться, что вставка идет нормально.
Как только вся вставка заканчивается, вы можете отправить ее обратно в свой пользовательский интерфейс с помощью Handler and Messengers.
со всем этим вы добьетесь два основных задач
- Не повесить свой пользовательский интерфейс, избегая любого возможного ANR
- Даже если назад нажата клавиша, заверил, что работа дб идет гладко поскольку это было рассмотрено в фоновом задании.
Использование AsyncTask <> Вставьте 20,100 строк вставки в базу данных. Использование этой асинхронной работы отверстия работает в фоновом режиме. Для получения дополнительной информации перейдите по этой ссылке http://developer.android.com/reference/android/os/AsyncTask.html –
Его занимает слишком много времени. Я тоже попробовал. @JigarShekh – abc
Вы должны определить, что означает «долгое время». Если вы закодированы правильно, это не займет больше нескольких секунд. 'ContentResolver.bulkInsert' должен сделать это еще быстрее. Тем не менее, я предлагаю вам пересмотреть дизайн вашего приложения: действительно ли вам нужно вставить столько данных во время выполнения? Вы можете подумать о создании и заполнении своей базы данных при разработке приложения и включении его в свое приложение. –