浅析基于Android的大文本阅读器

来源 :电脑迷 | 被引量 : 0次 | 上传用户:quiet11
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要 Android是市场占有率最大的一个平台,Android平台下的APP也各式各样,各种各样的文本阅读器也随之产生。传统IO流与NIO流相差甚大,但在JDK 1.4 中原来的 I/O 包和 NIO 已经很好地集成了,所以即使采用传统IO流的方式读取速度也不会相差很大。读取方式需要采取分块读取的方式,否则会很占内存。文本阅读器还需要解决的问题有编码问题,一个好的文本阅读器应该支持多种编码格式的文本。
  关键词 Android IO 文本阅读器 编码
  中图分类号:TP3 文献标识码:A
  现如今,移动市场发展十分迅速,而Android是移动市场中所占比例最大的一个平台。截至2013年年底,Android的市场占有率从2012年的68.8%提升至78.9%,而苹果的IOS则从2012年的19.4%下降到15.5%,Microsoft的Windows Phone则从2.7%上升到3.6%。可以看出,在智能手机市场已经接近饱和的情况下,IOS平台和WP平台小幅波动下,Android平台在上升了10个百分点,实属不易。相较于IOS,Android系统比较开放,比较大众化,而且支持Android系统的手机也比较多,所以很多人愿意选择系统。
  对于Android而言,Android应用程序是JAVA语言编写的。同时,对于JAVA语言而言,Android平台的出现,让JAVA语言重生,因为Android平台应用开发的语言就是JAVA,这让许多痴迷于APP开发的开发者们都纷纷深入了解JAVA。
  Android响应速度主要指的是JVM,即JAVA 虚拟机的速度。随着各式各样的APP的风靡,文本阅读器也随处可见。对于大文本来说,文本阅读器的性能好坏就体现在响应速度上。
  对于手机等移动设备来说,运行内存实在有限。所以,处理起各种应用来最需要保证的就是占用内存不能太大。而对于文本阅读器来说,如果用传统的方式去读取,然后将读取到的全部存起来,如果这个文本有1G,那么这个程序就该被列入最烂APP排行榜了。
  所以,Android文本阅读器需要最解决的问题就是内存的问题。所以现在的解决方案就是,少读取到内存。但是文本阅读是一个动态的过程,没有一个开发者会知道每一个使用者每次会读多少的文本,会读多大的文本。所以必须有一个合适的算法,来进行对这个未知的文本进行读取。
  对于JAVA而言,读取文件需要的就是IO流。在J2SE1.4以上版本中发布了全新的I/O类库,即NIO包。选取使用哪种IO流对文本阅读器的速度也有很大的影响。在传统I O流是面向流的,就是说这种流真的像流水一般,过去了就不能往回流。而NIO是面向缓冲的,它读到的数据会存到一个缓冲区里。有了这个缓冲区事情就好办了,必要的时候,它可以在缓冲区里前后移动。这就使得流使用起来方便了许多。除此之外,传统IO流都是阻塞的,当一个线程调用了读或者写的方法的时候,该线程就会阻塞,直至数据完全取得或者数据完全写入。这就降低了效率,而NIO是非阻塞的。当该线程启动了流之后,该线程不需要等待数据完全取得或者完全写入,就可以执行其他的操作。经过不完全准确测试,读取一个10M的文本,使用NIO的所需要的平均时间为2秒,而使用传统IO则平均需要3秒。
  但在JDK1.4中原来的I/O包和NIO已经很好地集成了。java.io.* 已经以 NIO 为基础重新实现了,所以现在它可以利用 NIO 的一些特性。这使得传统IO虽然面向流,但是处理速度提高了不少。
  这个时候还会遇到的一个问题是编码问题,文档的编码方式有很多,一个文本阅读器应支持多种编码。解决编码问题的方式有多种,可以通过读取文件头来判断。对于txt文档来说,如果只需要支持UTF-8,Unicode和GBK的话,只需要读取文件的头两个字节就可以了。网上也有一些开源的判断编码的jar包,比如说cpdetector.jar等。但是读取文件头是一种很不错的选择,因为相较于调用开源的jar包,读取文件头的方式十分快速。
  再回到分块读取的问题上来。无论采用哪种流进行分块读取,定位都是一个很棘手的问题,比如说以字节读取,那么就要根据编码来处理定位,否则就会出现乱码。如果直接读取字符,比如说BufferedDRead里面的readline()方法。根据这种方法读取虽然不会出现乱码的问题,但是定位起来相当麻烦。但是采用内存映射还是一种不错的方法。
  一个文本阅读器的实现方法有很多种,基于Android的文本阅读器需要考虑的最基本问题就是以上提出的用哪种流,如何编码以及如何定位问题。
  参考文献
  [1] 熊健.基于Android平台的企业移动应用开发框架的分析与设计[J].软件,2012,33(11).
  [2] 姚昱曼,刘卫国. Android的架构与应用开发研究[M].湖南《计算机与现代化》2008,11.
  [3] 李刚. 疯狂Android讲义(第2版).电子工业出版社,2013,3.
  [4] 景宝玉.2010中国移动应用开发现状与趋势大调查,2011.
  [5] ITEYE.技术网站. http://www.iteye.com/
  [6] JavaEE.技术社区.http://www.j2eedv3.com/
