Android中Parcelable接口讲解

Parcelable接口讲解:

实现Parcelable就是为了进行序列化,那么,为什么要序列化?

1、永久性保存对象,保存对象的字节序列到本地文件中;

2、通过序列化对象在网络中传递对象;

3、通过序列化在进程间传递对象。

Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口就复杂一些,但效率更高,推荐用这种方法提高性能。

在包名为com.example.entity建一个class

package com.example.entity;

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

public class Users implements Parcelable{

private String uname;
private int uage;
private String usex;

public Users(String uname, int uage, String usex) {
super();
this.uname = uname;
this.uage = uage;
this.usex = usex;
}
public Users() {
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getUage() {
return uage;
}
public void setUage(int uage) {
this.uage = uage;
}
public String getUsex() {
return usex;
}
public void setUsex(String usex) {
this.usex = usex;
}
//内容接口描述,默认返回0就可以
@Override
public int describeContents() {
return 0;
}

//序列化哪些属性
//序列化成Parcel对象
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(uname);
dest.writeInt(uage);
dest.writeString(usex);
}

//实现一个Parcelable的构建器
//反序列化过程
public static final Parcelable.Creator<Users> CREATOR=new Creator<Users>() {
//创建指定长度的原始对象数组
@Override
public Users[] newArray(int size) {
return new Users[size];
}
//createFromParcel(Parcel in)实现从Parcel容器中读取传递数据值,封装成Parcelable对象返回逻辑层
@Override
public Users createFromParcel(Parcel source) {
Users user=new Users();
user.setUname(source.readString());
user.setUage(source.readInt());
user.setUsex(source.readString());
return user;
}
};
}

从FirstActivity跳转到TwoActivity

注:代码简短,余下代码简单请自行补充(谅解)

在button事件onClick里面

Intent intent=new Intent(FirstActivity.this,TwoActivity.class);
//构建一个Users对象
Users user=new Users("admins",23,"男");
intent.putExtra("user", user);//传递一个Users对象
startActivity(intent);

另一个界面代码

import com.example.entity.Student;
import com.example.entity.Users;

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

public class Second_ThreeActivity extends Activity {

private TextView showText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second__three);

Intent intent=getIntent();
Users user=(Users)intent.getParcelableExtra("user");
String str="用户:"+user.getUname()+",年龄:"+user.getUage()+",性别:"+user.getUsex();
showText.setText(str);
}

}

}

posted @ 2016-11-22 00:10  Code先生  阅读(120)  评论(0)    收藏  举报