В моем приложении я получаю ответ от сервера и вставляю значения, полученные из ответа сервера в базе данных. Следующий мой код:Массовая вставка в интерфейс блокировки базы данных?
String sql = "INSERT INTO "+ tableName +" VALUES (?,?,?,?);";
DatabaseHandler dbHandler = new DatabaseHandler(context);
final SQLiteDatabase db = dbHandler.getWritableDatabase();
final SQLiteStatement statement = db.compileStatement(sql);
db.beginTransaction();
try {
statement.clearBindings();
statement.bindString(2, id);
statement.bindString(3, type);
statement.bindString(4, value);
statement.executeInsert();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
db.close();
Это быстрый поиск в моей базе данных, но мой экран пользовательского интерфейса замерзает. Я попробовал называть мой код вставки в AsyncTask, но тогда вставка занимает очень много времени. Не могли бы вы сообщить мне, как я могу предотвратить блокирование моего пользовательского интерфейса, а также предотвратить вставку из очень долгого времени?
спасибо.
«Я пробовал называть мой код вставки в AsyncTask, но тогда вставка занимает очень много времени». Это займет не больше времени, чем требуется блокировка вашего пользовательского интерфейса. – Kiril
есть только 1 вставка сделано здесь. Я сомневаюсь, что это очень долго. – njzk2
Если вы делаете одну транзакцию для каждой вставки, конечно, она будет очень медленной. Переместите 'db.beginTransaction();' и другие вещи из внутреннего цикла и вокруг цикла, который вставляет данные. –