Serializable 和 Parcelable两种方式传递对象
2016-03-09 22:14
337 查看
Serializable方式相对而言比较简单些。只是简单的实现Serialiazable接口,然后从中根据字段读取就行了。
在程序中传递
在另一个程序中SecondActivity接收
第二种:Parcelable方式相对比较复杂,下面直接贴上代码,注意注释。
然后就是传递数据
最后读取信息
问题来了,我们在这两种情况下,我们需要选择哪一种,一般来说,Serializable是属于Java中的序列化接口,而Parcelable是android上的序列化方式,并且Serializable是序列化整个对象,而Parcelable是将对象拆分成单独的对象进行序列化,因此,首选是Parcelable方式。
public class Person implements Serializable { private String name; private int 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; } public Person(String xiaohong, int i) { name = xiaohong; age = i; } }
在程序中传递
Intent intent = new Intent(this, SecondActivity.class); Person person = new Person("xiaohong", 20); intent.putExtra("data", person); startActivity(intent);
在另一个程序中SecondActivity接收
Person person = (Person) intent.getSerializableExtra("data"); tv_show.setText(person.getName() + ":" + person.getAge());
第二种:Parcelable方式相对比较复杂,下面直接贴上代码,注意注释。
//首先实现Parcelable接口 public class Student implements Parcelable { private String name; private int age; //一般都是直接返回0 @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name);//写入name字段 dest.writeInt(age);//写入age字段 } public static final Parcelable.Creator<Student> CREATOR = new Creator<Student>() { @Override public Student createFromParcel(Parcel source) { Student student = new Student(); student.name = source.readString();//从刚才的Parcel对象中读取相应的字段存放到相应的对象中 student.age = source.readInt(); return student; } @Override public Student[] newArray(int size) { return new Student[size];//返回size大小的对象数组 } }; 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; } }
然后就是传递数据
Intent intent = new Intent(this, SecondActivity.class); Student student = new Student(); student.setName("glc"); student.setAge(21); intent.putExtra("data", student); startActivity(intent);
最后读取信息
Intent intent = getIntent(); Student student = intent.getParcelableExtra("data"); tv_show.setText(student.getName() + ":" + student.getAge());
问题来了,我们在这两种情况下,我们需要选择哪一种,一般来说,Serializable是属于Java中的序列化接口,而Parcelable是android上的序列化方式,并且Serializable是序列化整个对象,而Parcelable是将对象拆分成单独的对象进行序列化,因此,首选是Parcelable方式。
相关文章推荐
- block语法
- 第一周4.2
- Activity的启动模式
- Echarts柱状图简单应用
- 外连接 内链接 子查询
- centos安装samba服务器
- Android Studio 常用快捷键
- Javase02project
- 就拿胖子说事
- Elasticsearch学习笔记
- 练习使用DBHelper(代替JDBC)
- 翻译一定要知道的一些软件和工具
- 数据结构与算法面试题80道(6)
- 兼容模式下页面样式错乱问题
- DEV--skinRibbonGalleryBarItem皮肤控件
- StartActivityForResult的用法
- 项目二-就拿胖子说事
- 心理学学习(三) 感觉阈限
- 论文笔记(1)——《Where's Wally?Precise User Discovery Attacks in Location Proximity Services》
- Hybrid开发站点