Serializable和Parcelable(ce,la,parcelableserializab,开发技术)

时间:2024-05-05 12:24:29 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Serializable%E5%92%8CParcelable

Serializable(接口)

通过intent的bundle传递参数

Bundlebundle=newBundle();
bundle.putSerializable(IntentKeys.IMG_ARR_ENVIR_IMG,mArrListEnvir_img);
intent.putExtras(bundle);

mListEnvir=(ArrayList<EnvirImg>)(bundle
.getSerializable(IntentKeys.IMG_ARR_ENVIR_IMG));

Parcelable(接口)

通过intent的bundle传递参数

Bundlebundle=newBundle();
bundle.putParcelable(IntentKeys.IMG_ARR_ENVIR_IMG,mArrListEnvir_img);
intent.putExtras(bundle);

importandroid.graphics.Bitmap;
importandroid.os.Parcel;
importandroid.os.Parcelable;

publicclassUploadPicimplementsParcelable{

privateStringid;
privateStringsdPath;
privateStringwebPath;
privateBitmapbmp;

publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetSdPath(){
returnsdPath;
}
publicvoidsetSdPath(StringsdPath){
this.sdPath=sdPath;
}
publicStringgetWebPath(){
returnwebPath;
}
publicvoidsetWebPath(StringwebPath){
this.webPath=webPath;
}

publicBitmapgetBmp(){
returnbmp;
}
publicvoidsetBmp(Bitmapbmp){
this.bmp=bmp;
}

@Override
publicintdescribeContents(){
return0;
}
@Override
publicvoidwriteToParcel(Parcelparcel,intflags){
parcel.writeString(id);
parcel.writeString(sdPath);
parcel.writeString(webPath);
bmp.writeToParcel(parcel,0);
}

publicstaticfinalParcelable.Creator<UploadPic>CREATOR=newCreator<UploadPic>(){
publicUploadPiccreateFromParcel(Parcelsource){
UploadPicpic=newUploadPic();
pic.id=source.readString();
pic.sdPath=source.readString();
pic.webPath=source.readString();//传递string数据
pic.bmp=Bitmap.CREATOR.createFromParcel(source);//传递bitmap数据
returnpic;
}
publicUploadPic[]newArray(intsize){
returnnewUploadPic[size];
}
};
}

Parcelable比Serializable效率高

parcelable也不适合传输大量图片数据

android.os.TransactionTooLargeException不适合传大量数据尤其bitmapintent跳转的时候无缝传递数据pacicl
导致原因是:Binder传输的数据太大
如果Binder的参数或返回值太大,不适合的事务缓冲区,然后调用将失败,并将被抛出TransactionTooLargeException。
解决方法:
不要将大量数据传入Binder

本文:Serializable和Parcelable的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:flex移动开发下一篇:

16 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18