假设我的一个方法被传递已经填充了数据的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