我已經習慣了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