是否可以在共享首选项中存储Class的静态对象?

时间:2011-10-24 09:39:31

标签: android sharedpreferences

我正在开发一个项目,因为我正在创建一个静态class's object。所以当我switch off device at that time all the static objects are cleared时,我想存储到shared preference。所以我可以再次使用它。是否可以将其保存在共享首选项中?     或者在重启设备后使用该对象的任何其他可能性?

4 个答案:

答案 0 :(得分:4)

您只能保存原始数据类型,如float,int,string,字符串集或布尔值。您可以在字节流中序列化对象,然后从字节流中重新创建它们,您可以查看此AnswerAnswer

答案 1 :(得分:2)

您无法在SharedPreferences中保存特定类型的对象。根据{{​​3}}接口,您只能保存原始数据类型,如:浮点数,整数,字符串,字符串集或布尔值。

答案 2 :(得分:1)

你当然可以存储/恢复静态类SharedPreferences(vis序列化)的状态但是你需要一个Application / Activity上下文才能做到这一点,这意味着你有效地将静态类绑定到非实例静态(应用程序/活动)类。

在设计方面有点奇怪 - 你的Static类会突然变得更有意义被你的Activity直接创建(实例化),加载(恢复)和保存(存储)?

否则,当状态为无意义时,存在访问它的可能性 - 这是静态对象的性质吗?

答案 3 :(得分:-1)

你不能直接存储类对象(除了内置的String,Boolean,integer等...)

但您可以优先存储静态类中的变量。

例如

当您的设备关闭时,您必须将静态类的所有值复制到首选项

在启动完成时,您可以从首选项中检索所有值到静态对象,或者在重新创建静态对象时,您可以从首选项中获取值到静态对象。

Boot complete receiver

Shut down receiver