当前位置: 首页 > news >正文

Android高级架构进阶之数据传输与序列化

  • 所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。

  • java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。

  • 工作流当中流程变量的几种数据类型:string、integer、short、long、double、boolean、date、binary、serializable,这就是为什么要将javabean实现序列化的原因,因为你将对象设置到流程变量中必须要实现序列化,否则会在设置流程变量的时候报错找不到该类型。

  • java对象序列化机制就是把内存中的Java对象(User之类的JavaBean)转换成二进制流。java对象序列化后可以很方便的存储或者在网络中传输。

  • Java的序列化机制是通过运行时判断类的序列化ID(serialVersionUID)来判定版本的一致性。

  • 在反序列化时,java虚拟机会通过二进制流中的serialVersionUID与本地的对应的实体类进行比较,如果相同就认为是一致的,可以进行反序列化,正确获得信息,否则抛出序列化版本不一致的异常。

  • 所以涉及到数据传输或者存储的类,严格意义上来说都要加上序列化ID,这也是一种良好的编程习惯

二、Parcelable的原理和使用方法

=======================================================================================

###2.1 Android源码中的Parcelable

/**

  • Interface for classes whose instances can be written to

  • and restored from a {@link Parcel}. Classes implementing the Parcelable

  • interface must also have a non-null static field called CREATOR

  • of a type that implements the {@link Parcelable.Creator} interface.

  • A typical implementation of Parcelable is:

  • public class MyParcelable implements Parcelable {

  • private int mData;
    
  •   public int describeContents() {
    
  •     return 0;
    
  • }
    
  • public void writeToParcel(Parcel out, int flags) {
    
  •     out.writeInt(mData);
    
  • }
    
  • public static final Parcelable.Creator<MyParcelable> CREATOR
    
  •         = new Parcelable.Creator<MyParcelable>() {
    
  •     public MyParcelable createFromParcel(Parcel in) {
    
  •         return new MyParcelable(in);
    
  •     }
    
  •     public MyParcelable[] newArray(int size) {
    
  •         return new MyParcelable[size];
    
    <
http://www.xdnf.cn/news/843805.html

相关文章:

  • 现今最强引擎对比!虚幻3 vs CE2 vs 寒霜2.0
  • 我是开发顶贴机的qq是525—093-551十二年工作经验
  • (AVG)Antivirus 如何卸载
  • java uniqueresult_Hibernate之Query接口的uniqueResult()方法详解
  • 基于Android的小说在线阅读器软件APP
  • 企业级大数据安全架构(八)FreeIPA高可用部署
  • android+4.2系统,Android 4.2系统全面解析
  • asp毕业设计——基于asp+access的教师信息管理系统设计与实现(毕业论文+程序源码)——教师信息管理系统
  • final swfplayer安卓10/11/12上都能播放flash播放器源码
  • 网站建设软件开发小程序制作|企业APP定制
  • 腾讯云阿里云云服务器 Linux 操作系统 BT 宝塔面板快速建站教程
  • 利用linux BT5来破解无线 破解无线
  • Android 10.0 systemui状态栏充电状态下电池电量100%时显示闪电图标问题解决
  • R语言基本操作
  • 连连看外挂制作 —— 无限时间(2)
  • 2024年AI赚钱全攻略:这些方法,让你的月收入翻几番!
  • Now in Android | 12 月刊 · 2019
  • 利用requests-BeautifulSoupJson 爬取股票代码、名称、当日开收盘价格
  • 在ROS2-foxy环境中配置nooploop-linktrack
  • Android开发新手入门教程,积累总结
  • PostScript语言教程(六、图形变换)
  • 【安卓】Android开发入门 你的第一个apk应用
  • 睡眠与养生
  • 微软最牛MS08-067漏洞各系统补丁下载地址
  • 移动端APP测试方法
  • 《与凤行》特效制作:互动科技引领沉浸式仙侠新纪元
  • LOGISTIC回归分析
  • Dart 语言简述
  • 计算机桌面游戏开发,桌面游戏菜单怎么做
  • 斥候密报_魔兽世界:解锁德拉诺飞行成就指南,并有宝箱插件分享