我已经习惯了following用于快速插入数据库的 AsyncTask 的 doInBackground
方法的惯用语:
mDatabase.beginTransaction();
try {
//... do DB stuff
mDatabase.setTransactionSuccessful();
} finally {
mDatabase.endTransaction();
}
但是,如果我使用这个习惯用法,我的进度对话框(放置在 onPreExecute
方法中)不会显示。另一方面,如果我用常规的 mDatabase.execSQL() 语句替换上面的代码,进度对话框会显示,但插入会变得非常慢。有什么办法可以让我两全其美(即进度对话框和快速插入)。谢谢!
注意:beginTransaction 在 EXCLUSIVE 模式下运行(我不明白这意味着什么)。是这个原因吗?
最佳答案
在启动 AsyncTask
之前显示您的对话框(例如,通过 showDialog()
)。
关于java - Android:带有进度对话框的繁重数据库操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623470/