其他文献
标准格式精简了电路板开发人员的设计以及排版的规程;同时,由于板卡产品的长期可获得性,机械设备的生产商及其客户也获益匪浅。在关于工业板卡、单板计算机(SBCs)以及嵌入式
课外阅读的开展,是课堂教学的保障,是课堂教学的延伸!针对中职学生课外阅读存在的急需解决的问题,中职学生开展课外阅读的关键在于导读:以主题推荐书目;制订详细的读书计划;
摘 要 路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,并能够高速的选择信息传送的线路,大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。  关键词 路由器 IP地址 寻径 转发  中图分类号:TP3 文献标识码:A  1路由器的工作原理  网络中的设备用它们
“巴蜀五君”指柏桦、欧阳江河、翟永明、张枣、钟鸣五位诗人。在八十年代诗歌团体盛行的四川,这五位诗人也因潮流所趋、他们彼此间的关系和他们的写作水准而得“五君”称号,尽
仔细分析制造商的资料,找出对于你的流程到底什么是最重要的。为新的流程或是改进过的流程选择相应的设备是一件很困难的事情,特别是当这个流程包括不熟悉的领域时。例如一个人有流量或压力测量的经验,也许会认为温度传感器比较棘手。当面临一个新的应用领域时,该如何着手完成这个流程呢?
摘 要 本文主要介绍在办公环境中多台电脑怎样共享一台打印机,以及打印机在使用过程中如果出现无反应的状况应如何去解决。  关键词 局域网 打印机 共享  中图分类号:TP3 文献标识码:A  打印机的共享在当下的局域网办公环境中非常常见,几台电脑共用一台打印机是有效节约能源与资源的好方法。可有时办公室的某台电脑会出现各种各样的问题不得不需要重做系统,而等系统重新装好后软件安装或其他设置等等一切都得重
《中国监察》是邓小平同志题写刊名,中央纪委、监察部主管的唯一面向国内外公开发行的全国纪检监察工作综合指导性期刊,是中央重点党 “China Surveillance” is the only c
高原的天空离大地是那么近,穹顶的湛蓝仿佛随时全都要倾泻到那一片片金黄的青稞田里。白白的云朵似乎用手就能摸得着,一伸手,它却调皮地跑开了,云在走,有风。风吹过,一株株簇
魏晋南北朝是中国历史上一个政权林立、战乱频仍的时代,因此这个时代的文学受到大环境的影响,产生了一些独特的特点,有别于其他时代的文学现象。又因为当时处于中国文化发展的转
引言rn目前,在嵌入式处理器芯片中,以ARM7为核心的处理器是应用较多的一种.它具有多种工作模式,并且支持两种不同的指令集(标准32位ARM指令集和16位Thumb指令集).μC/OS-II是