Android数据库onUpgrade阻止UI线程

时间:2017-03-26 14:10:47

标签: android database sqlite

我的应用程序有一个非常大的数据库,尤其是其中一个表 - 它有200万个实体。在下一个应用程序版本中,我们正在进行大量更新 - 删除其中一列并将其替换为另一列。对于最大的桌子,这需要约13秒。

问题是即使我已将此更新放在后台线程中(仍然在SQLLiteDatabase的onUpgrade方法中),它仍然会阻止UI线程并导致android os弹出窗口出现 - 提示要么杀死应用或等待。 onUpgrade方法是否实际阻止了UI线程,或者我做错了什么?

2 个答案:

答案 0 :(得分:0)

使用StrictMode API检测UI线程阻塞的确切原因。

我建议您使用服务并启动此数据库升级(如果它将是巨大的),如果您不想立即查看UI,还会提供加载屏幕。

希望这有帮助。

答案 1 :(得分:0)

实际上有另一个数据库进程阻止了UI线程。我设法使用StrictMode API识别问题。谢谢@albeee