android中通过intent传递复杂数据

时间:2023-03-08 23:21:38
android中通过intent传递复杂数据

  android中在各个service或者acitivity之间可以通过Intent来传递一些数据,intent原生直接提供了一些简单数据类型的数据的传递,使用起来也很方便,比如int boolean 和 string等,当然还可能传递这些类型的数组形式已经list形式;

  但在我们的使用往往希望可以传递一些自定义的类对象,目前通过intent可以通过两种形式,Serializable 或者 Parcelable

  Serializable 是java原有接口,而Parcelable是android封装过的,据说比Serializable要高效一点;android的官方文档也推荐使用Parcelable接口;

Serializable

  使用非常简单,要传递的类对象所对应的类名后增加 implents Serializable 即可,内部不需要再进行其他接口的实现;

  但是有一点要特别注意,因为是序列化,所以如果要传递的类是一个内部类,一定要将该类设置为static,否则使用上会有问题,当然前提是该类可以写成静态,如果不行就单独拎出去一个文件一个类;我在使用时,就遇到了这个问题,折腾好久。

Parcelable

  使用上比较麻烦,除了要implents Parcelable,还需要在类里面实现一些Parcelable的接口,如下:

    Parcelable.Creator<XXXXXX> CREATOR    = new Parcelable.Creator<XXXXXX>()

    XXXXXX为你的类名;

  还要实现 writeToParcel 接口,两个接口的里面实现的数据读取顺序要一致.