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);
}
}
}
作者:Code先生s —— Code先生
出处:http://www.cnblogs.com/CodeMr/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号