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

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);

祝大家工作愉快。

时间: 2024-10-12 13:24:14

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

Gson的详细使用(android必备,快速提高开发效率)

Gson的详细使用(android必备,快速提高开发效率) 接下来我要强烈给大家推荐一个google官方推荐使用的json解析库Gson.掌握好它之后,在以后的开发中就会减少非常多的代码,使用起来非常的方便. 概述: Gson是一个Java库,它不仅可以把Java对象转化为Json格式,它也能将一段Json格式的字符串转化为相对于的Java对象.Gson适用于所有Java对象,即使是那些你不知道源代码的对象. Gson的目标 提供简单易用的方法比如 toString() ,构造方法来转化JAVA

程序员必备开发工具,提高开发效率的神兵利器,大多都是免费的哦

1.IntelliJ IDEA 这个就不用多说了,地球人都在用,很好的开发工具,并且插件齐全,更牛逼的是支持各种语言开发. 官网地址:http://www.jetbrains.com/idea/ 注册码地址:http://idea.lanyus.com/ 2.DataGrip数据库客户端管理 Navicat其实是更好的一个数据库客户端管理工具,但是收费,很麻烦,就又找了一个,也是比较好用的,DataGrip也是IntelliJ IDEA中的一个工具. 官网地址:https://www.jetbr

Android Studio添加插件(Genymotion)

官方模拟器的龟速已让我们无力吐槽,幸好有genymotion这款逆天的Android虚拟机,它有着快速的开启速度,良好的交互界面.是Android开发必备的良品,甚至有些玩家已经用genymotion在电脑上玩Android游戏.今天就要和大家分享如何在Android Studio添加插件(Genymotion). 首先你要去genymotion 官网  https://www.genymotion.com,下载这两个文件 如图 然后 双击第一个文件安装,一直next即可(中间一些安装路径可以自

【Android】创建数据库的小工具

功能 方便将文本表格数据导入到数据库中去,从而避免手动去添加一条条的模拟数据. 使用方法 将文本表格放在恰当的位置,类似于: 文件位置:/assets/mock_table.csv: 文件内容: name#string, age#int, course#string xesam_1, 1, desc_A xesam_2, 2, desc_B xesam_3, 3, desc_C xesam_4, 4, desc_D xesam_5, 5, desc_E xesam_6, 6, desc_F xe

Android studio 添加依赖

以前添加依赖总是到github上下载源码,再添加源码到module的依赖当中,其实在studio中,应该使用maven库. 比如在github上看到了sliding-menu这个项目,就应该到maven网站上找对应的库,之后把地址写入build.gradle中,比如以下就是sliding-menu的库, compile 'com.github.itsmechlark.android-sliding-menu:android-sliding-menu:1.0.1' 这样做的好处就是不必再 Andr

Eclipse / android studio 添加第三方jar包 步骤

eclipse 将第三方包放到libs文件夹后并没有引用. 基本步骤分为3步,具体介绍如下: 打开自己的Eclipse,在自己的Android工程上名上右键->Build Path ->Configure Build Path 2. 在Libraries选项卡中,选择右侧的Add External JARs,然后选择要导入的第三方的jar包即可! 3 在Order and Export选项卡中,点击右侧的Up按钮,将刚才引入的jar包放到最上方的位置,前边的勾记得要勾上! (关于放到首位,是自

Android性能测试 一些适用于Android Studio的代码审查和性能测试工具

导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,由于QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进行软件选用的决策. 目前,已经有很多可以监控android app 性能的工具可以供开发人员使用,如:基于Eclipse插件体系的MAT,其通过生成.hprof文件对内存泄露情况进行排查:内存检测工具APT:提供CPU利用率实时曲线图,方便对比测试内存泄露问题[图0-1] 图 0-1  通过APT实

如何利用 Visual Studio 自带工具提高开发效率

原文:如何利用 Visual Studio 自带工具提高开发效率 Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢? 显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位. 如何显示 1. 工具 / 选项 / 文本编辑器 -> 选择对应的语言 2. 勾选 "行号" 使用书签 和平常意义的书签类似,当我们希望在日后某一时刻快速定位到一处代码时使用.比如在项目例会上,你需要演示本周你所做的一些改进,在开会前可以事先

Visual Studio 实用扩展推荐   Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源)。在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率。 C# outline   Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if、while的区块进行折叠

Visual Studio 实用扩展推荐 Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源).在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率. C# outline Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if.while的区块进行折叠,而这款工具则正好弥补了这个问题. highlight all occurrences of selected word