Android Parcelable对象生成:ParcelableGenerator

github 地址:https://github.com/baoyongzhang/ParcelableGenerator

分析:

该项目是使用了Annotation的编译期注解,即@Retention(RetentionPolicy.CLASS)

同时未使用@Inherited注解,所以在需要序列化的 不管父类还是子类上 都要加上@Parcelable

如下引用readme.md

ParcelableGenerator介绍

ParcelableGenerator可以将任意对象转换为Parcelable类型,方便对象传输。

在Android中,对象的序列化一般有两种方式,一种是Serializable,一种是Parcelable。

Serializable 在Java中就存在,效率较低。Parcelable 是Android中提供的,也是官方推荐的方式,效率比Serializable高很多。

虽然Parcelable效率高,但是使用起来比Serializable麻烦很多,很多人不使用Parcelable就是因为写法太麻烦,尤其是属性特别多的时候,我们要将每个属性Parcel.write()然后在Parcel.read()回来,相当繁琐,不如Serializable简单粗暴,直接有效。

ParcelableGenerator可以解决Parcelable使用麻烦的问题,让使用Parcelable的简单性可以和使用Serializable相媲美。

使用方法

例如我们有一个User类,用来保存用户的一些信息,我们需要使用@Parcelable修饰该类,注意@Parcelable修饰的类必须有公有无参构造方法。

import com.baoyz.pg.Parcelable;@{private String name;private int age;() {return name;}(String name) {this.name = name;}() {return age;}(int age) {this.age = age;}}

我们要将一个User对象通过Intent传递给一个Activity叫做ShowUserActivity。我们需要调用Intent.putExtra()方法将对象传入,这时候直接传递肯定是不行的,我们需要调用PG.createParcelable()方法将对象转换为Parcelable在传入Intent中。

import com.baoyz.pg.PG;();user.setName("zhangsan");user.setAge(18);(this, ShowUserActivity.class);// 调用PG将对象转换成Parcelable,,传入Intent中intent.putExtra("user", PG.convertParcelable(user));startActivity(intent);

在ShowUserActivity中获取User对象,无需写任何转换的代码,直接getIntent().getParcelableExtra()赋值给原对象类型变量即可。

{(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 直接获取原对象类型User user = getIntent().getParcelableExtra("user");// 获取属性值user.getName();user.getAge();}}

//上面可能会报错,可以使用如下两种方法

User user = PG.unconvert(intent.getParcelableExtra("user"));//User user = (User) intent.getParcelableExtra("user");更新介绍Version 2.0

room ();("teacherName");// 将老师对象直接赋值给教室room.setTeacher(teacher);>();// 直接创建Student对象添加到List中students.add(new Student("stu1"));students.add(new Student("stu2"));students.add(new Student("stu3"));room.setStudents(students);// 传递教室对象,调用转换方法,此时内部会自动将Teacher、和List中的Student对象转为Parcelable类型并传递intent.putExtra("classroom", PG.convertParcelable(room));

人要有梦想,有了梦想才会努力奋斗,

Android Parcelable对象生成:ParcelableGenerator

相关文章:

你感兴趣的文章:

标签云: