Parcelable vs Serializable

序论

在Android中,我们需要传递对象的引用在activity和fragment之间,因此我们不得不放在Intent/Bundle中。

通过api我们了解到有两种选择,可以使用对象的Parcelable或者Serializable形式,作为Java的开发者,我们已经知道Serializable机制,那么为什么还有Parcelable?

要回答这个问题,先让我们看看这两个方法。

Serializable,简单之主

1
2
3
4
5
6
7
8
9
10
11
12
// access modifiers, accessors and constructors omitted for brevity
public class SerializableDeveloper implements Serializable
String name;
int yearsOfExperience;
List<Skill> skillSet;
float favoriteFloat;
static class Skill implements Serializable {
String name;
boolean programmingRelated;
}
}

Serializable的美在于你只需要将类和他的子类实现Serializable接口,这是一个标记接口,意味着没有方法来实现,Java可以简单有效的实现它的序列化。

这个方法的问题是,他使用到了反射,并且它是一个缓慢的进程。正是这个机制,创造了大量的临时对象,并且造成大量的gc。



本站访问量   |   您是第 位.