parcel

更新时间:2023-01-04 14:54:40 阅读: 评论:0


2023年1月4日发(作者:尼基塔第4季)

Android中Parcelable的使⽤详解

Parcelable与Serializable

Serializable是Java为我们提供的⼀个标准化的序列化接⼝。

Parcelable是Android为我们提供的序列化的接⼝。

对⽐:

1、Parcelable相对于Serializable的使⽤相对复杂⼀些。

2、Parcelable的效率相对Serializable也⾼很多。

3、Parcelable不能使⽤在要将数据存储在磁盘上的情况,因为Parcelable在外界有变化的情况下不能很好的保证数据的持续

性。尽管Serializable效率低点,但此时还是建议使⽤Serializable。存储到设备或者⽹络传输上选择Serializable。

序列化与反序列化

序列化:将对象转换为可以传输的⼆进制流(⼆进制序列)的过程,这样我们就可以通过序列化,转化为可以在⽹络传输或者保存

到本地的流(序列),从⽽进⾏传输数据。

反序列化:从⼆进制流(序列)转化为对象的过程。

简单使⽤:

进⾏Android开发的时候,⽆法将对象的引⽤传给Activities或者Fragments,我们需要将这些对象放到⼀个Intent或者Bundle⾥

⾯,然后再传递。简单看⼀下:

1、定义Book类,实现Parcelable接⼝。

t;

;

able;

publicclassBookimplementsParcelable{

privateStringname;

privateintid;

privateStringclassify;

protectedBook(Parcelin){

name=ring();

classify=ring();

id=t();

}

publicBook(Stringclassify,Stringname,intid){

=name;

=id;

fy=classify;

}

/**

*反序列化

*/

publicstaticfinalCreatorCREATOR=newCreator(){

@Override

publicBookcreateFromParcel(Parcelin){

returnnewBook(in);

}

@Override

publicBook[]newArray(intsize){

returnnewBook[size];

}

};

@Override

publicintdescribeContents(){

return0;

}

/**

*序列化过程

*

*@paramdest

*@paramflags

*/

@Override

publicvoidwriteToParcel(Parceldest,intflags){

tring(name);

tring(classify);

nt(id);

}

@Override

publicStringtoString(){

return"name:"+

name+"""+"id:"+id+"""+"classify"+classify;

}

}

writeToParcel:序列化过程

Creator与protectedBook(Parcelin)配合实现反序列化,转换为对象。

注意:类中有多个String或者其它相同对象的话,那么writeToParcel中writeString的顺序是怎么样的,protectedBook(Parcel

in){}中readString的顺序就得是怎么样的。

2、mainActivity中:

lickListener(kListener(){

@Override

publicvoidonClick(Viewv){

Intentintent=newIntent(,);

ra("key",newBook("哈","鸿",8));

startActivity(intent);

}

});

3、另⼀个Activity获取:

Intentintent=getIntent();

Bookbook=celableExtra("key");

Log.d("Test1Activity",ng());

输出:

--------------------------------------------------------------------------------

Book类⾥⾯有其它对象:

如果Book类⾥⾯有其他对象(⽐如实体类Data)的话,那么Data也需要实现Parcelable接⼝,⽤法与上⾯的Book类⼀样。

writeToParcel⾥⾯需要写上:arcelable(data,0);

protectedBook(Parcelin){}⾥⾯需要写上data=rcelable(ssLoader());

总结

以上所述是⼩编给⼤家介绍的Android中Parcelable的使⽤详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编

会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文发布于:2023-01-04 14:54:40,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/91240.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:skid
下一篇:aerobic
标签:parcel
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图