我需要存儲Android應用程序的複選框狀態數量和可變數量。 每5-10分鐘我需要檢索一個複選框的狀態(應該通過其他活動中的用戶交互來更改)。 我知道我可以將它們存儲在sharedPreferences或SQLite數據庫中。數字或複選框從10到(infinite-1)可變。在DB或pref中保存信息的性能/內存消耗
我的第一個想法是所有狀態存儲在一個單一的字符串:
chk1:true,chk2:false,chk3:false,chk4:false,chk5:true
通過:
和,
分隔。我可以在一個getString()
調用中檢索我的所有複選框。
我離開了這個解決方案,因爲我的複選框數量在增長,我認爲它沒有執行一個包含數千個數據的字符串。
我的第二個想法是將每個chk存儲在不同的首選項中。我離開這個解決方案,因爲我需要檢索可能多次我的複選框狀態..想象getString()
調用10000次或更多次,這是資源的浪費。
我的第三個想法是將所有單一狀態存儲在SQLite數據庫中。
ID Status
1 T
2 F
3 F
4 F
5 T
在這個解決方案中,我不喜歡我需要訪問我的數據庫大量的時間。
如果我需要從現在到無限每5分鐘檢索一個複選框狀態,最好的解決方案(性能和內存消耗)是什麼? DB或sharedpref? 如果數據庫,我需要打開每一個數據庫並實例化一個遊標,或者我應該在我的活動開始時實例化它?
謝謝。是否有任何負面的問題打開數據庫連接,並永遠關閉它(從不〜2-3天)? – StarsSky
最重要的是總是優雅地關閉所有的遊標。其餘的並不重要,但我只是建議關閉你的'Activity'的連接'onDestroy()'以保證安全。話雖如此,我懷疑Android會保持你的活動在內存中很長時間(因爲它會在需要內存時自動銷燬它),除非你的活動始終保持在前臺,在這種情況下它會真的儘量不銷燬它。 – andr
不,它是一個動態壁紙,所以活動在'前景'中打開並運行。我會嘗試這個解決方案。 – StarsSky