Serializable和Parcelable
导读:本文共1440.5字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: Serializable(接口)通过intent的bundle传递参数Bundlebundle=newBundle();bundle.putSerializable(IntentKeys.IMG_ARR_ENVIR_IMG,mArrListEnvir_img);intent.putExtras(bundle);mListEnvir=(ArrayList<E... ...
目录
(为您整理了一些要点),点击可以直达。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的详细内容,希望对您有所帮助,信息来源于网络。