我已经习惯了following成语上的AsyncTask的doInBackground
方法快速插入到DB重工DB操作:安卓:与进度对话框
mDatabase.beginTransaction();
try {
//... do DB stuff
mDatabase.setTransactionSuccessful();
} finally {
mDatabase.endTransaction();
}
但是,如果我用这个成语,我的进度对话框(放置在onPreExecute
方法中)不显示。另一方面,如果我用常规的mDatabase.execSQL()语句替换上述代码,进度对话框会显示,但插入变得非常慢。有什么办法可以让我有两全其美(即进度对话和快速插入)。谢谢!
注意:beginTransaction在EXCLUSIVE模式下运行(我不明白tbh是什么意思)。这是原因吗?
您的进度对话框显示在PreExecute()中并隐藏在PostExecute()中吗? – 2012-03-08 19:21:25
是的。它工作正常,如果我使用SQLiteDatabase.execSQL插入,而不是上述成语。然而,这些是痛苦的缓慢,所以我几乎坚持使用上面的成语... – OckhamsRazor 2012-03-08 19:22:45
你有没有尝试保持AsyncTask之外的ProgressDialog的引用来显示/隐藏它自己?这就是我会尝试的。 – 2012-03-08 19:29:45