Android Studio添加Parcelable序列化小工具(快速提高开发效率)

Android Studio是google专门为开发Android提供的开发工具,在它内部可以直接的添加一些非常好用的开发小工具,这里就讲解怎样添加这些小工具,并且向大家推荐一个非常有用的对象传递时,必须要把对象序列化的接口Parcelable小工具;

这里先介绍下 Android中实现序列化的两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,但效率更高,推荐用这种方法提高性能。

并且值得注意的是 Android中Intent传递对象也对应有两种方法:一是Bundle.putSerializable(Key,Object),另一种是Bundle.putParcelable(Key,Object)。当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口。

好了介绍了对象序列化之后,就来看看怎样添加这样的小工具了:

第一步:点击设置(Setting)

第二步:点击Plugins,然后点击2所指的Browse repositories (浏览存储库)


第三步: 然后在1所指的输入框中收索你想要下载的插件小工具,然后2所指的就是下载数量和用户评分,3所指的就是安装,点击3所指的安装按钮,就能下载安装这个插件了。 这里要给大家讲的是,这里的插件都是全球Android开发人员都能下载的,所以大家看到很多4颗星和5颗星的评分,都是非常值得去研究,没事的时候大家就可以百度看看是干什么的,觉得有意思的话就可以下来研究一下,这里有很多有趣的小插件,可以帮助我们减少很多不必要的代码,下面给大家推荐的Parcelable小插件就是方便大家对象序列化的。


好了上面介绍了怎样安装小插件的方法,我们接下来就为大家介绍怎样安装Parcelable小插件。

在上图 1处中输入Parcelable,在下面的收索结果 中就有一个 Android Parcelable code generator,没错就是它,它评分还是非常高的,接近5颗星,说明性能啊什么的还是非常值得肯定的,而且有8万多人下载。那么我们就点击下载安装后,就可以使用了;如下图



注意,下载安装后,必须要重启Android Studio 刚才安装的小插件才能使用;

接下就教大家怎么使用;

第一步:要在你传递的实体类 中鼠标右键,如下图 ,点击 Generate... (或者直接快捷键 Alt+Insert)


点击了Generate...之后,就出现了如下菜单界面,点击Parcelable,就能直接快速的使对象是想Parcelable了。



然后就会弹出一个窗口,让我们选择要序列化的属性,这里就全选如下图:


点击Ok之后,这个对象就实现了Parcelable,并且在后面会自动的生成一些代码,这是非常方便的。

下面就是点击了Parcelable,对象就成功序列化了,这样就省去了我们很多时间,而且对象使用Parcelable接口实现序列化,在activity之间传递是非常快速的。

package com.iqtogether.qxueyou.activity;import android.os.Parcel;import android.os.Parcelable;/** * Created by chengguo on 2016/3/15. */public class User implements Parcelable {    private String userId;    private String userName;    private String userSex;    private int userAge;    public String getUserId() {        return userId;    }    public void setUserId(String userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getUserSex() {        return userSex;    }    public void setUserSex(String userSex) {        this.userSex = userSex;    }    public int getUserAge() {        return userAge;    }    public void setUserAge(int userAge) {        this.userAge = userAge;    }    public String getUserHome() {        return userHome;    }    public void setUserHome(String userHome) {        this.userHome = userHome;    }    private String userHome;    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(this.userId);        dest.writeString(this.userName);        dest.writeString(this.userSex);        dest.writeInt(this.userAge);        dest.writeString(this.userHome);    }    public User() {    }    protected User(Parcel in) {        this.userId = in.readString();        this.userName = in.readString();        this.userSex = in.readString();        this.userAge = in.readInt();        this.userHome = in.readString();    }    public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {        public User createFromParcel(Parcel source) {            return new User(source);        }        public User[] newArray(int size) {            return new User[size];        }    };}

