2011-08-22 50 views
1

我有一個SQLite數據庫在android中的活動正在運行時從一個線程訪問,並在活動的onPause()創建一個新的線程來保存一切到數據庫一個不同的線程來避免超時問題。但是,當我嘗試這樣做時,我要麼獲取數據庫被鎖定的錯誤。我怎樣才能解決這個問題?由於我需要從onPause()中的一個單獨線程訪問數據庫,我是否可以刪除以前的訪問權限,因爲我不會再使用它?Android從多個線程訪問SQLite數據庫

回答

0

當SQLite數據庫已經鎖定它時,您無法訪問它。

爲了避免這種情況,Android爲您提供了ContentProviders來處理這類事情。

你應該實現你自己的ContentProvider來做這種事情。

也就是說,數據庫永遠不能被認爲是線程安全的,除非你自己管理線程。避免像這樣使用數據庫。相反,當你的當前事務完成時,緩存數據(也許在堆棧上)並用回調請求訪問數據庫。

0

據我所知SQLite不支持併發訪問,所以你必須有一個專用的線程來提供訪問,或者你必須獲得一個鎖到SQLite對象實例。