利用Serializable接口在Activity之间传递数据

java中的Serializable接口官方定义是:
public interface Serializable

类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。


什么是序列化?按照我粗浅的理解就是,就是具有能够使得数据具有数据流的属性,一旦数据能够序列化之后,即任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。


那么我们如何利用Serializable接口在Activity之间传递数据的呢?

其实方法很简单,首先我们可以先设计好一个用于传递数据的类,类中包含好相应的数据结构,然后让类实现Serializable接口(其实只要加上implements Serializable就行了)。

public class MyClass implements Serializable

然后对数据类实例化一个对象并将我们要传递的数据存入其中,接着我们在Intent实例中putExtra,并将其强制转换为Serializable(记住,强制转换的对象必须实现Serializable接口,否则将会抛出ClassCastException异常)。

MyClass m;
Intent in;
m = new MyClass();
m.setId(1);
m.setName("zsf");
in = new Intent(MainActivity.this, MyActivity.class);
in.putExtra("list", (Serializable)m);
startActivity(in);

在接收数据的时候我们只要再将他转换为响应的类就好了

MyClass m = (MyClass)getIntent().getSerializableExtra("list");
tv.setText(m.getId() + " : " + m.getName());

Serializable接口是很强大的,不止是自定义类,容器也是可以的,方法同上。


还有一种在Activity之间传递的方法是,安卓里的Parcelable接口,Parcelable接口的效率比Serializable接口效率要高,但是Serializable接口使用起来较为简单,等以后有时间了,再回头去研究Parcelable接口....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值