说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android高性能文件类MemoryFile

HTML文档下载 WORD文档下载 PDF文档下载
Android高性能文件类MemoryFile

作者:Android开发网


  很多网友抱怨Android处理底层I/O性能不是很理想,如果不想使用NDK则可以通过MemoryFile类实现高性能的文件读写操作。MemoryFile顾名思义就是内存文件的意思,如果你过去从事过Win32开发,那么它的原理就是MapViewOfFile(),当然开发过Linux的网友可能很快就联想到了mmap(),是的该类就是他们的托管代码层封装,位于android.os.MemoryFile这个位置,从Android 1.0开始就被支持。

  MemoryFile适用于哪些地方呢?

  对于I/O需要频繁操作的,主要是和外部存储相关的I/O操作,MemoryFile通过将 NAND或SD卡上的文件,分段映射到内存中进行修改处理,这样就用高速的RAM代替了ROM或SD卡,性能自然提高不少,对于Android手机而言同时还减少了电量消耗。Android123提示网友该类实现的功能不是很多,直接从Object上继承,通过JNI的方式直接在C底层执行。

 主要的构造方法 MemoryFile(String name, int length) ,这里第二个参数为文件大小,需要说明的是Android的MemoryFile和传统的mmap还有一点点区别,毕竟是手机,它内部的内存管理方式ashmem会从内核中回收资源。毕竟目前部分低端机型的RAM也比较吃紧。 

synchronized boolean  allowPurging(boolean allowPurging)  //允许ashmem清理内存,线程安全同步的方式。
 
void  close() //关闭,因为在Linux内部mmap占用一个句柄,不用时一定要释放了
 
InputStream  getInputStream()  返回读取的内容用Java层的InputStream保存
 
OutputStream  getOutputStream()  把一个OutputSream写入到MemoryFile中
 
boolean  isPurgingAllowed() //判断是否允许清理
 
int  length()  //返回内存映射文件大小

下面就是我们熟悉的,读写细节,主要是对字符数组的操作,这里大家要计算好每个文件类型的占用,同时考虑到效率对于自己分配的大小考虑粒度对齐。
 
int  readBytes(byte[] buffer, int srcOffset, int destOffset, int count)
 
void  writeBytes(byte[] buffer, int srcOffset, int destOffset, int count)  

  具体的实际应用,Android开发网将在下次和大家讲到。

