Вот что я хочу делать. Я хочу загрузить данные из базы данных нашего сайта и сохранить их в sqlite. Мы делаем это, чтобы иметь автономную версию приложения. Это просто просмотр, поэтому нет методов обновления и удаления.Android json вставить в sqlite со слишком большим количеством данных
Я пытаюсь вставить json в Android Sqlite с небольшим количеством данных, и это успешно. Но здесь возникает проблема, когда я пытаюсь сделать это с более длинными данными. Мне нужно вставить около 19 000 строк в таблицу. Я использую ProgressDialog, который работает на UiThread, чтобы дать пользователю представление о прогрессе
Класс делает хорошо, но при вставке, что много данных занимает много времени и андроид выдает ошибку. Иногда возникает ошибка «Слишком долго, чтобы ответить:« Подождите или отмените ». Иногда, как это ...
Unfortunately, the App had stopped
Но App не прекращались на самом деле, потому что в журналах я вижу, что он все еще вставляя к столу. Android дает эту ошибку, я думаю, что она не признала, что я все еще вставляю, или я не знаю, какая проблема. Вставка в журналах прекращается, когда я нажимаю OK в диалоговом окне ошибки.
ui.setting.UserSettingsActivity: insertEquipmentProfile: 16494
ui.setting.UserSettingsActivity: insertEquipmentProfile: 16495
ui.setting.UserSettingsActivity: insertEquipmentProfile: 16496
Тогда после этого, он записывает это виды ошибок:
E/SQLiteLog: (5) database is locked
E/SQLiteDatabase: Failed to open database '/data/data/com.name.android.name/databases/name_android_offline.db'.
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode
что я должен делать? Я не уверен, что этот журнал имеет значение, но я добавлю это, как тайм-аут, но я не знаю.
W/ActivityManager: Activity pause timeout for ActivityRecord{f2e77e1 u0 ui.setting.UserSettingsActivity t762 f}
Я также попытался добавить Транзакции в мои вспомогательные методы базы данных, но это не помогло.
database.beginTransaction();
database.setTransactionSuccessful();
database.endTransaction();
Есть ли способ вставить слишком много строк в стол? Я не уверен, какие данные я вам дам, чтобы позволить мне объяснить мою проблему, но я ищу способы не разбивать приложение, вставляя слишком много данных, потому что мой код отлично работает при вставке 4000 строк.
Вы вставляете в основной поток? Является ли он синхронным/многопоточным? –