我想序列化一个 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/