Android_Activity使用序列化传递对象

1.Android 传递自定义数据:

1.1 parcelable接口:android 提供的专门给我们用来传输对象的序列化接口。

首先新建ActivityA 和 ActivityB 以及 需要ActivityA传输给ActivityB的对象Dog

创建Dog类:

public calss Dog implements Parcelable{

    String name;

    int  age;

    String type;

   // 描述方法,直接为零就好。

   public int  describeContents(){

   return  0;

   }

   //  这个方法是将你需要的数据打包写入到dest当中。

   pubilic void writeToparcel(Parcel dest,int flags){

   dest.writeString(name);

   dest.writeInt(age);

   dest.writeString(type);

   }

   //对象的创建器,解包你要的对象。

   public status final Parcelable.Creator<需要传递的对象Dog> CREATOR = new  Parcelable.Creator{

       public Dog  CreatFromParcel(Parcel in)

      {     

        Dog  dog  = new Dog();

        dog.name = in.readString();

        dog.age = in.readInt();

        dog.type = in.ReadSting();

        return dog;

     } 

   piblic Dog[]  new array(int size){

        return new Dog[size];

   }

   };

}

ActivityA中我们需要实现如下语句:

Intent  intent  = new  Intent(上下文this,需要跳转的ActivityB.class二进制文件);

Dog  dog = new Dog();

dog.name  = "wangwang"

dog.age = 1;

dog.type = "萨摩耶";

intent.putExtra("key dog ",value parcelable序列化对象 dog );

//这个时候我们必须让dog对象实现Parcelabel这个接口,并且同时实现parcelable中的三个方法:

A  describeContents

B  writeToparcel

C Parcelable.Creator<需要传递的对象Dog> CREATOR = new  Parcelable.Creator


ActivityB中我们需要接受ActivityA中传递过来的parcelable对象的数据。

Intent intent  = intent.getIntent();

Dog  dog = intent.getParcelableExtra(key "dog");




1.2 serialazable接口(序列化接口):在什么情况下我们需要序列化? 

    A :这个对象需要存入文件里面去写入文件里。

    B:这个对象进行传输的时候也是需要序列化。

首先新建两个ActivityA 和 ActivityB 以及创建一个需要通过ActivityA传输给ActivityB的对象Cat类。

Cat  cat  =  new  Cat();

cat.name = "皮卡丘";

cat.age  = 2;

cat.type = "英短";

Intent  intent = new Intent("当前activity的上下文this",需要跳转的Activity的二进制文件ActivityB.class)          

传递对象:Intent中没有put Object的方法,但是有两个这样的接口:


 ActivityA和ActivityB可能是两个进程当中,两个进程之间的传输就需要利用到网络传输。所以需要利用到:

    intent.putExtera("cat",“Serialazable 序列化对象cat”)  

    //serialazable 序列化对象也就是Cat,我们需要把Cat类 implements Serialazable 表示该对象是可以被序列化的。


ActivityB中如何接收ActivityA中传递过来的cat序列化数据呢?

Intent  intent = getntent();

 Cat cat  = intent.getSerializableExtra("cat")     //参数是key

这样ActivityB中就接收到ActivityA中传输过来的对象了。


Pacelable与Serializable对比,Serializable javaIO原生相对消耗的性能和资源更大一点。





你可能感兴趣的:(Android)