-
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接口....