gpt4 book ai didi

Android json插入到sqlite中的数据过多

转载 作者:行者123 更新时间:2023-11-29 11:38:43 25 4
gpt4 key购买 nike

这就是我想做的。我想从我们网站的数据库下载数据并将其存储到 sqlite。我们这样做是为了拥有该应用程序的离线版本。这只是一个 View ,因此没有更新和删除方法。

我尝试将 json 插入到 Android Sqlite 中,数据很少,并且成功。但是当我尝试使用更长的数据来执行此操作时,出现了一个问题。我需要向表中插入大约 19,000 行。我使用在 UiThread 上运行的 ProgressDialog 来让用户了解进度

Progress dialog sample

该类表现良好,但插入大量数据时需要花费大量时间,并且 android 会出错。有时会出现错误“响应时间太长:WAITING或取消”。有时,像这样...

Unfortunately, the App had stopped

但应用程序实际上并没有停止,因为在日志中我可以看到它仍在插入到表中。 Android 给出了这个错误,我认为它没有识别出我仍在插入,或者我不知道问题是什么。当我在错误对话框中单击“确定”时,日志中的插入停止。

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 行时工作正常。

最佳答案

我假设您在主线程上运行所有数据库操作,这会导致“应用程序未响应”(ANR) 对话框。所以你要做的就是在后台线程上运行这些操作。看看 AsyncTask、Handlers、(Intent)Service、RxJava(带有调度程序)或您自己的线程/调度解决方案之类的东西。

关于Android json插入到sqlite中的数据过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com