[发明专利]安卓设备及其适配器视图的异步数据加载方法及装置有效
申请号: | 201310401857.X | 申请日: | 2013-09-05 |
公开(公告)号: | CN103455355B | 公开(公告)日: | 2017-02-22 |
发明(设计)人: | 莫文飞;吴春雷;张文东;田路 | 申请(专利权)人: | 南京朗睿软件科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 骆苏华 |
地址: | 210017 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 设备 及其 适配器 视图 异步 数据 加载 方法 装置 | ||
技术领域
本发明涉及安卓设备领域,特别涉及一种安卓设备及其适配器视图的异步数据加载方法及装置。
背景技术
随着无线通信技术的飞速发展,基于安卓(Android)操作系统的手机越来越普及,使得越来越多的软件开发者转向到Android手机软件领域的开发。在Android系统开发中,几乎每个应用都会涉及到视图适配器(AdapterView)的异步数据加载。
AdapterView是Android系统中的类,可以包括列表视图(ListView)、网格视图(GridView)和画廊(Gallery)等视图方式。现有的一种异步数据加载方法是通过监测ListView的滑动事件进行异步数据加载,或者通过监测GridView的滑动事件进行异步数据加载。由于不同视图方式的异步数据加载机制不同,只能对单一种类的视图进行加载,不能实现通用,因此需要一个能够通用的异步数据加载方案。
为实现通用的异步数据加载,现有技术提供了一种通过触发通用适配器(GenericAdapter)获取视图并创建线程进行异步数据加载的方法。例如,当检测到屏幕滑动时,AdapterView会触发GenericAdapter中的获取视图(getView)函数,每检测到滑过列表数据中的一个项(item)都调用一次getView函数,创建一个线程去加载异步数据,并将加载完成的数据渲染到屏幕上。
然而,当屏幕滑动速度较快时,由于每滑过一个item会调用一次getView函数,系统会创建出很多线程,导致同一时间内存在的线程过多,内存不够,出现内存溢出(Out Of Memory,OOM)。
因此,一种能够避免内存溢出的异步数据加载方案成为迫切的需求。
发明内容
本发明实施例要解决的问题是安卓设备的视图适配器进行异步数据加载时,容易出现内存溢出的问题。
为解决上述问题,本发明实施例提供一种安卓设备的适配器视图异步数据加载方法,包括:适配器视图单元接收到操作指令,向通用适配器单元的获取视图子单元发送调用请求;所述获取视图子单元根据接收到的调用请求,创建加载异步数据的线程,触发异步数据管理类单元;所述异步数据管理类单元的推送任务子单元将所述加载异步数据的线程推送到线程池中,当所述线程池中的线程数目达到预设的阈值时,所述推送任务子单元将所述获取视图子单元新创建的线程进行排序等待;执行任务单元调用线程池中的线程对异步数据进行加载。
可选的,所述适配器视图单元收到的操作指令包括:滑动视图适配器或滑动焦点控制视图适配器。
可选的,所述推送任务子单元采用树图,对创建的加载异步数据的线程进行排序。
可选的,所述执行任务单元先调取后进入到线程池中的线程。
可选的,所述执行任务单元调用线程池中的线程对异步数据进行加载,包括:所述执行任务单元调用异步数据执行类单元中的执行函数,以调用线程池中的线程对异步数据进行加载。
可选的,所述获取视图子单元定时触发异步数据管理类单元。
可选的,所述获取视图子单元定时触发异步数据管理类单元的定时周期为200毫秒至2秒。
可选的,所述异步数据管理类单元还包括:如果获取视图子单元在当前定时周期内收到调用请求,则异步数据管理类单元取消获取视图子单元在上一个定时周期创建的线程。
可选的,所述获取视图子单元的调用次数达到预设数量阈值时,执行所述触发异步数据管理类单元的操作。
可选的,所述的安卓设备的适配器视图异步数据加载方法还包括:数据保持单元,将所述加载完成的异步数据进行保存。
可选的,对所述保存的异步数据的被调用次数进行判断,若被调用次数为0,则将对应的数据丢弃;若被调用次数不为0,则继续保存。
可选的,所述安卓设备的适配器视图包括以下至少一种:列表视图、网格视图和画廊。
为解决上述问题,本发明实施例还提供一种安卓设备的适配器视图异步数据加载装置,包括:适配器视图单元,用于在接收到操作指令时,向通用适配器单元的获取视图子单元发送调用请求;通用适配器单元,包括获取视图子单元,所述获取视图子单元用于根据接收到的调用请求,创建加载异步数据的线程,触发异步数据管理类单元;异步数据管理类单元,包括推送任务子单元,所述推送任务子单元用于将所述加载异步数据的线程推送到线程池中,当所述线程池中的线程数目达到预设的阈值时,将所述获取视图子单元新创建的线程进行排序等待;执行任务单元,用于调用线程池中的线程对异步数据进行加载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京朗睿软件科技有限公司,未经南京朗睿软件科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310401857.X/2.html,转载请声明来源钻瓜专利网。