ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

安卓中IO机制概要

2022-01-09 16:34:07  阅读:166  来源: 互联网

标签:Parcel IO Parcelable 安卓中 序列化 Segment Serializable 概要


安卓中IO机制概要

一、basic IO和NIO

(1)内核空间

内核:一套软件,操作系统用于支撑基础使用的功能程序

(2)数据读写的方案

内核空间对于IO的操作方案
页:4K数据为一页, 一页数据是IO操作的基本单位
空间局部性原理:在常规操作下, 如果数据量较大的情况下可能会出现预占位4~16K的情况

(3)JAVA 对于Basic IO 的支撑

(4)MappedByteBuffer缓冲区

java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于MappedByteBuffer操作大文件的方式,其读写性能极高
FileChannel提供了map方法把文件映射到虚拟内存,通常情况可以映射整个文件,如果文件比较大,可以进行分段映射。
MappedByteBuffer使用虚拟内存,因此分配(map)的内存大小不受JVM的-Xmx参数限制,但是也是有大小限制的。

(5)OKIO 采取的方案

OK在读取数据时,先从Buffer对象中获取了一个Segment,然后向Segment中读取数据,每个Segment最多可以存入8K数据。这里需要提一下Buffer中数据的数据结构,Buffer中的数据是存在于一个双向链表中,链表中的每个节点都是一个Segment...

二、安卓中IO的序列化

(1)序列化定义以及相关概念

序列化本质上其实就是将数据结构或对象转换成二进制串的过程。
反序列化本质是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程

(2)Android中序列化方案

Serializable接口
Serializable 用来标识当前类可以被 ObjectOutputStream 序列化,以及被 ObjectInputStream 反序列化。
Parcelable接口
Parcelable是Android为我们提供的序列化的接口,Parcelable相对于Serializable的使用相对复杂一些,但Parcelable的效率相对Serializable也高很多。

(3)序列化原理

(4)反序列化原理

(5)Parcelable

Parcel是什么?Parcel翻译过来是打包的意思,其实就是包装了我们需要传输的数据,然后在Binder中传输,也就是用于跨进程传输数据
简单来说,Parcel提供了一套机制,可以将序列化之后的数据写入到一个共享内存中,其他进程通过Parcel可以从这块共享内存中读出字节流,并反序列化成对象。
Parcel可以包含原始数据类型(用各种对应的方法写入,比如writeInt(),writeFloat()等),可以包含Parcelable对象,它还包含了一个活动的IBinder对象的引用,这个引用导致另一端接收到一个指向这个IBinder的代理IBinder。

Parcelable通过Parcel实现了read和write的方法,从而实现序列化和反序列化

标签:Parcel,IO,Parcelable,安卓中,序列化,Segment,Serializable,概要
来源: https://www.cnblogs.com/baorantHome/p/15781230.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有