温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Serializable和Parcelable

发布时间:2020-07-02 03:24:02 来源:网络 阅读:1060 作者:钓伯乐 栏目:开发技术

Serializable(接口)

通过intent 的bundle传递参数

Bundle bundle = new Bundle();
     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传递参数

Bundle bundle = new Bundle();
bundle.putParcelable(IntentKeys.IMG_ARR_ENVIR_IMG, mArrListEnvir_img);
intent.putExtras(bundle);

 

import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;

public class UploadPic implements Parcelable{

 private String id;
 private String sdPath;
 private String webPath;
 private Bitmap bmp;

 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getSdPath() {
  return sdPath;
 }
 public void setSdPath(String sdPath) {
  this.sdPath = sdPath;
 }
 public String getWebPath() {
  return webPath;
 }
 public void setWebPath(String webPath) {
  this.webPath = webPath;
 }

 public Bitmap getBmp() {
  return bmp;
 }
 public void setBmp(Bitmap bmp) {
  this.bmp = bmp;
 }

 @Override
 public int describeContents() {
  return 0;
 }
 @Override
 public void writeToParcel(Parcel parcel, int flags) {
  parcel.writeString(id);    
  parcel.writeString(sdPath);    
  parcel.writeString(webPath);    
  bmp.writeToParcel(parcel, 0);
 }

    public static final Parcelable.Creator<UploadPic> CREATOR = new Creator<UploadPic>() { 
           public UploadPic createFromParcel(Parcel source) { 
            UploadPic pic = new UploadPic(); 
            pic.id =  source.readString();
            pic.sdPath = source.readString();
            pic.webPath = source.readString(); //传递string数据
            pic.bmp = Bitmap.CREATOR.createFromParcel(source);//传递bitmap数据
             return pic; 
           } 
           public UploadPic[] newArray(int size) { 
               return new UploadPic[size]; 
           } 
       }; 
}

 

Parcelable比Serializable效率高

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

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

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI