我正在開發主屏幕小部件,並且我正在使用android sqlite數據庫。我用簡單的方法(添加,刪除,獲取記錄...)實現了一個簡單的類DBAdapter
來處理數據庫工作。它有效,但現在我正在考慮如何做到這一點的最佳方式。如何以及在AppWidgetProvider中存儲持久對象(如db適配器)?
對我來說最大的問題是,如何(以及在哪裏)存儲我的DBAdapter的實例。如果我使用Activity,這將非常簡單 - 我將在onCreate
方法中創建DBAdapter的實例,並且一切都很好。但現在我沒有這種選擇,因爲我使用AppWidgetProvider
和幾個IntentServices
。 AppWidgetProvider
(BroadcastReceiver)只能在特定的時間 - 在執行onReceive
方法期間生效。 IntentService
也會在完成必要的工作後「結束」。那麼如何以及在哪裏存儲我的DBAdapter的實例?我不想每次都創建新的DBAdapter實例。
我在想這個選項:make DBAdapter singleton clas或使用靜態類&方法,另一個選擇是使用Gson將DBAdapter存儲到sharedPreferences,或者使用序列化。但我寧願問。什麼是正確的方法來做到這一點? THX很多
thx,我會按照你的意見;) – qkx
但是,如何做到這一點,如果我需要從乘法服務寫入數據庫?例如dataservice會定期在後臺運行,並向db寫入新的數據,而在前臺,我正在根據用戶做一些寫作 - 如果這兩個寫作都在同一時間(有時會發生),我會得到異常'android.database。 sqlite.SQLiteException:錯誤代碼5:數據庫被鎖定。現在怎麼辦?更多細節在這裏:http://stackoverflow.com/questions/10798233/concurrent-writing-to-android-database-from-multiply-services – qkx