【问题标题】:Is it possible to stored Class's static object in Shared Preference?是否可以将 Class 的静态对象存储在 Shared Preference 中?
【发布时间】:2011-10-24 09:39:30
【问题描述】:

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

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    您只能保存原始数据类型,如浮点、整数、字符串、字符串集或布尔值。你可以在字节流中序列化你的对象,然后从字节流中重新创建它们,你可以看看这个Answer也这个Answer

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您当然可以存储/恢复静态类 SharedPreferences 的状态(针对序列化),但您需要一个应用程序/活动上下文来执行此操作,这意味着您有效地将静态类绑定到非静态(应用程序/活动)类。

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

      否则,当它的状态是无意义的时候,就有可能访问它——这就是静态对象的本质吗?

      【讨论】:

        【解决方案4】:

        您不能优先直接存储类对象(除了内置的字符串、布尔值、整数等...)

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

        例如

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

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

        Boot complete receiver

        Shut down receiver

        【讨论】:

          猜你喜欢
          • 2019-08-09
          • 1970-01-01
          • 1970-01-01
          • 2021-03-20
          • 2012-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-21
          相关资源
          最近更新 更多