Android - 将Parcelable数据保存到文件中

eja*_*jay 9 android serializable parcelable gson

我曾经使用Serializable对象将它们保存在filesytem中并读取它们以便做任何我想做的事情.但是当你必须在活动之间传递数据时,序列化很慢,所以我读了比推荐使用Parcelable.然后我做了,是的,它更快!但现在,我有一点问题.由于Parcelable针对IPC进行了优化,因此它们不可序列化,无法保存到文件中.所以我想知道是否可以这样做.

此外,如果我决定为我的类实现Parcelable和Serializable接口,但只使用Parcelable在我的活动之间传递数据,我将能够将类保存到文件中.但我想,因为我使用serializable(只保存,不传递数据),这不是一个好主意哼哼?

我也想过使用Gson库,从类中序列化数据,并将JSON保存到文件中,并重用Gson反序列化JSON以获取我的Parcelable对象.这似乎是个好主意吗?性能怎么样?

感谢大家的回答!

J.

小智 6

只需执行context.getFilesDir()并使用java.io.ObjectInputStream和java.io.ObjectOutputStream.

此外,关于"Parcelable not now serializable".由于Parcelable在接口中而不是您扩展的类,因此这并不完全有意义.

所以,

class MyClass implements Parcelable, Serializable {   
}
Run Code Online (Sandbox Code Playgroud)

应该工作得很好.一旦您将对象读写到文件系统,Parcelable接口仍然可以工作.它只是一个界面.

我不得不承认我没有尝试过,但这是我今天写的,明天我将编写单元测试.

希望这可以帮助.

  • @jhm `intent.putExtra(name, (Parcelable) object);` (3认同)
  • 在意图中使用类时,实现这两个接口是一个问题,因为调用 putExtra() 现在不明确 - 它不知道您是调用 putExtra(name,parcelable) 还是 putExtra(name, serializable) (2认同)