数据加载方法及装置的制造方法

文档序号:8512475阅读:226来源:国知局
数据加载方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据处理技术领域,特别是涉及一种数据加载方法、数据加载装置。
【背景技术】
[0002]在通信规划设计中,经常需要对基站信息以及其周围情况进行勘察,以收集有用数据辅助规划设计。得益于智能终端的出现和相关工艺的改进,所有作业流程现在均可以在智能终端上完成。相较于传统勘察工具的数据采集方式,智能终端的数据采集方式更加尚效快捷。
[0003]由于行业性质决定,很多时候需要大量用到高像素拍照、图片快速预览、视频拍摄以及录制等,并且需要将收集的信息打包回传给后台服务器,整个过程均需要在智能终端上完成。而目前智能终端的应用分配的内存有限,在加载大容量数据时,不但数据加载不顺畅,效率低,操作不友好,网络延迟,系统响应不及时,而且还可能导致java.1ang.0utOfMemory异常(系统内存溢出异常)等。例如,Android(安卓)操作系统给每个应用分配的内存空间大部分是32M(兆)。如果一个应用在内存中运行的内存数据超过32M,就会出现内存溢出,该应用就会卡死、无响应,严重的甚至要智能终端重启后才能正常使用。

【发明内容】

[0004]基于此,有必要针对上述问题,提供一种数据加载方法及装置,能够实现大容量数据的顺畅加载。
[0005]一种数据加载方法,包括步骤:
[0006]获取指定大小的应用程序的内存;
[0007]通过所述应用程序的主线程创建异步子线程;
[0008]通过所述主线程调用所述异步子线程,并将待加载数据发送给所述异步子线程;
[0009]通过所述异步子线程判断所述待加载数据的类型,根据所述待加载数据的类型以及应用程序的内存进行相应的数据处理;
[0010]通过所述异步子线程将处理后的待加载数据发送给主线程进行显示。
[0011]一种数据加载装置,包括:
[0012]内存获取模块,用于获取指定大小的应用程序的内存;
[0013]子线程创建模块,用于通过所述应用程序的主线程创建异步子线程;
[0014]子线程调用模块,用于通过所述主线程调用所述异步子线程,并将待加载数据发送给所述异步子线程;
[0015]数据处理模块,用于通过所述异步子线程判断所述待加载数据的类型,根据所述待加载数据的类型以及应用程序的内存进行相应的数据处理;
[0016]数据显示模块,用于通过所述异步子线程将处理后的待加载数据发送给主线程进行显示。
[0017]本发明数据加载方法及装置,动态分配内存,创建接口方式的异步子线程,异步子线程根据参数类型进行不同的数据处理,然后将处理后的数据发送给主线程进行显示。本发明可以实现不同类型的大容量数据加载;在数据处理过程中,不是把大容量数据一次性放到内存中显示,而是将部分数据通过协调内存资源分配不断与主线程交互,因此数据加载顺畅,效率高,响应灵敏,应用使用顺畅;利用现有智能终端资源配置,无需对硬件做出改进,节省了成本。
【附图说明】
[0018]图1为本发明方法实施例的流程示意图;
[0019]图2为本发明图片加载的流程示意图;
[0020]图3为本发明装置实施例一的结构示意图;
[0021]图4为本发明装置实施例二的结构示意图;
[0022]图5为本发明数据处理模块实施例的结构示意图;
[0023]图6为本发明装置实施例三的结构示意图。
【具体实施方式】
[0024]为了更好的理解本发明要解决的技术问题、采取的技术方案以及达到的技术效果,下面结合附图对本发明数据加载方法及装置的【具体实施方式】做详细描述。
[0025]如图1所示,一种数据加载方法,包括步骤:
[0026]S110、获取指定大小的应用程序的内存;
[0027]S120、通过所述应用程序的主线程创建异步子线程;
[0028]S130、通过所述主线程调用所述异步子线程,并将待加载数据发送给所述异步子线程;
[0029]S140、通过所述异步子线程判断所述待加载数据的类型,根据所述待加载数据的类型以及应用程序的内存进行相应的数据处理;
[0030]S150、通过所述异步子线程将处理后的待加载数据发送给主线程进行显示。
[0031]本发明采用了编程语言中面向接口编程的接口适配模式,线程可以以接口的方式生成。在进行大容量数据加载显示前,也即步骤SllO之前,还可以包括步骤:初始化接口环境,其中接口环境包括内存空间等。
[0032]大容量数据加载时一般需要的内存比较大,而操作系统给应用程序默认分配的内存一般都较小,为了避免后续内存的溢出,需要先获取指定大小的应用程序的内存。由于本发明主要是针对大容量数据加载,所以一般需要获取大容量的内存空间。例如,应用程序如果需要40M的内存,则发送40M的内存请求,操作系统根据该内存请求给该应用程序动态分配40M的内存。
[0033]一个应用程序对应一个进程,一个进程有一个主线程。内存分配完成后,通过主线程创建异步子线程,并发起异步子线程调用指令,将待加载的数据传递给异步子线程。同时,可以通过主线程调出等待框或小容量预览图,显示异步子线程数据处理的进度,其中等待框或小容量预览图可以根据现有技术中已有的方式实现。
[0034]待加载数据一般包含视频数据、图片以及文本数据等中的任意一种或任意组合。数据类型不同,待加载数据待加载的处理方式也不相同。所以异步子线程需要先判断数据类型,根据数据类型进行相应的处理。例如,在一个实施例中,根据所述待加载数据的类型以及应用程序的内存进行相应的数据处理的步骤可以包括:
[0035]若所述待加载数据为视频数据,在所述异步子线程中按照所述内存的预设比例大小对所述视频数据进行解码,并将解码后的视频数据发送给主线程进行显示。预设比例一般大于O小于100%,例如预设比例为50%。异步子线程将解码后的视频数据发送给主线程后,继续对剩下的视频数据进行解码,直至所有的视频数据解码完成。
[0036]若所述待加载数据为图片,在所述异步子线程中根据显示屏幕的大小确定每个图片的大小。例如拍摄的图片原始尺寸大于手机屏幕尺寸,则按照手机屏幕尺寸对图片进行剪裁。根据分配的内存的大小即可以确定容纳的剪裁的图片的张数,然后加载所述内存容许范围内的各图片,并将加载后的各图片发送给主线程进行显示。另外,还可以设置图片加载的优先级,根据图片的优先级确定先加载的图片。异步子线程将加载的一部分图片发送给主线程之后,同样接着对剩余部分的图片进行加载,直至所有的图片加载完成。
[0037]若所述待加载数据为文本数据,在所述异步子线程中根据预设参数解释文本数据,并将解释后的文本数据分块发送给主线程进行显示。预设参数即用户需要显示的页数,例如文本数据总共有100页,用户仅需要加载显示前50页,则仅需要解释前50页,将解释后的文本数据分块发送到主线程显示。
[0038]若主线程在调用异步子线程的同时调用等待框或小容量预览图,则在主线程接收到解码后的视频数据,或加载的图片,或解释后的文本数据等时,等待框或小容量预览图消失,主线程直接进入视频播放状态或图片文本数据显示状态。
[0039]需要说明的是,待加载数据还可以包含其它类型数据,其它类型数据处理的总体思路也是按照内存大小先进行部分数据处理,异步子线程处理完这部分数据后传输给主线程进行显示,然后异步子线程接着对剩余的数据进行处理。
[0040]如图2所示,当所述待加载数据为图片,通过异步子线程加载所述内存容许范围内的各图片,并将加载后的各图片发送给主线程进行显示的步骤可以包括:
[0041]S21、加载内存需要的图片引用对象,进入步骤S22 ;
[0042]S22、判断图片引用对象中是否有需要显示的图片,若有,进入步骤S23,否则进入步骤S24 ;
[0043]S23、从图片引用对象中直接读取所需图片发送给主线程,返回步骤S22,直至所有的图片显示完成;
[0044]S24、判断内存是否充足,若充足,进入步骤S26,否则进入步骤S25 ;
[0045]S25、释放图片引用对象中最先使用的图片对象,返回步骤S24,直到内存能够容纳新图片;
[0046]S26、加载新图片,同时将新图片添加到图片引用对象中,将加载的图片发送给主线程;
[0047]S27、主线程接收异步子线程发送的图片并显示。
[0048]本发明通过集合弱引用类型对内存的引用机制,动态分配内存对象,及时回收不使用的内存对象。所以本发明还可以包括步骤:通过所述异步子线程将处理后的待加载数据发送给主线程进行显示之后,还包括步骤:销毁接口环境,释放内存,从而实现了内存资源的调度和最大化利用。需要说明的是,销毁接口环境是在异步子线程处理完所有的待加载数据后,或者所述主线程显示完所有的待加载数据后执行。
[0049]基于同一发明构思,本发明还提供一种数据加载装置,下面结合附图对本发明装置的【具体实施方式】做详细描述。
[0050]如图3所示,一种数据加载装置,包括:
[0051]内存获取模块310,用于获取指定大小的应用程序的内存;
[0052]子线程创建模块320,用于通过所述应用程序的主线程创建异步子线程;
[
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1