Android Parcelable解释与使用

一、介绍

1.Parcelable是一个接口,可以实现序列化。

2.序列化的作用体现在:可以使用Intent来传递数据,也可以在进程建传递数据(IPC)。

3.Parcelable在使用的时候,有一个参数类型为:Parcel;它好比一个容器,序列化时,将数据传入。反序列化的时候,再将数据取出。

4.Parcelable不能再将要把数据存入磁盘的情况。因为,Parcelable在有外界的情况下不能有效的保证数据的持续性。

二、使用示例

1.被操作的数据实体和Parcelable的定义。

package com.app.suodr.serialization;

import android.os.Parcel;
import android.os.Parcelable;

/**

  • 通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。

  • 也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,

  • 只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。
    */
    public class Parcelable_Person implements Parcelable{

    public String name;
    public int age;

    public Parcelable_Person(String name, int age) {
    this.name = name;
    this.age = age;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }

    @Override
    public int describeContents() {
    return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(age);
    dest.writeString(name);
    }

    public static final Creator CREATOR = new Creator() {
    @Override
    public Parcelable_Person createFromParcel(Parcel source) {
    return new Parcelable_Person(source);
    }

     @Override
     public Parcelable_Person[] newArray(int size) {
         return new Parcelable_Person[size];
     }
    

    };

    public Parcelable_Person(Parcel in) {
    age = in.readInt();
    name = in.readString();
    }
    }
    2.使用Intent来传递数据分为:传递方和接收方

传递方定义:
package com.app.suodr.serialization;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.app.suodr.ik_family.R;

/**

*/
public class Parcelable_Post extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Intent i = getIntent();

    Parcelable_Person person = new Parcelable_Person("wangpei",100);

    i.putExtra("yes",person);
    i.setClass(this,Parcelable_Get.class);
    startActivity(i);
    this.finish();
}

}
接收方定义:
package com.app.suodr.serialization;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.app.suodr.ik_family.R;

/**

*/
public class Parcelable_Get extends Activity{

private static final String TAG = "myInfo";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent i = getIntent();
    Parcelable_Person person = i.getParcelableExtra("yes");

    Log.i(TAG,"name:  "+person.name+"age:  "+person.age);
}

}
转自https://www.cnblogs.com/addNutri/p/4650482.html

你可能感兴趣的:(Android Parcelable解释与使用)