我有一個SQLite數據庫,它在我的應用程序中收到了一些重要的用處。它是從訪問:Jellybean中的Android SQLite數據庫事務/鎖定更改
- 各種活動,經由ASyncTasks將數據加載到所述UI(SELECT語句只)
- 幾個後臺進程(僅其中之一可以一次運行),其做很多插入/更新
我調用getWritableDatabase()一次,並在任何地方使用它。每個後臺進程都使用IMMEDIATE(即非鎖定)事務,這些事務將其中一些事務從幾分鐘加速到幾秒鐘。
這一切都工作完美前jellybean;後臺進程具有事務的速度優勢,但這並未阻止Activites通過ASyncTasks加載數據。
Post-Jellybean,當事務正在進行時,GUI的每個ASyncTask加載數據都被阻塞,因此通常不會返回幾秒鐘。這導致導航緩慢和令人沮喪。我已經隔離了對rawQuery數據庫調用的阻塞。
我無法找到指定確切的任何文檔什麼傑利貝恩改變,不是被棄用的幾種方法等 - http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#isDbLockedByOtherThreads() - 與像評論「不再有數據庫鎖的概念,所以此方法始終返回false 「。
有沒有簡單的方法來模仿前軟糖豆的行爲?
謝謝,但我已經在使用ICS及更高版本的AsyncTask.THREAD_POOL_EXECUTOR。在這種情況下,記錄將rawQuery調用隔離爲阻塞程序。 – pennas 2013-04-27 09:32:19