SQLite вставляет тайм-аут в Android?

Во время onCreate() я пытаюсь вставить около 20 строк в базу данных SQLite (это просто тестовые значения. Для окончательной версии мне нужно будет вставить около 1000).

Использование отладчика показывает, что при запуске onCreate() это вызывает «тайм-аут приостановки активности для HistoryRecord», и из журнала кажется, что не все строки вставлены.

Является ли использование асинхронной задачи единственным способом заставить это работать без тайм-аута?

Спасибо


person Sandy    schedule 11.05.2011    source источник


Ответы (3)


Да, асинхронная задача или отдельный поток - правильный путь, кроме того, вы можете сообщить БД, что вы запускаете транзакцию, что значительно ускоряет процесс для больших вставок,

dh.getDb().beginTransaction();

//вставляем операторы

dh.getDb().setTransactionSuccessful();
dh.getDb().endTransaction();

person Hades    schedule 11.05.2011

Если он выдает это предупреждение с 20 записями, представьте себе задержку с тысячей. Вы действительно хотите так долго блокировать выполнение?

Обновление базы данных как асинхронная задача или в отдельном потоке — правильный путь.

person Aleadam    schedule 11.05.2011

Использование асинхронной задачи — не единственный, но лучший способ. AsyncTask также довольно прост. Вы ОПРЕДЕЛЕННО не хотите делать это в основном потоке.

person Shawn Lauzon    schedule 11.05.2011