前言
基于安卓平台的序列化与反序列化封装组件Parceler (https://github.com/johncarl81/parceler),实现了鸿蒙化迁移和重构,代码已经开源到(https://gitee.com/isrc_ohos/parceler_ohos),目前已经获得了很多人的Star和Fork ,欢迎各位下载使用并提出宝贵意见!
背景
序列化是指将Java对象转换为字节序列的过程,本质上是把实体对象状态按照一定的格式写入到有序字节流;而反序列化则是将字节序列转换为Java对象的过程,本质上是从有序字节流重建对象,恢复对象状态。当两个Java进程相互通信时,就需要使用Java序列化与反序列化方法来实现进程间的对象传送。鸿蒙中Parceler_ohos组件可将不同种类型的数据进行序列化和反序列化封装,从而达到进程间对象传送的效果。
组件效果展示
Parceler_ohos组件支持多种数据的序列化和反序列化处理,包括基础数据类、数组、Map类、Set类、以及序列化数据类,各类型中包含的具体数据类如下:
- 基础数据类:int、float、String、boolean......;
- 数组:PlainArray、PlainBooleanArray;
- Map类:Map、HashMap、LinkedHashMap......;
- Set类:Set、HashSet、SortedSet......;
- 序列化数据类:Sequensable、Serializable。
组件以上述数据中的五种为例进行序列化和反序列化演示,分别是:int、float、String、plainArray、Sequenceable。
用户点击组件图标后进入“Parceler测试”主界面,该界 面包含“int测试”、“float测试”、“String测试”、“plainArray测试”、“Sequenceable测试”五个按钮。点击上述各按钮可跳转至相应类型数据的序列化和反序列化测试界面。由于这五种数据的测试步骤相同,接下来就以组件中int数据的测试效果为例进行展示。
点击“int测试”按钮进入“int格式测试”界面;再点击“开始测试”按钮,即可将事先设定好的整型测试数据“34258235”转换成序列化字节流,并将序列化结果显示在文字“序列化:”的下方;然后将字节流反序列化并输出,输出内容为序列化之前的对象“34258235”;点击“返回”按钮后则可跳转回主界面,上述测试效果如图1所示。
图1 int数据序列化与反序列化测试
Sample解析
Sample工程文件中的MainMenu文件用于构建组件应用的主界面,其他文件用于构建上述组件效果展示的五种数据的序列化和反序列化测试界面,其对应关系如图2所示。由于各种数据的测试步骤相同,下文将以int数据的序列化和反序列化测试为例进行详细讲解,其他数据类型不再赘述。
图 2 Sample中各文件与测试界面中按钮的对应关系
MainMenu文件
主界面的布局比较简单,主要是设置进入五种数据测试界面的按钮,具体步骤如下:
- 第1步:声明五种数据的测试按钮和标题。
- 第2步:创建页面布局。
- 第3步:为int数据测试按钮设置监听。
- 第4步:创建int数据测试按钮。
1、声明五种数据的测试按钮和标题
声明用于显示标题“Parceler测试”的Text文本,以及用于跳转到具体测试界面的5个Button按钮,并将它们分别按类型命名。
private Text title;//标题“Parceler测试”
private Button IntTestButton;//int数据测试按钮
private Button FloatTestButton;//float数据测试按钮
private Button StringTestButton;//String数据测试按钮
private Button PlainArrayTestButton;//PlainArray数据测试按钮
private Button SequenceableTestButton;//Sequenceable数据测试按钮
2、创建页面布局
创建一个纵向显示的整体页面布局,其宽度和高度都跟随父控件变化而调整,上下左右四个方向的填充间距依次是10/32/10/80,并设置背景颜色为白色。