一种基于Android的异步多任务顺序加载方法与流程

文档序号:16971965发布日期:2019-02-26 18:38阅读:1167来源:国知局
导航: X技术> 最新专利> 计算;推算;计数设备的制造及其应用技术
一种基于Android的异步多任务顺序加载方法与流程

本发明涉及通信技术领域,尤其涉及一种基于android的异步多任务顺序加载方法。



背景技术:

在android中实现异步任务机制有两种方式:handler和asynctask。handler模式需要为每一个任务创建一个新的线程,任务完成后通过handler实例向ui线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制,asynctask类使创建异步任务变得更加简单,不再需要编写任务线程和handler实例即可完成相同的任务,在2.3之后的版本可以支持并行和串行。asynctask的缺点是它创建的实例只能被执行一次,否则多次调用时将会出现异常。在实际开发中经常会用到异步多任务的情况,例如加载含有图片的数据列表,由于图片的加载比较耗时,为了提升用户的体验,一般都会采用异步加载。以上2种方式在单任务情况下的问题并不突出,但在多任务中其弊端就会凸显出来,难以达到按照列表先后顺序执行的目的。



技术实现要素:

鉴以此,本发明的目的在于提供一种基于android的异步多任务顺序加载方法,以至少解决以上问题。

一种基于android的异步多任务顺序加载方法,包括:

创建若干个asynctask异步任务类,为每个asynctask异步任务类内置的doinbackgroud方法设置具体的异步任务内容;

在ui主线程中创建循环体方法,所述循环体方法用于逐次执行asynctask异步任务,直至所有异步任务执行完毕。

进一步的,所述循环体方法在逐次执行asynctask异步任务时,通过监听asynctask异步任务类内置的方法返回值判断asynctask异步任务是否执行完成。

进一步的,逐次执行asynctask异步任务时,有返回值的asynctask异步任务调用其onpostexecute方法,在ui主线程中完成资源的加载。

进一步,在创建asynctask异步任务类并为每个asynctask异步任务类设置具体的异步任务内容后,

将执行异步任务所需的全部数据逐个添加到一个数组中;

所述循环体方法每次执行循环体时,从所述数组中按顺序取出一个异步任务;

数据取出成功时,执行该异步任务;否则代表异步任务顺序队列执行完毕,终止循环。

进一步的,使用sparseintarray稀疏数组存放执行异步任务所需的全部数据。

进一步的,数据取出成功时,执行该异步任务,包括:

调用asynctask异步任务类的doinbackgroud方法在后台创建新线程执行异步任务;

异步任务执行完成后调用asynctask异步任务类的onpostexecute方法在ui主线程完成资源的加载。

进一步的,创建queueasynctask类,所述sparseintarray稀疏数组作为所述queueasynctask类的变量用于存放异步任务顺序队列,同时queueasynctask类分别声明doinbackgroud接口以及onpostexecute接口,doinbackgroud接口用于实现对asynctask异步任务类的doinbackgroud方法的调用;onpostexecute接口用于实现对asynctask异步任务类的doinbackgroud方法的调用。

与现有技术相比,本发明的有益效果是:

本发明提供的一种基于android的异步多任务顺序加载方法,通过在ui主线程中设计循环体,实现异步多任务按照开发人员所希望的顺序执行的效果,解决了开发中需要异步加载大量数据的问题,相较于现有技术结构更为简洁,高效且易于维护,能避免程序出现不必要的错误。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的优选实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的系统整体结构示意图。

图2是本发明实施例的异步任务类创建并完成设置后的流程示意图。

具体实施方式

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

以下结合附图对本发明的原理和特征进行描述,所列举实施例只用于解释本发明,并非用于限定本发明的范围。这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

参照图1,本发明提供一种基于android的异步多任务顺序加载方法,所述方法包括:

步骤s1,创建若干个asynctask异步任务类,为每个asynctask异步任务类内置的doinbackgroud方法设置具体的异步任务内容。

当应用程序启动,android会创建一个主线程,主线程负责向ui组件分发事件、绘制事件,在主线程中,应用程序与android系统的ui组件进行交互,所以主线程也被称为ui主线程。由于只有ui主线程才能对ui进行更新操作,其他线程无法直接操作ui,这样的好处是保证了ui的稳定性和准确性,避免多个线程同时操作ui造成混乱,但不能将所有任务都放到ui主线程中实现,比如网络操作、大容量文件读取等耗时操作,否则很可能会造成后续任务的阻塞,当阻塞时间过长,android系统会抛出anr错误,对于要求稳定性的应用程序应该尽力避免这种情况的发生,因此需要将耗时任务放到非主线程中去执行。asynctask异步任务类,是一个专门用于处理异步任务的类。通过此类,可以实现ui主线程和后台线程的通讯,后台线程执行开发者设定的异步任务,并把结果返回给ui主线程,避免了android应用的单线程模型以及抛出anr的情况。

步骤s2,在ui主线程中创建循环体方法,所述循环体方法用于逐次执行asynctask异步任务,直至所有异步任务执行完毕。

