您不应该从应用程序主线程调用getWriteableDatabase()

时间:2015-08-05 13:38:18

标签: android android-sqlite

当我在developer.android.com上研究方法getWriteableDatabase()时,他们说了以下内容:

“您不应该从应用程序主线程中调用此方法”

他们似乎没有说明为什么不应该从应用程序主线程调用getWriteableDatabase()。有人可以向我解释原因吗?

2 个答案:

答案 0 :(得分:3)

长操作应该在主线程(也就是UI线程)上调用 NEVER ,因为它会锁定应用程序的响应能力。

主线程负责处理用户输入和所有屏幕绘图。因此,如果一项操作花费的时间过长,您的应用程序将被冻结,直至完成,对于用户来说,您的应用程序似乎已崩溃。

来自Udacity的

This video解释得非常好。

enter image description here

您可以在Android here上详细了解Thread

答案 1 :(得分:1)

getWriteableDatabase()将始终执行一些磁盘I / O,甚至可能在主应用程序线程上尽可能避免一些磁盘I / O.

但是,如果getWriteableDatabase()触发了对您onCreate()的{​​{1}}或onUpgrade()的调用,则可以执行批次的磁盘I / O ,你真的需要在后台线程上做这项工作。请记住,当您占用主应用程序线程时,您的UI会被冻结。

相关问题