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

转载于:https://blog.51cto.com/lyp634959848/1335606

Serializable和Parcelable相关推荐

  1. 包含c语言的序列化字符,Android Serializable与Parcelable原理与区别

    一.序列化.反序列化是什么? (1) 名词解释 对象的序列化 : 把Java对象转换为字节序列并存储至一个储存媒介的过程. 对象的反序列化:把字节序列恢复为Java对象的过程. (2) 序列化详细解释 ...

  2. ​Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

    Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...

  3. [android] Serializable 和 Parcelable 区别

    android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable. 一 序列化原因: 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.通过序 ...

  4. Android Serializable与Parcelable原理与区别

    2019独角兽企业重金招聘Python工程师标准>>> 一.序列化.反序列化是什么? (1) 名词解释 对象的序列化 : 把Java对象转换为字节序列并存储至一个储存媒介的过程. 对 ...

  5. android对象序列化的方法,Android 进阶-两种序列化方式 Serializable 和 Parcelable

    [导读]序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态 ...

  6. 序列化Serializable、Parcelable

    序列化的概念: 所谓序列化就是将对象变成二进制流,便于存储和传输. 为什么要序列化和反序列化? 当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二 ...

  7. java parcelable_Java Serializable和Parcelable详解及实例代码

    对 Serializable和Parcelable理解 1.首先他们两个接口都是为了实现对象的序列化,使之可以传递,所谓序列化就是将对象信息装换成可以存储的介质的过程. 2.Serializable是 ...

  8. android 保存 parcelable对象,Android 使用序列化Serializable和Parcelable

    Android 序列化Serializable和Parcelable使用和区别 一:Serializable 1.什么是序列化 将一个类对象转换成可存储,可传输状态的过程. 2.什么是Serializ ...

  9. Android中的Serializable和Parcelable序列化

    Serializable和Parcelable接口都可以完成对象的序列化过程,在Android中当我们需要通过Intent和Binder传输数据时,我们要传输的对象就需要使用Serializable和 ...

  10. java parcelable list_Android中Serializable和Parcelable序列化对象详解

    学习内容: 1.序列化的目的 2.Android中序列化的两种方式 3.Parcelable与Serializable的性能比较 4.Android中如何使用Parcelable进行序列化操作 5.P ...

最新文章

  1. JVM运行时数据区---堆(堆内存)
  2. tf.keras.losses.SparseCategoricalCrossentropy() 稀疏交叉熵 损失函数 示例
  3. 松果出行CTO朱蓝天做客《智慧Talk》,解开共享电单车产研密码
  4. ElementUI改变el-table的表头颜色以及各行的颜色
  5. ZOJ Problem Set - 1730 Crazy Tea Party
  6. 百度网页移动端html,百度移动端开始用网站品牌名代替网址显示
  7. vs 中自带的代码混淆器 Dotfuscator (图)
  8. 洛谷P1007 独木桥(贪心)
  9. sql表达式_SQL表达式
  10. debian 修改apache2 https 端口为11443
  11. mac降级safari_如何在Mac上的Safari中将网页另存为PDF
  12. linux测试网络带宽 360,Linux版360浏览器提示此为beta测试版本,已超过测试时间3个月的处理...
  13. 黑客入侵香港中文大学网 师生资料被盗
  14. 如何画好业务架构图。
  15. java 实现word文档合并(支持文档中有图片和表格)
  16. 【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
  17. Konga arm64 安装
  18. Unity打包exe文件流程
  19. QMenu 设置菜单图标 生成菜单树
  20. CCD自动对位COG绑定设备应用案例

热门文章

  1. 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题
  2. 基于Docker搭建Percona XtraDB Cluster数据库集群
  3. 变动性算法源代码分析与使用示例(copy_backward、 transform、 replace_copy_if 等)
  4. 解读Facebook CAN:如何给人工智能赋予艺术创作的力量
  5. 程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?
  6. 真希望永远用不到这些代码
  7. python 异常处理模块_扩展Python模块系列(五)----异常和错误处理
  8. timertask run函数未执行_图执行模式下的 TensorFlow 2
  9. Linux基础监控小工具nmon
  10. saltstack 主题说明