步骤s2中,所述循环体方法在逐次执行asynctask异步任务时,通过监听asynctask异步任务类内置的方法返回值判断asynctask异步任务是否执行完成。asynctask异步任务类主要内置了四个方法:onpreexecute()、doinbackground()、onprogressupdate()、onpostexecute(),其中,异步任务所需要完成的耗时操作被写在doinbackground()的方法体中,系统会在后台的线程池中开启一个workthread来执行这个方法。当一个异步任务执行完毕时,系统会自动调用onpostexecute()方法,并将doinbackground()方法返回的值传入该方法中,以对ui进行相应的更新,通过监听该方法的返回值,判断异步任务是否执行完成,当当前所监听的异步任务完成,执行下一个异步任务,直到异步任务全部执行完毕。

在上述实施例的基础上,为了能够让多个异步任务按照开发者的设想顺序执行,从而简洁代码的结构,提高代码的可阅读性,同时对ui更新时给用户以良好的感官体验,需要对异步任务的执行顺序采取方法进行限制。参照图2,步骤s1中,在创建asynctask异步任务类并为每个asynctask异步任务类设置具体的异步任务内容后,还包括:

步骤s11,将执行异步任务所需的全部数据逐个添加到一个数组中。

步骤s11中,执行异步任务所需的全部数据被逐个存放到sparseintarray稀疏数组中。当数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用,因此造成内存空间的浪费,甚至会造成内存溢出,因此为了达到节省内存空间的效果,同时不影响数组中所存储的异步任务数据,采用sparseintarray稀疏数组作为存储异步任务数据的集合,sparseintarray稀疏数组分为两部分,一部分用于记录原数组的列数、行数以及元素使用的个数,第二部分记录原数组中元素的位置和内容,其核心是折半查找函数,用数组数据结构来保存映射,然后通过折半查找来找到所需数据对象,不依赖外部对象映射,可以有效提高内存效率。

步骤s12,所述循环体方法每次执行循环体时,从所述数组中按顺序取出一个异步任务。

步骤s12中,由于每个异步任务均存储于数组中,通过唯一的数组下标对异步任务所存放位置进行标志,在将异步任务数据存储到数组中时,可以按照开发者所需加载顺序逐个对异步任务进行存储,在取出时按数组下标顺序取出以执行,从而实现异步任务按顺序加载。同时也可以按照开发需求,通过设计循环体循环条件以实现非连续的数组数据读取,此时异步任务数据在数组中可以不用按照加载顺序进行存储。

步骤s13,数据取出成功时,执行该异步任务;否则代表异步任务顺序队列执行完毕,终止循环。

在步骤s13中,数据取出成功后,执行该异步任务,包括:

调用asynctask异步任务类的doinbackgroud()方法在后台创建新线程执行异步任务。

异步任务执行完成后调用asynctask异步任务类的onpostexecute()方法在ui主线程完成资源的加载。

在本发明的一个可选实施例中,为了保证任务队列被按照定制的顺序串行执行,同时降低应用程序各个模块间的耦合度,从而提高应用程序的可扩展性,同时避免程序在运行过程中出现不必要的错误,保证其平稳运行,创建queueasynctask类,在所述queueasynctask类中声明sparseintarray稀疏数组以用于存放异步任务顺序队列,同时在所述queueasynctask类中分别声明doinbackgroud()接口以及onpostexecute()接口,doinbackgroud()接口用于实现对asynctask异步任务类的doinbackgroud()方法的调用;onpostexecute()接口用于实现对asynctask异步任务类的doinbackgroud()方法的调用,在异步串行多任务的执行过程中,所述queueasynctask类仅向外部暴露了所必须的doinbackgroud()接口以及onpostexecute()接口,使得代码耦合度降低,易于维护;queueasynctask类中也可以根据开发需求声明其他接口以调用asynctask异步任务类中的相关方法,可扩展性强。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

完整全部详细技术资料下载
当前第1页 1  2 
相关技术
  • 一种评估用户还款风险的方法和...
  • 消息化对接处理方法、装置、计...
  • 贷款风控规则调整方法、装置、...
  • 自治域模式下基于信息共享贡献...
  • 一种事件处理方法及装置与流程
  • 账户出账方法、装置、计算机设...
  • 一种业务标识分配方法及装置与...
  • 一种财务决算疑点问题的智能处...
  • 基于人脸识别请求的通信匹配方...
  • 辅助选标的方法、终端及计算机...
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1

深圳SEO优化公司辽源网站建设公司文山网站搭建价格黑河网站优化按天扣费推荐荆州网络推广价格阜阳建站哪家好天津网站优化按天扣费洛阳关键词排名玉溪如何制作网站公司株洲外贸网站设计多少钱珠海品牌网站设计福田网站优化推广公司黔南百搜标王多少钱漳州网站优化按天收费哪家好渭南SEO按效果付费多少钱通化关键词按天计费多少钱吴忠网站开发推荐河源阿里店铺运营价格吴忠百度竞价价格湖州SEO按效果付费报价鹤岗优化多少钱通化品牌网站设计推荐防城港网站推广方案报价济南企业网站建设盘锦网站推广系统报价大鹏外贸网站设计公司湘潭企业网站制作推荐坂田百度爱采购哪家好惠州外贸网站设计哪家好邢台SEO按天扣费泰州网站推广方案推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化