发明内容
本发明提供一种基于Android系统的用于人机交互APP应用的实现方法及交互系统,解决了商品图片缓存、调用速度较慢,不同屏幕分辨率下整体UI布局适配易出错的技术问题。
为了解决上述技术问题,本发明提供了一种基于Android系统的用于人机交互APP应用的实现方法,其特征在于,包括用于移动终端对下载的文件的加载方法,所述加载方法为通过双缓存方式先将下载的文件进行缓存后再行加载,包括以下步骤:
S1:从服务器下载文件;
S2:将所述文件同时存储入所述移动终端的内置存储单元和外部存储单元中;
S3:当加载存储的所述文件时,先从所述内置存储单元中读取,如读取成功则加载,如未读取成功则从所述外部存储单元中继续读取并加载。
作为优选,所述文件为图片文件;其中,步骤S2具体为:
将所述图片文件存入缓存区,所述缓存区通过Android系统提供的LruCache类在所述内置存储单元中定义;
同时通过Android系统提供的DiskLruCache类将所述图片文件保存到所述外部存储单元上作为缓存文件。
作为优选,当删除加载后的图片时将同时删除所述缓存区中相应的图片数据和所述外部存储单元中相应的所述缓存文件。
作为优选,还包括用于对移动终端的用户界面布局的生成方法,该生成方法为通过Android系统提供的Fragment组件动态地添加、移除和/或替换框架,在不同分辨率的屏幕上针对不同区域的用户界面布局生成相适配的布局文件,以对用户界面布局进行调整。
作为优选,所述生成方法还包括在对用户界面布局进行调整后的清除之前已经完成的用户界面的渲染效果以释放存储空间的步骤。
本发明还提供了一种APP应用的交互系统,采用如上所述的基于Android系统的用于人机交互APP应用的实现方法进行人机交互,所述交互系统包括:
通讯模块,用于与所述服务器通讯连接并下载文件;
存储控制模块,包括控制单元、加载单元和所述内置存储单元和外部存储单元,所述内置存储单元和外部存储单元用于存储所述文件;所述控制单元用于当所述加载单元加载所述文件时,控制所述加载单元先从所述内置存储单元中读取,如读取成功则加载,如未读取成功则从所述外部存储单元中继续读取并加载;
显示模块,用于显示所述文件的信息。
与现有技术相比,本发明的基于Android系统的用于人机交互APP应用的实现方法及交互系统的有益效果在于:本发明可应用于网络商城上购物类安卓APP上(移动互联网购物应用的安卓APP),通过使用双缓存技术来存储商品图片,使用Fragment组件完成整体UI布局及渲染效果。通过相比于现有技术更加合理的技术架构,使整个商城安卓APP在处理商品图片缓存、调用时更高效,相应速度更快,用户在使用APP时操作更加流畅,在网络环境正常情况下不会出现加载商品数据过慢的现象;Fragment组件的使用让商城安卓APP在屏幕分辨率不同的安卓终端上,UI布局依旧正常,不会出现UI布局错乱、异常现象。商城安卓APP在不同屏幕分辨率的终端上依旧有良好的交互效果。
具体实施方式
下面结合附图和具体实施例对本发明的实施例的基于Android系统的用于人机交互APP应用的实现方法及交互系统作进一步详细描述,但不作为对本发明的限定。
图1为本发明的实施例的基于Android系统的用于人机交互APP应用的实现方法的流程示意图。如图1所示,本发明的实施例的基于Android系统的用于人机交互APP应用的实现方法,包括用于移动终端对下载的文件的加载方法,加载方法通过双缓存方式先将下载的文件进行缓存后,再行加载,包括以下步骤:
S1:从服务器下载文件;
S2:将文件同时存储入移动终端的内置存储单元和外部存储单元中;
S3:当加载存储的文件时,先从内置存储单元中读取,如读取成功则加载,如未读取成功则从外部存储单元中继续读取并加载。
本发明的实施例的基于Android系统的用于人机交互APP应用的实现方法可应用到网络商城上购物类安卓APP上(移动互联网购物应用的安卓APP),通过使用双缓存技术来存储服务器和移动终端之间传输的文件,调用时更高效,相应速度更快。
众所周知,目前网络商城的信息量巨大,尤其是用户在商城购物时,需要浏览大量的商品图片。当用户浏览多个商品或多张图片时,会造成图片调用时间过长,APP展示商品数据需要等待较长时间,导致用户操作不够流畅。作为本实施例的一种改进,文件为图片文件;其中,步骤S2具体为:
将图片文件存入所述缓存区,缓存区通过Android系统提供的LruCache类在内置存储单元中定义,包括划分缓存区以及定义其缓存空间的容量大小;
同时通过Android系统提供的DiskLruCache类将图片文件保存到外部存储单元上作为缓存文件。
在用户界面(UI)加载一张图片时很简单,但是当需要加载多张较大的图像,就需要对图片加载过程进行相应的处理。屏幕上的图片的总数伴随屏幕上滚动的骤然增加,且基本上是无限的。为使内存使用保持在稳定范围内,保证页面的流畅性和响应速度,通过移动终端内存、磁盘的缓存就可以快速加载已从服务器上下载的图片。
通过内存缓存可以快速加载缓存图片,但会消耗应用的内存空间。LruCache类(通过兼容包可以支持到sdk4)很适合做图片缓存,它通过LinkedHashMap保持图片的强引用方式存储图片,当缓存空间超过设置定的限值时会释放掉早期的缓存。通过LruCache类的内存缓存方案没有固定的模式使用所有的的应用,需要根据应用的具体应用场景进行分析,选择合适的方案来做,缓存区的缓存空间太小不能发挥缓存的优势,而太大可能占用过多的内存,降低应用性能,或者发生内存溢出异常。运用LruCache向ImageView添加图片时首先先检查图片 是否存在,如果在直接更行ImageView,否则通过后台线程加载图片。BitmapWorkerTask需要将加载的图片添加到缓存中。在实际定义LruCache类的过程中,可以参考Android系统开放式源代码,根据设备实际的硬件配置进行相应的参数设置。
内存缓存对访问最近使用的图片时很高效,但是不能保证它一直会在缓存中。像GirdView这样大数据量的组件很容易充满内存缓存。一些应用可能会被“来电”打断,在后台时可能会被杀掉,内存缓存就会失效,一旦用户重新回到应用中时,就需要重新处理每个图片。在这种情况下可以运用磁盘缓存存储已处理的图片,当图片不再内存中时,减少重新加载的时间,当然从磁盘加载图片时要比内存中慢,需要在后台线程中做,因为磁盘的读取时间是未知的。
DiskLruCache类是Android提供的一个管理磁盘缓存的类。该类可用于在程序中把从网络加载的数据保存到磁盘上作为缓存数据,例如一个显示网络图片的gridView,可对从网络加载的图片进行缓存,提高程序的可用性。例如对于一组从网络加载的图片进行缓存,则在DiskLruCache的工作目录下面,可以看到对图片的缓存文件。DiskLruCache类工作过程大概可以概括如下(相应的实现方式可以参考Android系统开放式源代码):
1、初始化DiskLruCache:初始化DiskLruCache时,会调用该类中的一个静态函数:open;在初始化过程中,如果之前已经创建过该缓存,则通过存在的journal文件构建已有的entry列表(其中涉及的方法可在DisklruCache中进行查看),否则则创建一个新的journal文件,调用rebuildJournal方法。
2、查找是否存在一个key所对应的缓存文件:该功能调用了DiskLruCache测get方法,来查找DiskLruCache中是否存在该key对应的Snapshot,若返回的snapshot不为空,则可通过snapshot的inputstream来读取缓存文件的内容;若snapshot为空,表明该key对应的文件不在缓存中。
3、向DiskLruCache中写入一条entry:该功能首先会调用edit方法,返回一个Editor,该函数会针对该key创建一个entry,并将该entry加入lruEntries中,并创建一个相应的Editor,同时在journal文件中加入一条对该key的DIRTY记录。其次,上面的功能通过Editor返回一个该key所对应的文件的输出流,并将文件保存到输出流中。最后,会调用edit的commit方法,而commit方法调用了DiskLruCache中的completeEdit方法。该函数主要会根据保存缓存文件的大小更新DiskLruCache的总大小,并且在journal文件对该key加入CLEAN的log,最后会判断DiskLruCache的总大小是否超过maxSize,以便对缓存进行清理。
以上,优先从内置存储单元(内存)中读取图片数据提高了图片调用的响应速度;当在内存中无法找到商品图片,可以从外部存储单元(存储卡)中读取图片数据,保证图片数据调用的稳定性。内存缓存检查在UI线程中做,磁盘缓存的检查在后台线程中。硬盘操作不应在UI线程中。图片处理完成后应将其加入正在使用的内存、磁盘缓存中。
本实施例利用Android系统提供的LruCache类和DiskLruCache类,通过相比于现有技术更加合理的技术架构,使整个商城安卓APP在处理商品图片缓存、调用时更高效,相应速度更快,用户在使用APP时操作更加流畅,在网络环境正常情况下不会出现加载商品数据过慢的现象。
作为进一步的改进,本发明的基于Android系统的用于人机交互APP应用的实现方法中,当删除加载后的图片时将同时删除缓存区中相应的图片数据和外部存储单元中相应的缓存文件,进一步提高程序效率。
作为另一种改进,本发明的基于Android系统的用于人机交互APP应用的实现方法还包括用于对移动终端的用户界面布局的生成方法,该生成方法为通过Android系统提供的Fragment组件动态地添加、移 除和/或替换框架,在不同分辨率的屏幕上针对不同区域的用户界面布局生成相适配的布局文件,以对用户界面布局进行调整。
Android3.0中引入fragments(片段),是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments。fragments的设计不需要用户来亲自管理view hierarchy的复杂变化,通过将Activity的布局分散到frament中,可以在运行时修改activity的外观,并且由activity管理的back stack中保存些变化。在设计应用时特别是Android应用,有众多的分辨率要去适应,而fragments可以让用户在屏幕不同的屏幕上动态管理UI。例如:通讯应用程序(QQ),用户列表可以在左边,消息窗口在右边的设计。而在手机屏幕用户列表填充屏幕当点击某一用户时,则弹出对话窗口的设计。
通过使用Fragment组件完成整体UI布局及渲染效果,让商城安卓APP在屏幕分辨率不同的安卓终端上,UI布局依旧正常,不会出现UI布局错乱、异常现象。商城安卓APP在不同屏幕分辨率的终端上依旧有良好的交互效果。
作为本实施例的优选方案,用于对移动终端的用户界面布局的生成方法还包括在对用户界面布局进行调整后的清除之前已经完成的用户界面的渲染效果以释放存储空间的步骤,使APP运行更流畅。
如图2所示为本发明的实施例的APP应用的交互系统的整体架构示意图,本发明还公开了一种APP应用的交互系统,采用如上的基于Android系统的用于人机交互APP应用的实现方法进行人机交互,交互系统包括:
通讯模块,用于与服务器通讯连接并下载文件;
存储控制模块,包括控制单元、加载单元和内置存储单元和外部存储单元,内置存储单元和外部存储单元用于存储文件;控制单元用于当加载单元加载文件时,控制加载单元先从内置存储单元中读取, 如读取成功则加载,如未读取成功则从外部存储单元中继续读取并加载;
显示模块,用于显示文件的信息。
本发明的基于Android系统的用于人机交互APP应用的实现方法及交互系统的有益效果在于:本发明可应用于网络商城上购物类安卓APP上(移动互联网购物应用的安卓APP),通过使用双缓存技术来存储商品图片,使用Fragment组件完成整体UI布局及渲染效果。通过相比于现有技术更加合理的技术架构,使整个商城安卓APP在处理商品图片缓存、调用时更高效,相应速度更快,用户在使用APP时操作更加流畅,在网络环境正常情况下不会出现加载商品数据过慢的现象;Fragment组件的使用让商城安卓APP在屏幕分辨率不同的安卓终端上,UI布局依旧正常,不会出现UI布局错乱、异常现象。商城安卓APP在不同屏幕分辨率的终端上依旧有良好的交互效果。双缓存技术提高了商品图片调用的响应速度,还保证了图片调用的稳定性;Fragment组件进行UI布局,对UI进行模块化开发,提高开发效率。对于APP用户,使用不同屏幕分辨率的安卓终端时,APP的布局会保持高质量。同时清除不用的渲染效果释放运存空间,让APP运行更流畅。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。