本发明专利技术公开了一种数据延迟加载方法及装置,其中,该方法包括:将放置消息放置到View消息队列的最后,所述放置消息包含有数据加载消息;执行所述放置消息,以将所述数据加载消息放置到主线程消息队列的最后。与现有技术相比,本申请中通过上述步骤将数据加载消息放置到主线程消息队列的最后,而主线程消息队列中包含的其他消息包括View初始化消息,由此,可以在主线程中包含的View初始化消息执行完成后,即对应App界面启动完成后再执行数据加载消息,加载该App界面所需加载的数据,从而避免了数据加载对App界面启动的影响,提高了App界面的启动速度。
【技术实现步骤摘要】
本专利技术涉及APP界面启动
,更具体地说,涉及一种数据延迟加载方法及装置。
技术介绍
Android App的启动和界面的启动,一般会伴随着View的初始化和数据的获取。但是,当界面所涉及的数据量对App来说相对较大时,界面在启动的过程中花费的时间就相对较久,这个时间就会直接体现在界面的启动速度之上,导致界面的启动速度较慢。因此,现有技术中存在如果App界面所涉及的数据量较大会导致该界面的启动速度较慢的问题。
技术实现思路
本专利技术的目的是提供一种数据延迟加载方法及装置,以解决现有技术中存在的如果App界面所涉及的数据量较大会导致该界面的启动速度较慢的问题。为了实现上述目的,本专利技术提供如下技术方案:一种数据延迟加载方法,包括:将放置消息放置到View消息队列的最后,所述放置消息包含有数据加载消息;执行所述放置消息,以将所述数据加载消息放置到主线程消息队列的最后。优选的,将放置消息放置到View消息队列的最后,包括:利用DecorView的Post()方法将所述放置消息放置到View消息队列的最后。优选的,执行所述放置消息,包括:在perform Traversals()方法中执行所述放置消息。优选的,将所述数据加载消息放置到主线程消息队列的最后之后,还包括:在所述数据加载消息之后放置预设回调函数。一种数据延迟加载装置,包括:第一放置模块,用于将放置消息放置到View消息队列的最后,所述放置消息包含有数据加载消息;执行模块,用于执行所述放置消息,以将所述数据加载消息放置到主线程消息队列的最后。优选的,所述第一放置模块包括:放置单元,用于利用DecorView的Post()方法将所述放置消息放置到View消息队列的最后。优选的,所述执行模块包括:执行单元,用于在perform Traversals()方法中执行所述放置消息。优选的,还包括:第二放置模块,用于在所述数据加载消息之后放置预设回调函数。本专利技术提供的一种数据延迟加载方法及装置,其中,该方法包括:将放置消息放置到View消息队列的最后,所述放置消息包含有数据加载消息;执行所述放置消息,以将所述数据加载消息放置到主线程消息队列的最后。与现有技术相比,本申请中通过上述步骤将数据加载消息放置到主线程消息队列的最后,而主线程消息队列中包含的其他消息包括View初始化消息,由此,可以在主线程中包含的View初始化消息执行完成后,即对应App界面启动完成后再执行数据加载消息,加载该App界面所需加载的数据,从而避免了数据加载对App界面启动的影响,提高了App界面的启动速度。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例提供的一种数据延迟加载方法的流程图;图2为本专利技术实施例提供的一种数据延迟加载方法中在Android开发中具有的界面渲染回调示意图;图3为本专利技术实施例提供的一种数据延迟加载装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参阅图1,其示出了本专利技术实施例提供的一种数据延迟加载方法的流程图,可以包括以下步骤:S11:将放置消息放置到View消息队列的最后,放置消息包含有数据加载消息。需要说明的是,View消息队列中包含的消息即为在App界面启动过程中所涉及的View初始化消息及数据加载消息,其中,View初始化消息即为通过执行这些消息实现View的初始化,进而显示App界面,而数据加载消息即为通过执行该消息实现数据的获取,供App使用。通常View消息队列中的消息需被发送至主线程消息队列中,以使得主线程对相关消息进行执行。通过将包含数据加载消息的放置消息放置到View消息队列的最后,能够保证该放置消息最后被执行,也即使得放置消息中包含的数据加载消息被放置到主线程消息队列的最后。S12:执行放置消息,以将数据加载消息放置到主线程消息队列的最后。放置消息即为将数据加载消息放置到主线程消息队列最后的消息,因此,执行放置消息的过程即为将数据加载消息放到主线程消息队列最后的过程。由此,能够使得数据加载消息在其他消息全部执行完成后再执行,也即在View初始化消息执行完成且完成界面的启动后再执行,从而严格区分了界面的渲染和数据的加载,细化了界面的生命周期,避免了数据的加载对界面的渲染造成影响。与现有技术相比,本申请中通过上述步骤将数据加载消息放置到主线程消息队列的最后,而主线程消息队列中包含的其他消息包括View初始化消息,由此,可以在主线程中包含的View初始化消息执行完成后,即对应App界面启动完成后再执行数据加载消息,加载该App界面所需加载的数据,从而避免了数据加载对App界面启动的影响,提高了App界面的启动速度。需要说明的是,对于数据需要从数据库或者配置文件抑或是从网络中获取的App界面,本专利技术提供的上述步骤实际上为寻找合适的数据加载点,以达到先渲染界面,再加载数据的目的。具体来说,在Android开发中,具有如图2所示的界面渲染回调,包括onCreate()方法、onResume()方法等。在这些对界面元素的生命周期的回调中,可以实现数据的加载,进而实现界面和数据的初始化,完成界面的启动。但是,在onCreate()方法中进行数据的加载或者是异步线程的启动都是需要消耗CPU时间的,而这部分数据加载的代码并不会影响界面的渲染,但是却和View初始化一起出现在界面渲染的过程中,进而导致界面启动时间白白增加。专利技术人发现,在onCreate()方法等方法调用之后还存在一些没有被声明出来的方法被用来作为界面渲染的过程(即图中的other funs),因此,可以选择在这部分方法中对数据加载进行相关设置。在Activity的onCreate()方法调用之前,会调用attach()方法,在attach()方法调用的时候会创建一个PhoneWindow,这个PhoneWindow中有个DecorView,这个DecorView是所有Activity最底层的一个View,类为FrameLayout,其具有View的一切特性,且会在onCreate()方法中被初始化。Activity的onCreate()方法做了很多初始化的操作,包括PhoneWindow/DecorView/StartingView/setContentView等,但真正要设置为显示则在Resume()的时候,不过这些对开发者是透明的,具体可以看ActivityThread的handleResumeActivity()方法,该方法包含于图2中的other funs,这个方法中除了调用Activity的onResume()回调之外,还初始化了ViewRootImpl/ThreadedRenderer等。其中,View本文档来自技高网...

【技术保护点】
一种数据延迟加载方法,其特征在于,包括:将放置消息放置到View消息队列的最后,所述放置消息包含有数据加载消息;执行所述放置消息,以将所述数据加载消息放置到主线程消息队列的最后。
【技术特征摘要】
1.一种数据延迟加载方法,其特征在于,包括:将放置消息放置到View消息队列的最后,所述放置消息包含有数据加载消息;执行所述放置消息,以将所述数据加载消息放置到主线程消息队列的最后。2.根据权利要求1所述的方法,其特征在于,将放置消息放置到View消息队列的最后,包括:利用DecorView的Post()方法将所述放置消息放置到View消息队列的最后。3.根据权利要求2所述的方法,其特征在于,执行所述放置消息,包括:在perform Traversals()方法中执行所述放置消息。4.根据权利要求1至3任一项所述的方法,其特征在于,将所述数据加载消息放置到主线程消息队列的最后之后,还包括:在所述数据加载消息之后放置预设回调函数...
【专利技术属性】
技术研发人员:唐沃源,谈应奇,
申请(专利权)人:深圳云之家网络有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。