Intent来启动Activity,开启服务Service,发送广播Broadcast,然后使用Intent传递基本的数据类型,如:布尔值,整型,字符串。例如:
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("isBoy", true);
intent.putExtra("age", 24);
intent.putExtra("name", "jane");
而当我们想用Intent传递对象,那么这个传递的对象必须是可序列化的。Serializable就是 是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。至于序列化的方法也很简单,只需要让一个类去实现 Serializable 这个接口就可以了。例如:
public class Person implements Serializable {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Person() {
super();
}
public Person(String name, String password) {
super();
this.name = name;
this.password = password;
}
}
上面Person 实现了Serialable接口,所以Person对象是可序列化的。这时我们就能使用Intent来传递Person对象了。
Person person = new Person("wk","123");
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("person_data", person);
startActivity(intent);
在MainActivity中,我们可通过Intent的getSerializableExtra()方法获取Person对象。
Person person = (Person) getIntent().getSerializableExtra("person_data");
需要注意的一点是:不仅传递的对象必须要保证可序列化,传递的对象中所有变量也要可序列化。
还拿上面的Person为例,如果Person中有一个变量a,数据类型为Student类型,而Student没有实现Serialable接口。那么Person也不能传递成功。