一、介绍
1.Parcelable是一个接口,可以实现序列化。
2.序列化的作用体现在:可以使用Intent来传递数据,也可以在进程建传递数据(IPC)。
3.Parcelable在使用的时候,有一个参数类型为:Parcel;它好比一个容器,序列化时,将数据传入。反序列化的时候,再将数据取出。
4.Parcelable不能再将要把数据存入磁盘的情况。因为,Parcelable在有外界的情况下不能有效的保证数据的持续性。
二、使用示例
1.被操作的数据实体和Parcelable的定义。
1 package com.app.suodr.serialization; 2 3 import android.os.Parcel; 4 import android.os.Parcelable; 5 6 /** 7 * 作者:WangPei on 2015/7/16 09:43 8 * 邮箱:[email protected] 9 * 10 * 通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。 11 * 也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象, 12 * 只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。 13 */ 14 public class Parcelable_Person implements Parcelable{ 15 16 public String name; 17 public int age; 18 19 public Parcelable_Person(String name, int age) { 20 this.name = name; 21 this.age = age; 22 } 23 24 public String getName() { 25 return name; 26 } 27 28 public void setName(String name) { 29 this.name = name; 30 } 31 32 public int getAge() { 33 return age; 34 } 35 36 public void setAge(int age) { 37 this.age = age; 38 } 39 40 @Override 41 public int describeContents() { 42 return 0; 43 } 44 45 @Override 46 public void writeToParcel(Parcel dest, int flags) { 47 dest.writeInt(age); 48 dest.writeString(name); 49 } 50 51 public static final Creator<Parcelable_Person> CREATOR = new Creator<Parcelable_Person>() { 52 @Override 53 public Parcelable_Person createFromParcel(Parcel source) { 54 return new Parcelable_Person(source); 55 } 56 57 @Override 58 public Parcelable_Person[] newArray(int size) { 59 return new Parcelable_Person[size]; 60 } 61 }; 62 63 public Parcelable_Person(Parcel in) { 64 age = in.readInt(); 65 name = in.readString(); 66 } 67 }
2.使用Intent来传递数据分为:传递方和接收方
传递方定义:
1 package com.app.suodr.serialization; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 7 import com.app.suodr.ik_family.R; 8 9 /** 10 * 作者:WangPei on 2015/7/16 10:06 11 * 邮箱:[email protected] 12 */ 13 public class Parcelable_Post extends Activity{ 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.main); 19 Intent i = getIntent(); 20 21 Parcelable_Person person = new Parcelable_Person("wangpei",100); 22 23 i.putExtra("yes",person); 24 i.setClass(this,Parcelable_Get.class); 25 startActivity(i); 26 this.finish(); 27 } 28 }
接收方定义:
1 package com.app.suodr.serialization; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.util.Log; 7 8 import com.app.suodr.ik_family.R; 9 10 /** 11 * 作者:WangPei on 2015/7/16 09:29 12 * 邮箱:[email protected] 13 */ 14 public class Parcelable_Get extends Activity{ 15 16 private static final String TAG = "myInfo"; 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.main); 22 23 Intent i = getIntent(); 24 Parcelable_Person person = i.getParcelableExtra("yes"); 25 26 Log.i(TAG,"name: "+person.name+"age: "+person.age); 27 } 28 }
时间: 2024-10-05 08:33:50