2017-03-26 63 views
0

我的应用程序有一个相当大的数据库,尤其是一个表 - 它有200万个实体。在下一个应用程序版本中,我们正在做一个巨大的更新 - 删除其中一列,并用另一个替换它。对于最大的桌子,这需要13秒。Android数据库onUpgrade阻止UI线程

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

+1

您的代码中存在一个错误。请发布后台线程的设置和调用部分。 – laalto

回答

0

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

我会推荐你​​一个服务,并启动这个数据库升级,如果它将是一个巨大的,也提供一个加载屏幕,如果你不想立即看到用户界面。

希望这会有所帮助。

0

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