Android 数据库操作应该在主线程中发生吗?

Android 数据库操作应该在主线程中发生吗?,android,orm,ormlite,Android,Orm,Ormlite,Android文档中提到,当您调用getWritableDatabase()或getReadableDatabase()时,您应该始终在后台线程上执行此操作 我在我的应用程序中使用OrmLite,当我调用getHelper()时,我从UI/主线程调用它 我还为我的应用程序启用了StrictMode,我不记得在logcat中看到过警告 首选的使用方法是什么?我的Dao对象中的insert或update等SQL操作如何?它们是否应该发生在后台线程中?如果您在严格模式下运行并且没有异常,那么它是在后台

Android文档中提到,当您调用
getWritableDatabase()
getReadableDatabase()
时,您应该始终在后台线程上执行此操作

我在我的应用程序中使用OrmLite,当我调用
getHelper()
时,我从UI/主线程调用它

我还为我的应用程序启用了
StrictMode
,我不记得在logcat中看到过警告


首选的使用方法是什么?我的
Dao
对象中的
insert
update
等SQL操作如何?它们是否应该发生在后台线程中?

如果您在严格模式下运行并且没有异常,那么它是在后台线程中完成的。主线程应该只执行只需要内存中数据的即时操作。一旦它进入文件系统(读/写数据库)或网络,它就坏了。关于
getWritableDatabase()
,您不希望发生的事情是创建一个复杂的数据库(即在数据库帮助程序中执行大量工作的
onCreate
/
onUpgrade
),一旦创建了数据库,就可以了,这只是主线程上的一点文件IO。每当我使用
Dao
对象时,我在
StrictMode
log中从未看到任何东西。OrmLite是否将这些操作包装在后台线程中?@Gray那么这是否意味着我们应该在后台线程中执行DB操作?这取决于操作。我知道有很多应用程序在前台实现这一点。如果需要等待数据,这是必需的。如果您正在执行一些大型(多秒)操作,并且可以在后台执行,那么您应该这样做。