Android进阶之使用Intent传递对象02
来源:互联网 发布:淘宝上自粘墙纸有毒吗 编辑:程序博客网 时间:2024/05/17 07:28
使用Intent来传递对象通常有两种实现方式:Serializable和Parcelable。即把对象序列化。下面来简单对两个进行使用:
Serializable
1,比如有个Person类,其中包含name和age两个属性,将其先用Serializable序列化。
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; }}
2,FirstActivity的写法:
Person person = new Person();person.setName("Tom");person.setAge(20);Intent intent = new Intent(MainActivity.this,SecondActivity.class);intent.putExtra("person_data",person);startActivity(intent);
3,SecondActivity的写法:
Person person = (Person)getIntent().getSerializableExtra("person_data");int age = person.getAge();String name = person.getName();Toast.makeText(MyApplication.getContext(),"name :" + name + "age : "+age,Toast.LENGTH_SHORT).show();
Parcelable
1,还是使用Person类,这次是实现Parcelable接口。
public class Person implements Parcelable { 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; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } public static final Parcelable.Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel source) { Person person = new Person(); person.name = source.readString(); //读取name person.age = source.readInt(); //读取age return person; } @Override public Person[] newArray(int size) { return new Person[size]; } };}
2,FirstActivity的写法:
Person person = new Person();person.setName("Tom");person.setAge(20);Intent intent = new Intent(MainActivity.this,SecondActivity.class);intent.putExtra("person_data",person);startActivity(intent);
3,SecondActivity的写法:
Person person = (Person)getIntent().getParcelableExtra("person_data"); int age = person.getAge(); String name = person.getName(); Toast.makeText(MyApplication.getContext(),"name :" + name + "age : "+age,Toast.LENGTH_SHORT).show();
总结:Serializable会把整个对象进行序列化,而Parcelable的实现原理是将一个完整的对象进行分解,而分解后的每一部分都是intent所支持的数据类型。因此,Parcelable的效率会高于Serializable,所以更加推荐使用Parcelable的方式来实现intent传递对象的功能。
0 0
- Android进阶之使用Intent传递对象02
- Android开发之使用Intent传递对象
- Android-使用Intent传递对象
- Android进阶之intent传递大数据
- Android开发之如何使用Intent传递对象
- Android之使用 Intent 传递对象(一)Serializable 方式
- Android之使用 Intent 传递对象(一)Parcelable 方式
- Android 用Intent 传递对象之 Serializable
- Android 用Intent 传递对象之 Parcel
- android学习之intent对象传递类
- Android中使用Intent传递对象
- android 通过Intent使用Bundle传递对象
- Android 如何使用Intent传递对象
- Android使用Intent传递List或者对象
- Android学习笔记----使用Intent传递对象
- Android --- 使用Intent传递对象的方式
- Android Intent传递对象
- Android Intent 传递对象
- 汇编入门小例子
- python爬虫(1.find和findAll函数提取文本)
- Intent 属性参数
- Sublime Text3常用插件安装
- Android开发-自定义View-AndroidStudio(十六)侧滑删除
- Android进阶之使用Intent传递对象02
- 使用Spannable或Html.fromHtml设置字体、颜色、超链接等
- Java基础之(继承)
- 解决webview加载网页出现白屏的问题
- 蓝牙解析(part2):协议架构分析
- ADB工具安装对真机进行Monkey测试的环境搭建
- MFC对话框程序EDIT类控件的自动换行,垂直滚动条自动下移
- ORALCE 外连接
- R 教你做炫酷的--共线性系数展示