判断Windows类型和版本-Delphi资料 判断一个程序是否dos版本:-Delphi资料 屏蔽系统按键-Delphi资料 屏幕抓字技术揭密(转载)-Delphi资料 启动控制面板-Delphi资料 取得系统所有窗口的方法-Delphi资料 全部窗体可使用鼠标点中移动-Delphi资料 让图像旋转-Delphi资料 热启动控制-Delphi资料 如果隐藏和显示Windows的任务条-Delphi资料 如何把文件删除到回收站中-Delphi资料 如何从任务栏上隐藏应用程序的按纽?-Delphi资料 如何得到Windows 的temp路径-Delphi资料 如何得到WINDOWS的SYSTEM路径-Delphi资料 如何得到上一个激活的组件-Delphi资料 如何得到系统目录-Delphi资料 如何得到执行程序的当前路径-Delphi资料 如何访问一个进程的内存空间-Delphi资料 如何关CD机的门?-Delphi资料 如何关闭外部开启的应用程序-Delphi资料 如何获得系统内存的有关信息?-Delphi资料 如何获取硬盘的ID-Delphi资料 如何检查软驱中的软盘和光驱的光盘是否发生变化。-Delphi资料 如何检查一个驱动器是否就绪?并且不出现错误信息-Delphi资料 如何将Wav文件做到EXE文件里-Delphi资料 如何将你的程序放在Windows启动中-Delphi资料 如何控制Ctrl+Alt+Del键-Delphi资料 如何控制壁纸-Delphi资料 如何控制关闭Windows-Delphi资料 如何屏蔽系统功能键-Delphi资料 如何取得Windows的临时文件目录?-Delphi资料 我想配置AMD系统,价格在4000元,不知道谁可以给我配置一下!!!性能要好,速度要快!!! 软件大师论共享 如何保存修改过的shp文件 bean中输出的表格与jsp中的表格的嵌套如何解决(高分相送,在线等待) CArchive& AFXAPI operator>>(CArchive& ar,class_name* &pOb)是什么意思 上班一个月,领工资发现加了100,感觉不错 小问题,大家帮帮忙! 请问怎样用命令代替手工来打开treeview的下一层节点? JBuilder运行与数据库连接程序的问题 增样用ASP调用sql server数据库。 谁有Tomcat中使用连接池的完整的例子,主要是在代码中如何关闭连接池? 寻求,批量处理图像尺寸大小的控件!!(vb和vb.net)100分 关于asp与jsp的兼容 急救 请教,我安装了java sdk后又安装了oracle 8,为什么安装后就有‘java.exe 错误,内存只读的错误’? 如何把數據庫中查詢得到的表導入到excel生成報表? 请问用MAIL如何写信 我也来出一道智力题,30分钟内做不出的只有高中生水平 如何在VC中打开别一个窗口或DIALOG 请问Sendmail是否是SOLARIS中必要的 关于代码动态编译的问题,bucher (无人永生) 以及所有会这方面的人请进!!!急!!! Duvessa发布基于用例的估算工具 log4j问题 Borland发布C++ BuilderX整合UML 关于动态创建数据窗口的问题,请各位大虾帮忙,答对的给100分 请教关于打包的问题? 【【【 asp.net 中Excel现程怎么杀掉!!!! 】】】 如何在HTML中嵌入ftpClient功能 請求幫助 一个关于父子进程的问题,请大家帮帮忙好吗?急死我了! 【调查】看看你对流行音乐到底懂得多少? 有没有办法禁止类似用CCPROXY的非法代理? CSS的使用问题 怎样适用odbc连接远程access? DelPhi的错误! 如何通过共享Model上网? 用FileSystemObject 写多行txt,如何实现换行写入??? 你的邮箱已经被别人使用,请使用一个DOMINO服务器,如何解决? 清空文本文件 我编写了一个dos批处理文件bat,要在bat文件运行后自动关闭dos窗口怎么办? 急救:机器出问题了,大家帮忙看看 谁能谈谈XP的激活问题!? 有问题的问题1 有问题的问题 安装visual studio.net 2003 的问题? 急件!请教了,如何在一个字符串中提取第n次出现的字符? weblogic及EJB属于中间层的吗? 到水园第一件事就是看看斑竹有没有换,嘻嘻,还有谁也是这样的? win2000装好后,设了本地连接的属性,和别的机器一样的设,可就是PING 不通网关 哪有“VB.NET高级编程”和“ADO.NET高级编程”下载?? 请各位帮忙找一个用asp.net写的日历,急用 求过点P(3,2)且在两条坐标轴上的截距和为0的直线方程是 diet和food的区别 一如即往的意思是什么? 有没有与类似“悲伤逆流成河”“温存如同往昔”“往事并不如烟”的网名求与“悲伤逆流成河”“温存如同往昔”“往事并不如烟”类似的网名,要有意境,大概5,6个字把 温存的意思 温存什么意思 谁知道卡布奇诺是什么意思啊? 如同常人是什么意思? 一如—— 一如—— 一如后面加两个字,代表以前的意思,只用两个, 英语翻译翻译 谢谢你的提醒,错误已经被更正.我很感兴趣你推荐的产品,请发给我关于它的详细信息.请英语达人翻译一下,尽量专业化和本地化点,别chinese英语. 组一组词 例:人-从-众快!作业急用!两组.zz 美国在罗马尼亚反导基地开工建设【高清暴风雨影响法国数万家庭用电暴风雨影响法国数万家庭用电16岁少女网聊遭2名男子下药轮奸 醒男子将手伸进女子短裤乱摸日媒:中日论坛达成共识力避冲突 赵启中央财政采取多种措施 加快拨付农业综斯诺克国锦赛丁俊晖晋级次轮 手握赛点跨境电商游走政策灰色地带 诸多问题仍“永康车王”陈宏辉集资诈骗14亿 被能源局施压国网加码治顽疾 规划滞后等保利东江首府一线江景洋房国庆开盘 带水电表跑得快?到计量部门检测《分手木马计》 拍吻戏没有福利,就是颐和地产 山水社区彰显自然文化底蕴关外嬗变6贴品牌商标变身“正品”千名电商大佬聚会松山湖熟悉的陌生人伪装成“大肚婆”逛超市 女子一天盗窃2007 低保标准全国最高象牙饰品埋入奶粉 海关关员慧眼识破冒牌天师证极道梦的下一站净土梦悄悄的温柔最后的战队噬神之无尽的游戏暮光传奇:暮光之城·月食天剑伦红杏枝头法剑仙途天宁寺旅游殷墟旅游蒲石河森林公园旅游阳澄湖旅游下板寺旅游大爷海旅游拔仙台旅游药王殿旅游南天门旅游苏州民俗博物馆旅游怡园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