2013-10-02 33 views
0

我的應用程序有:併發sqlite的接入

Activity A that reads from sqlite database 
Service with notification that writes to the database 
on clicking Notification, Activity A opens up 

由ActivityA讀數非常小的任務(參考時間讀取) 但書面的服務,數據庫很長(有時需要5-10分鐘

現在當該服務正在運行,並且我點擊該通知,ActivityA有從數據庫中讀取,已經有書面形式向數據庫的服務不能執行其讀數。

所以activityA必須等待(5-10分鐘)從數據庫讀取。

上進一步研究我碰到這個

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#beginTransactionNonExclusive()

當我嘗試在我的sqliteopenhelper類我得到的錯誤我的應用程序內的方法來實現這個使用分鐘API 10.所以怎麼辦我得到這種方法工作的API 10或有沒有其他方式來並行數據庫訪問 ?

+0

也許你可以暫停寫作時你的活動是在前臺和需要的數據在數據庫已設置。 –

+0

是您在2個不同過程中的服務和活動嗎?如果不是,只需共享數據庫的單例實例。 – njzk2

回答

0

有沒有其他方法可以進行並行數據庫訪問?

我覺得沒有什麼特別的方法來實現它。您應該使用經典的Java同步來同步訪問數據庫。

最重要的是你必須確保你有只有一個連接到數據庫(你不能在同一時間從兩個不同的連接寫/讀)。並嘗試考慮Singleton的用法。在這種情況下(以及在其他情況下),它是非常高效且乾淨的解決方案,可以避免訪問數據庫時遇到的許多問題。


你提到你的任務可以持續5-10分鐘。 在類似情況下,每個用戶都應該知道您正在後臺e.q中執行一些計算。顯示一些progressDialog,progressBar或者乾脆啓動圖像的動畫。

如果您在列表中顯示一些數據,例如使用延遲加載的好理由。

也看看這些文章: