android上的sqlite允許您從多個procs訪問數據庫進行讀取,但是如果您當前正在從一個進程寫入,則其他procs的讀取和寫入操作將引發異常,因爲第一次寫入有鎖在分貝。Android sqlite併發性無例外
「特效」我的意思是在同一個應用程序中的其他線程。
是否有一種標準的方式讓其他線程等待數據庫再次可用,可能是指定的超時而不是拋出異常?
預計「你爲什麼這樣做?」答案,它就是我們這樣做的方式,就是這樣。我們也不會使用內容提供商。只需要一種方法來同步數據庫訪問。
假設沒有標準的方法來做到這一點,我們可能會結束編寫db調用的包裝來做一些線程同步。
所以,你是說使用1 SQLiteOpenHelper,然後1您的整個應用程序的可寫連接?所有活動和服務? – 2010-08-31 16:36:50
我沒有足夠的「影響力」來讚揚這個答案,但它確實使我走上了正確答案的道路。無論您調用「getReadable ...」還是「getWritable ...」,SQLiteOpenHelper實際上都會返回相同的緩存對象,那麼數據庫對象本身具有一個Java Lock對象,以確保任何調用讀取或寫入都被序列化。我將不得不保留一個單身SQLiteOpenHelper,它會讓我定期「關閉」db對象,這看起來「更安全」。 Sqlite本身可以處理多個讀取客戶端,這在邏輯上似乎表現更好,但無論如何。 再次感謝。 – 2010-08-31 20:04:10
@kāgii作爲提問者,你可以接受這個答案,或者寫下你自己的答案並接受 – ohhorob 2010-09-10 22:29:29