我的应用程序有一个非常大的数据库,尤其是其中一个表 - 它有200万个实体。在下一个应用程序版本中,我们正在进行大量更新 - 删除其中一列并将其替换为另一列。对于最大的桌子,这需要约13秒。
问题是即使我已将此更新放在后台线程中(仍然在SQLLiteDatabase的onUpgrade方法中),它仍然会阻止UI线程并导致android os弹出窗口出现 - 提示要么杀死应用或等待。 onUpgrade方法是否实际阻止了UI线程,或者我做错了什么?
答案 0 :(得分:0)
使用StrictMode API检测UI线程阻塞的确切原因。
我建议您使用服务并启动此数据库升级(如果它将是巨大的),如果您不想立即查看UI,还会提供加载屏幕。
希望这有帮助。
答案 1 :(得分:0)
实际上有另一个数据库进程阻止了UI线程。我设法使用StrictMode API识别问题。谢谢@albeee