android - 如何序列化一个Bundle?

标签 android serialization bundle

我想序列化一个 Bundle 对象,但似乎找不到一种简单的方法。使用 Parcel 似乎不是一种选择,因为我想将序列化的数据存储到文件中。

关于如何做到这一点的任何想法?

我想要这样做的原因是保存和恢复我的 Activity 状态,即使它被用户杀死。我已经创建了一个带有我想要保存在 onSaveInstanceState 中的状态的 Bundle。但是android只有在activity被SYSTEM杀死时才会保留这个Bundle。当用户杀死 Activity 时,我需要自己存储它。因此我想序列化并将其存储到文件中。当然,如果你有任何其他方式来完成同样的事情,我也会很感激。

编辑: 我决定将我的状态编码为 JSONObject而不是一个 bundle 。然后可以将 JSON 对象作为 Serializable 放入 Bundle 中,或存储到文件中。可能不是最有效的方法,但它很简单,而且似乎工作正常。

最佳答案

将任何 Parcelable 存储到文件中非常简单:

FileOutputStream fos = context.openFileOutput(localFilename, Context.MODE_PRIVATE);
Parcel p = Parcel.obtain(); // i make an empty one here, but you can use yours
fos.write(p.marshall());
fos.flush();
fos.close();

享受吧!

关于android - 如何序列化一个Bundle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598248/

相关文章:

android - 如何从google plus中的google plus帐户注销以及android中的集成

android - 如何在 ScrollView 中滚动编辑文本

python - 如何使用 Django Rest Framework 将数据添加到 ManyToMany 字段?

c# - 数据序列化 WPF

php - 如何定义一个实体,它通常被多个 bundle 使用?

android - 如何通过 Notification 将字符串数组从 BroadcastReceiver 传递到 Activity 类

android - 使用异步任务加载图像时 Android ListView 中的奇怪行为

android - 为什么 Android WebView 在 Horizo​​ntalScrollView 上闪烁?

c# - 返回空属性的数组的 SingleValueArrayConverter

ios - 推送通知不支持现有的应用程序 ID?