哦,天哪,我花了一个小时左右的时间在Android首选项和本地存储中阅读和尝试不同的存储Parcelable Object
的方法,现在我又回到了原点。顺便说一下,我已经下载并导入了Gson,但我不能让它工作。
基本上,我在一个名为taskList
的ArrayList<>
中有一个名为Task
的类,即使用户关闭了我的应用程序,我也需要保存它。Object
由一个String
、一些Ints
一些Booleans
和类Subtask
的ArrayList
,如果这有关系的话。重要的是我似乎不能把它写成一个字符串列表,并且它们都是可序列化的,而不是可打包的。
**EDIT:**谢谢您的建议,但是我实现了Parcelable,以便在活动之间打包列表中的特定对象。
4条答案
按热度按时间kq0g1dla1#
根据Parcelable API、
**Parcelable:**其示例可以写入
Parcel
或从Parcel
还原的类的接口。在Parcel API中阅读:
**Parcel不是通用序列化机制。**此类(以及用于将任意对象放入Parcel中的相应Parcelable API)设计为高性能IPC传输。因此,不适合将任何Parcel数据放入永久存储中:包中任何数据的底层实现中的更改都可能使较旧的数据不可读。
因此,如果你想通过
ArrayList
存储所有不同类型的引用,你必须将所有对象 Package 到一个公共接口中,在这种情况下,Serializable是你的朋友。还有,根据你的问题:
我需要保存,即使我的用户关闭了我的应用程序。
如果您查看android生命周期,您将看到您需要在onStop()中执行此操作,当您的Activity不再对用户可见时,将调用此操作。
您也可以参考此答案了解更多信息Shared preferences for creating one time activity
mw3dktmi2#
我们可以保存自定义数组列表并使用SharedPreference获取它
knsnq2tg3#
您可以将自定义对象转换为Json格式作为一个字符串并存储在SharedPreference中。
已更新
例如,您的自定义对象为Employee
在Activity中,您可以将Java对象转换为String
当用户关闭应用程序时,可以将str存储在SharedPreference中当用户打开应用程序时,从SharedPreference获取
zynd9foi4#
您可以尝试以下操作:
有关详细信息,请参阅此链接:-Here