android Serialiazble 和 Parcelable 的用法概要1.docVIP

android Serialiazble 和 Parcelable 的用法概要1.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android Serialiazble 和 Parcelable 的用法概要1

通过dumpsys meminfo命令查看一个进程的内存情况 通过dos 链接手机 命令如下:(前提手机需要root) 输入命令:adb shell dumpsys meminfo com.winorout.travelclient.activity 运行结果如下: Serialiazble 和 Parcelable 的用法 总体描述: 在Android开发过程中,经常要在Activity之间传递参数,使用Android系统提供的方法可以传递基本数据类型的变量,但有时候我们经常要传递一些复杂的数据类型或自定义的类,这种情况的参数无法直接传递,我们可以通过序列化实现。 为什么要将对象序列化? ?1、永久性保存对象,保存对象的字节序列到本地文件中; ?2、用过序列化对象在网络中传递对象; ?3、通过序列化对象在进程间传递对象。 实现: 对于Serializable,类只需要实现Serializable接口,并提供一个序列化版本id(serialVersionUID)即可。而Parcelable则需要实现writeToParcel、describeContents函数以及静态的CREATOR变量,实际上就是将如何打包和解包的工作自己来定义,而序列化的这些操作完全由底层实现。 实现Serialiable接口: Serializable的作用是将数据对象存入字节流当中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。 implements Serializable接口的作用就是给对象打了一个标记,系统会自动将其序列化。案例1: ?1)User.java ?(implements Serializable ) ?2)MainActivity.java ? ? ? ?User user = new User(); ? ? ?Intent intent = new Intent(this,Second.class); ? ? ? ?intent.putExtra(user,user); ?3)Second.java ? ? ?Intent intent = getIntent(); ? ? ?User user = intent.getSerializableExtra(user); 实现Parcelable接口: 为什么要实现Parfcelable接口来实现在Intent中传递对象? ? a、在使用内存的时候,Parcelabl比Serializable性能高,所以推荐使用Parcelable类。 ? b、Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。Parcel的序列化和反序列化的读写全是在内存中进行,所以效率比JAVA序列化中使用外部存储器会高很多注意:Parcelable不能使用在将数据存储在磁盘上的情况,因为Parcelable不能很好的保存数据的持续性在外界有变化的情况下。因此在这种情况下,建议使用Serializable案例: ? ? 步骤1:自定义实体类,实现Parcelable接口,重写其两个方法。 ? ? 步骤2:该实体类必须添加一个常量CREATOR(名字大小写都不能使其他的),该常量必须实现Parcelable的内部接口:Parcelable.Creator,并实现该接口中的两个方法。 User.java如下:public?class?User?implements?Parcelable?{?? ????public?String?name;?? ????public?int?age;?? ????//?必须要创建一个名叫CREATOR的常量。?? ????public?static?final?Parcelable.CreatorUser?CREATOR?=?new?Parcelable.CreatorUser()?{?? ????????@Override?? ????????public?User?createFromParcel(Parcel?source)?{?? ????????????return?new?User(source);?? ????????}?? ????????//重写createFromParcel方法,创建并返回一个获得了数据的user对象?? ????????@Override?? ????????public?User[]?newArray(int?size)?{?? ????????????return?new?User[size];?? ????????}?? ????};?? ?? ????@Override?? ????public?String?toString()?

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档