注意:如果User对象中包含有对象属性,这个对象属性它自身也必须要实现Parcelable接口,如下图,User对象的一个对象属性,没有实现Parcelable接口就会出现序列化失败的提示;

这里给User设置一个House对象属性,这里做个范例


然后错误提示如下:


提示: 要求传递一个实现了Parcelable接口的对象。这时候我们去给House对象实现Parcelable接口就Ok了。

如下House对象:

package com.iqtogether.qxueyou.activity;import android.os.Parcel;import android.os.Parcelable;/** * Created by chengguo on 2016/3/15. */public class House implements Parcelable {    private String price;    public String getPrice() {        return price;    }    public void setPrice(String price) {        this.price = price;    }    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(this.price);    }    public House() {    }    protected House(Parcel in) {        this.price = in.readString();    }    public static final Parcelable.Creator<House> CREATOR = new Parcelable.Creator<House>() {        public House createFromParcel(Parcel source) {            return new House(source);        }        public House[] newArray(int size) {            return new House[size];        }    };}


接下来就是整个User对象的代码 如下:

package com.iqtogether.qxueyou.activity;import android.os.Parcel;import android.os.Parcelable;/** * Created by chengguo on 2016/3/15. */public class User implements Parcelable {    private String userId;    private String userName;    private String userSex;    private int userAge;    private House userHouse;    public House getUserHouse() {        return userHouse;    }    public void setUserHouse(House userHouse) {        this.userHouse = userHouse;    }    public String getUserId() {        return userId;    }    public void setUserId(String userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getUserSex() {        return userSex;    }    public void setUserSex(String userSex) {        this.userSex = userSex;    }    public int getUserAge() {        return userAge;    }    public void setUserAge(int userAge) {        this.userAge = userAge;    }    public String getUserHome() {        return userHome;    }    public void setUserHome(String userHome) {        this.userHome = userHome;    }    private String userHome;    public User() {    }    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(this.userId);        dest.writeString(this.userName);        dest.writeString(this.userSex);        dest.writeInt(this.userAge);        dest.writeParcelable(this.userHouse, flags);        dest.writeString(this.userHome);    }    protected User(Parcel in) {        this.userId = in.readString();        this.userName = in.readString();        this.userSex = in.readString();        this.userAge = in.readInt();        this.userHouse = in.readParcelable(House.class.getClassLoader());        this.userHome = in.readString();    }    public static final Creator<User> CREATOR = new Creator<User>() {        public User createFromParcel(Parcel source) {            return new User(source);        }        public User[] newArray(int size) {            return new User[size];        }    };}

好了这样就完成了Pacelable序列化小工具的添加和使用,是不是非常方便快捷呢!最后不要忘了,intent在 传递对象是使用的是Bundle.putParcelable(Key,Object),而不是Bundle.putSerializable(Key,Object)。在接收对象时使用的是getIntent( ).getParcelableExter( Key),而不是getIntent( ).getSerializableExtera( Key); 祝大家工作愉快。















更多相关文章

  1. Android(安卓)基于 Comparator 对象列表数组排序
  2. Android插件开发机制
  3. Android应用开发的插件化 模块化
  4. 第三部分:Android(安卓)应用程序接口指南---第五节:计算---第一章
  5. 解析android framework下利用app_process来调用java写的命令及示
  6. GeenDao
  7. Java代理模式与Android的情结
  8. android Handle
  9. Android(安卓)Binder 机制之ServiceManager 续

随机推荐

  1. 新浪微博授权发布 WebView Android
  2. Android(安卓)notification的使用实例
  3. Android(安卓)Handler的使用yu应该注意的
  4. 使用Android(安卓)studio阅读Android源码
  5. Android(安卓)- HttpURLConnection 抛出
  6. 使用 git 命令行工具创建一个 Android(安
  7. android super this区别
  8. MPAndroidChart常见设置属性(一)——应用层
  9. Android(安卓)repo/git server 建立过程
  10. Android(安卓)ListView的item button点击