2013-06-18 76 views
1

我正在寫一個Android應用程序,這將包括可以使用Android的內置SQLite存儲進行併發數據存儲嗎?

  1. 後臺服務1,其在有規律的間隔讀取傳感器的值(例如,每五分鐘的程序在測量期間值30秒讀取傳感器值,被讀出每秒)兩次,
  2. 背景服務2,其分析所述傳感器值和由它們計算一些度量,
  3. 後臺服務3,其在3-7天運行一次,並從數據庫中刪除舊的數據(傳感器值和度量)和
  4. GUI活動,其中sho如果用戶打開應用程序並按下某個按鈕,則顯示一些傳感器值和/或指標。

將會有2個表格 - SensorDataMetrics。後臺服務1將寫入SensorData。後臺服務2將從SensorData中讀取並寫入Metrics。後臺服務3將從兩個表中刪除行。 GUI活動將從兩個表中讀取。

我在考慮如何爲傳感器值和指標實現線程安全存儲。

一個明顯的解決方案是使用內置的SQLite數據庫。

我有以下問題:

  1. 它是安全的在此設置使用?
  2. Android的SQLite會處理每秒兩次寫入兩個數值(longdouble)嗎?
  3. 它支持併發訪問(當GUI活動在SensorData上發出查詢並且後臺服務1試圖同時寫入同一個表時會發生什麼?)?

回答

2
  1. 通過使用SQLiteOpenHelper作爲單例,你是線程安全的。 SQLiteOpenHelper處理sqlite數據庫的鎖定(這是處理併發讀/寫的sqlite機制)。
  2. 這是要測試的東西。但是,一般來說,你是否需要經常寫入數據庫?您可以將數據緩存在內存中並以較慢的速率將其刷新到數據庫。
  3. 簡短回答是'是它支持併發訪問'。有關詳細信息,請查看sqlite document,android sqlite僅僅是一個包裝。您可以在閱讀本文檔後將其配置爲您認爲合適的方式。
相關問題