作家
登录

Android中的IPC机制

作者: 来源: 2017-05-16 09:16:15 阅读 我要评论

一般来说,我们应当手动指定serialVersionUID的值,如1L,也可以根据自身构造主动去生成它的hash值,如许序列豢?状序列化时两者的serialVersionUID是雷同的。如不雅不指定serialVersionUID的值,反序列化时当前类有所改变,比如增长或者删除了某些成员变量,那么体系就会从新计算当前类型的hash值并把它赋值给serialVersionUID,这个时刻当前类的serialVersionUID就和序列化数据中的serialVersionUID不一致,于是反序列化掉败,法度榜样就会出现crash。所以避免反序列化过程的掉败。比如当版本进级后,我们很可能删除了某个成员变量也可能增长了一些新的成员变量,这个时刻序列化过程仍然可以或许成功,法度榜样可以最大年夜限度地恢复数据,相反,如不雅不指定serialVersionUID的话,法度榜样则会挂掉落。当然我们还要推敲别的一种情况,如不雅类的构造产生了非惯例性的改变,比如修改潦攀类名,修改了成员变量的类型,这个时刻尽管serialVersionUID验证经由过程,然则反序列化照样会掉败,因为类构造有了息灭性的改变,根本无法大年夜老版本的数据中还原出一个新的类构造对象。

静态成员变量属于类不属于对象,所以不会介入序列化过程,其次用transient关键字标记的成员变量不介入序列化设备。

- Parceable 接口

Parceable也是一个接口,只有实现这个接口,一个类的对象就可以实现序列化并可以经由过程Intent和Binder传递。

  1. public class User implements Parcelable { 
  2.  
  3.           public int UserId; 
  4.           public String userName; 
  5.           public boolean isMale; 
  6.  
  7.           protected User(Parcel in) { 
  8.                 //大年夜序列化后的对象中创建原始对象 
  9.               UserId = in.readInt(); 
  10.               userName = in.readString(); 
  11.               isMale = in.readByte() != 0; 
  12.           } 
  13.  
  14.           public static final Creator<User> CREATOR = new Creator<User>() { 
  15.               @Override 
  16.               public User createFromParcel(Parcel in) { 
  17.                     //大年夜序列化后的对象中创建原始对象 
  18.                   return new User(in); 
  19.               } 
  20.  
  21.               @Override 
  22.               public User[] newArray(int size

      推荐阅读

      央行成立金融科技委员会,用人工智能技术加强监管

    中国人平易近银行宣布他们在近期成立了金融科技(FinTech)委员会。金融科技是技巧驱动的金融立异,为金融成长注入了新的活力,也给金融安然带来了新挑衅。中国人平易近银行将组织深刻研究金>>>详细阅读


    本文标题:Android中的IPC机制

    地址:http://www.17bianji.com/lsqh/35226.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)