假設我的一個方法被傳遞已經填充了數據的Bundle保存,是有辦法將其保存到SharedPreferences而不把它拆開到整型,浮點,字符串等。 ?保存整個捆綁到SharedPreferences
我更喜歡用「一舉」的方式編寫/提交,所以如果這不可能使用SharedPreferences,那麼您會推薦哪些其他persistent存儲方法?
假設我的一個方法被傳遞已經填充了數據的Bundle保存,是有辦法將其保存到SharedPreferences而不把它拆開到整型,浮點,字符串等。 ?保存整個捆綁到SharedPreferences
我更喜歡用「一舉」的方式編寫/提交,所以如果這不可能使用SharedPreferences,那麼您會推薦哪些其他persistent存儲方法?
據我所知,你只能保存原始數據(和它們的包裝),以SharedPreferences
你爲什麼不創建自己的helper方法將通過捆綁迭代和保存所有值SharedPreferences ?
SharedPreferences被序列化爲XML,這就是爲什麼您只能使用簡單類型。您必須自己將該包轉換爲單獨的SharePreferences屬性,或者將該包以其他方式序列化到磁盤。
這裏的討論Android中存儲數據的各種可能性有很好的參考文獻:http://developer.android.com/guide/topics/data/data-storage.html
+1用於解釋原因*爲什麼* SharedPreferences僅支持簡單類型。 – ateiob 2012-08-10 15:12:43
SharedPreferences意味着存儲簡單的類型,但我想你可以系列化你捆綁成一個字節數組,並將其轉換爲字符串。 有人可能會爭辯說,你只是將維護SharedPreferences的工作轉移到維護Bundle的努力上。 – Sparky 2012-08-10 14:33:30
我的方法是更喜歡框架中已有的方法和技術,而不是「重新發明輪子」。我的問題是要找出這樣的輔助方法是否已經存在於Android SDK中,或者我確實應該創建自己的方法。我想你回答了我的問題。 +1。 – ateiob 2012-08-10 14:56:20
@Sparky *「有人可能會爭辯說,你只是取代了維護你的SharedPreferences而努力維護一個Bundle的努力。」* - 我非常認同這一點,但研究了使用Bundle.writeToParcel ()',然後將其序列化爲一個'String',看起來更加通用和高效,而不必每次添加新的狀態變量時更新輔助方法。 – ateiob 2012-08-10 15:22:22