CN114237739A - 应用程序的图像加载方法、计算机设备及存储介质 - Google Patents
应用程序的图像加载方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114237739A CN114237739A CN202111492516.9A CN202111492516A CN114237739A CN 114237739 A CN114237739 A CN 114237739A CN 202111492516 A CN202111492516 A CN 202111492516A CN 114237739 A CN114237739 A CN 114237739A
- Authority
- CN
- China
- Prior art keywords
- thread
- image
- control
- url
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 9
- 238000000151 deposition Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000009877 rendering Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000008447 perception Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供一种应用程序的图像加载方法、计算机设备及存储介质,其中,应用程序的运行环境预先配置有第一线程和第二线程,第一线程用于监测应用程序的主线程,第二线程用于监测第一线程;该方法包括:第一线程监测主线程,获取应用程序的控件的控件数据,并根据控件数据生成下载任务;第二线程监测第一线程,获取下载任务并根据下载任务下载控件对应的图像,以及在下载完图像时通知第一线程;第一线程通知主线程根据图像渲染对应的控件。由此可以提高控件的图像加载效率以及提高了用户的体验度。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种应用程序的图像加载方法、计算机设备及存储介质。
背景技术
对于应用程序在线加载控件图像,一般是在初始化时启动下载任务进行所需图像的下载,并弹出加载窗口对用户界面(User Interface,UI)进行阻塞,等待图像全部下载完成之后关闭该加载窗口,并把对应图像渲染到对应的控件上,但是这种加载方式需要等待图像下载完成后才能展示图像,如果需要加载的图像较多,就会造成等待时间长并且需要显示加载窗口进行阻塞,用户体验不好。
发明内容
本申请提供了一种应用程序的图像加载方法、计算机设备及存储介质,可以提高图像加载效率,进而可以提高用户的体验度。
第一方面,本申请提供了一种应用程序的图像加载方法,所述应用程序的运行环境预先配置有第一线程和第二线程,所述第一线程用于监测所述应用程序的主线程,所述第二线程用于监测所述第一线程;所述方法包括:
所述第一线程监测所述主线程,获取所述应用程序的控件对应的控件数据,并根据所述控件数据生成下载任务;
所述第二线程监测所述第一线程,获取所述下载任务,并根据所述下载任务下载所述控件对应的图像,以及在下载完所述图像时通知所述第一线程;
所述第一线程通知所述主线程根据所述图像渲染对应的所述控件。
第二发面,本申请还提供了一种计算机设备,所述计算机设备包括:
存储器和处理器;
其中,所述存储器与所述处理器连接,用于存储程序;
所述处理器用于通过运行所述存储器中存储的程序,实现如本申请实施例提供的任一项所述的应用程序的图像加载方法的步骤。
第三发面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如本申请实施例提供的任一项所述的应用程序的图像加载方法的步骤。
本申请公开的应用程序的图像加载方法、计算机设备及存储介质,利用第一线程和第二线程的配合实现应用程序的控件加载图像,可以提高图像加载效率,尤其是针对批量加载图像,同时还可以实现无感知渲染,由此提高了用户的体验度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的实施例提供的一种用于加载图像的线程配置的示意图;
图2是本申请的实施例提供的另一种用于加载图像的线程配置的示意图;
图3是本申请的实施例提供的又一种用于加载图像的线程配置的示意图;
图4是本申请的实施例提供的一种应用程序的图像加载方法的步骤示意图;
图5是本申请的实施例提供的一种图像获取方法的步骤示意图;
图6是本申请的实施例提供的另一种应用程序的图像加载方法的步骤示意图;
图7是本申请的实施例提供的一种计算机设备的示意框图。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
应当理解,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一回调函数和第二回调函数仅仅是为了区分不同的回调函数,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
对于应用程序在线加载控件图像,一般是在初始化时启动下载任务进行所需图像的下载,并弹出加载窗口对用户界面(User Interface,UI)进行阻塞,等待图像全部下载完成之后关闭该加载窗口,并把对应图像渲染到对应的控件上,但是这种加载方式需要等待图像下载完成后才能展示图像,如果需要加载的图像较多,就会造成等待时间长并且需要显示加载窗口进行阻塞,用户体验不好。
示例性的,比如对于应用程序(比如,Windows客户端)在线加载控件的图像时,常规方法是在窗口初始化时启动下载任务进行所需图像下载,并弹出加载窗口对客户端的用户界面进行阻塞,等待图像全部下载完成之后关闭加载窗口,并把对应图像显示到对应控件中,完成应用程序的图像加载。
对于现有Windows客户端在线加载控件的图像的方式,需要等待图像下载完成后才能展示图像,如果加载图像较多的时候,则会造成等待时间长,并且客户端需要显示加载窗口进行阻塞,用户体验不好。
为此,本申请的实施例提供了一种应用程序的图像加载方法、计算机设备和存储介质。其中,可以提高控件的图像加载效率,同时还可以实现无感知渲染,无需显示加载窗口阻碍,由此提高了用户的体验度。
需要说明的是,本申请实施例将以Windows系统下的客户端为例进行介绍,Windows系统支持的C++语言,但是本申请提供的应用程序的图像加载方法不限定于Windows系统中的客户端,比如还可以是Linux等系统。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1是本申请实施例提供的一种用于应用程序加载图像的线程配置的示意图,如图1所示,应用程序的运行环境预先配置了第一线程和第二线程,其中,第一线程用于监测应用程序的主线程,第二线程用于监测第一线程。
其中,该主线程用于该应用程序的调度和分配,主线程也称为UI线程,比如用于加载应用程序的用户界面。示例性的,可以在应用程序初始化时,创建主线程用于加载该应用程序的用户界面。
具体地,第一线程在监测主线程时,用于获取应用程序的控件对应的控件数据,并根据控件数据生成下载任务。第二线程在监测第一线程时,用于获取下载任务并根据下载任务下载控件对应的图像,以及在下载完图像时通知第一线程,第一线程在接收到第二线程的通知时再通知主线程,以使得主线程根据图像渲染对应的控件,即控件对应的图像显示到该控件中,由此实现了异步下载以及无感知渲染,由此可以提高了用户的体验度。
如图2所示,在应用程序的页面初始化时,本申请实施例的主线程用于加载应用程序的控件,获取控件的控件指针并将控制指针存储在第一队列中,以便第一线程从第一队列获取该控件指针。同时,还设置主线程用于获取控件对应的控件数据,将控件数据封装成控制指针指向的对象。
具体地,该主线程可以包括加载模块,该加载模块用于加载应用程序的控件,获取控件的控件指针并将控制指针存储在第一队列中,同时还用于获取控件对应的控件数据,将控件数据封装成控制指针指向的对象,以便通过控制指针获取控件数据,为了提高处理效率,该控件数据可以只包括URL和第一回调函数。URL为统一资源定位符(UniformResource Locator,URL),每一信息资源都有统一的且在网上唯一的地址,该地址就是URL。
控件数据可以包括控URL和第一回调函数,URL用于获取控件的图像,第一回调函数便于第一线程通知主线程根据图像对控件进行渲染。当然,控件数据可以包括颜色或边框等信息。
第一线程可以从第一队列中获取相应的控件指针,并根据控制指针获取对应的控件数据,以便根据控件数据生成下载任务。其中,第一队列用于存储控件指针,第一队列具体比如为FIFO队列,FIFO队列为先进先出队列(First Input First Output,FIFO),当然在本申请的实施例可以使用FIFO队列,当并不限定于FIFO队列。
在一些实施例中,如图2所示,第一线程包括监测模块、任务生成模块和第一通知模块,监测模块用于从第一队列中读取主线程加入的控制指针,并根据控制指针获取对应的控件数据,当然监测模块还可以解析控件数据以获取控件数据中的URL和第一回调函数。任务生成模块用于根据控件数据生成下载任务,并将下载任务存储在第二队列中,具体也可以利用类似于控件数据对应控制指针的方式,将下载任务对应的任务指针存放在第二队列中,以便第二线程从第二队列中获取相应的任务指针,进而根据任务指针获取对应的下载任务。第一通知模块用于利用第一回调函数通知主线程对控件进行渲染。
需要说明的是,第一队列和第二队列均可以是FIFO队列,其中,第一队列与第一线程相对应,用于第一线程与主线程之间的通信,第二队列与第二线程相对应,用于第二线程与第一线程之间的通信。
在一些实施例中,如图3所示,第一线程还可以包括获取模块,获取模块也可以根据URL获取该URL对应的图像。
示例性的,比如获取模块可以用于确定控件数据中的URL是否有效,若URL有效,再确定URL对应的图像是否储存在缓存文件中,其中,缓存文件用于存储之前已经根据URL下载图像;若URL对应的图像存储在缓存文件中,从缓存文件中获取URL对应的图像,并利用第一回调函数通知主线程根据图像对控件进行渲染;若URL对应的图像未存储在缓存文件中,则控制任务生成模块执行根据控件数据生成下载任务。
在确定URL是否有效时,具体可以确定URL的格式是否正确,若URL的格式正确则确定该URL有效,否则确定该URL无效。示例性的,比如确定URL是否为以ftp、http、https等开头的链接,若URL是以ftp、http、https等开头的链接,则确定该URL有效。
在一些实施例中,为了避免计算资源的浪费,进而提高运行效率,还可以将第一线程的默认状态设置为休眠状态。主线程在将控件指针存储在第一队列中后,还可以向第一线程发送唤醒指令以唤醒第一线程,其中,唤醒后的第一线程的状态为运行状态。处于运行状态的第一线程可以从第一队列中读取控件指针。
其中,第一线程对应用程序的主线程进行监测,对应的监测机制可以采用C++11的条件变量(condition_variable)进行处理,第一线程默认为休眠状态,直至接收主线程发送的唤醒指令,设置第一线程的状态为运行状态。
在一些实施例中,如图2所示,第二线程包括检测模块、下载模块和第二通知模块,检测模块用于获取下载任务并解析下载任务的URL和第二回调函数,下载模块用于根据URL下载对应的图像,第二通知模块用于在下载完该图像时利用第二回调函数通知第一线程,第一线程在接收到第二线程的通知后利用第一回调函数通知主线程根据下载的图像进行对控件进行渲染。
需要说明的是,上述的主线程、第一线程和第二线程中的模块,可以理解为是程序模块,为对程序代码进行改进而封装成的程序模块。具体为根据程序的功能进行划分的,可以理解的是,上述的程序模块也可以合并成一个程序模块,或拆分为更多的程序模块。
上述是本申请实施例为了快速加载控件图像而提供的线程的架构,以下将基于上述实施例提供的线程的架构,对本申请实施例提供的应用程序的图像加载方法进行详细介绍。
请参阅图4,图4是本申请实施例提供的一种应用程序的图像加载方法的步骤示意流程图。该方法可以应用于计算机设备,用于加载的应用程序的控件图像。
如图4所示,该应用程序的图像加载方法包括步骤S101至步骤S103。
S101、所述第一线程监测所述主线程,获取所述应用程序的控件对应的控件数据,并根据所述控件数据生成下载任务;
S102、所述第二线程监测所述第一线程,获取所述下载任务并根据所述下载任务下载所述控件对应的图像,以及在下载完所述图像时通知所述第一线程;
S103、所述第一线程通知所述主线程根据所述图像渲染对应的所述控件。
第一线程在监测应用程序的主线程时,若确定该应用程序的控件需要加载图像,可以获取应用程序的控件对应的控件数据,并根据控件数据生成下载任务。
其中,确定应用程序的控件需要加载图像对应的场景可以包括:在应用程序的页面初始化,即主线程新建时,或当应用程序的某个控件被修改时。
第二线程监测第一线程,获取下载任务并根据下载任务下载控件对应的图像,以及在下载完图像时通知第一线程,第一线程再通知主线程,以便主线程可以根据下载的图像渲染对应的控件。
由此利用第一线程和第二线程实现了异步下载,进而可以提高控件的图像显示效率,同时基于第一线程和第二线程还可以实现控件的无感知渲染,进而提高了用户的体验度。
具体地,请同时参阅图2中线程架构,在应用程序的页面初始化时,或者应用程序的控件被修改时,主线程获取应用程序的控件对应的控件指针,将控件指针存放在第一队列。第一线程从第一队列中获取控件指针,根据控件指针获取对应的控件数据。
其中,控件数据可以包括URL和第一回调函数,URL用于获取控件的图像,第一回调函数用于通知主线程根据图像对控件进行渲染。利用回调函数可以使得处理流程更加简洁,避免再次发送消息到主线程进行处理,增加了图像刷新的效率。
在一些实施例中,在主线程将控件指针存放在第一队列之后,主线程还可以向第一线程发送唤醒指令以唤醒第一线程,其中,第一线程的默认状态设置为休眠状态,唤醒后的第一线程的状态为运行状态。由此可以实现在需要对控件渲染时,才唤醒第一线程而其他时间第一线程均处于休眠状态,进而避免占用额外的计算资源。
在一些实施例中,根据控件数据生成下载任务,具体可以为获取控件数据中的URL以及第二回调函数,其中,第二回调函数用于通知第一线程图像下载完成;根据URL和第二回调函数,生成下载任务。即生成的下载任务包括URL和第二回调函数。
需要说明的是,生成的下载任务除了包括URL和第二回调函数,还可以包括任务标识和控件标识,其中控件标识与URL相对应。
在生成下载任务之后,第一线程用于将下载任务存放在第二队列,第二线程从第二队列中获取下载任务,并根据下载任务下载URL对应的图像。
在一些实施例中,在第一线程将下载任务存放在第二队列之后,第一线程还可以向第二线程发送唤醒指令,以唤醒第二线程,其中,第二线程的默认状态设置为休眠状态,唤醒后的第二线程的状态为运行状态。由此可以实现在需要对控件渲染时,才唤醒第二线程而其他时间第二线程均处于休眠状态,进而避免占用额外的计算资源。
上述实施例公开的应用程序的图像加载方法,利用第一线程和第二线程的配合实现了应用程序的控件加载图像,尤其是针对应用程序包括大量控件,因此需要加载批量图像时,利用第一线程和第二线程可以实现异步下载,进而可以提高图像加载效率,同时基于第一线程和第二线程还可以实现控件的无感知渲染,由此提高了用户的体验度。
在一些实施例中,第一线程在获取控件数据并根据控件数据生成下载任务之前还可以执行另一图像获取方法,如图5所示,该图像获取方法具体包括步骤S1011至步骤S1015。
S1011、确定URL是否有效;
S1012、确定URL对应的图像是否存储在缓存文件中;
S1013、设置第一线程处于休眠状态;
S1014、从缓存文件中获取URL对应的图像,并利用第一回调函数通知主线程;
S1015、根据控件数据生成下载任务。
具体地,第一线程还用于确定控件数据中的URL是否有效,若确定URL有效,则执行步骤S1012,确定URL对应的图像是否储存在缓存文件中,缓存文件用于存储之前已经下载过的图像;若URL无效,则执行步骤S1013,设置第一线程处于休眠状态,以避免占用额外的计算资源;在执行步骤S1012时,若确定URL对应的图像未存储在缓存文件中,则根据控件数据生成下载任务;若确定URL对应的图像存储在缓存文件中,则执行步骤S1014,从缓存文件中获取URL对应的图像,并利用第一回调函数通知主线程根据图像对控件进行渲染。由此可以利用缓存文件避免多余的下载,进而可以进一步地提高图像加载的效率。
请参阅图6,图6是本申请实施例提供的另一种应用程序的图像加载方法的步骤示意流程图。该方法可以应用于计算机设备,用于加载的应用程序的控件图像。
如图6所示,该应用程序的图像加载方法包括步骤S201至步骤S210。
S201、主线程获取控件指针,存放在第一队列;
S202、主线程发送唤醒指令至第一线程;
S203、第一线程获取控件指针,并根据控件指针获取控件数据;
S204、第一线程根据控件数据生成下载任务;
S205、第一线程将下载任务存放在第二队列;
S206、第一线程发送唤醒指令至第二线程;
S207、第二线程根据下载任务下载图像;
S208、第二线程通知第一线程,图像已下载完成;
S209、第一线程通知主线程,图像已下载完成;
S210、主线程根据下载图像刷新控件。
其中,发送唤醒指令比如可以发送notify_all,以唤醒对应的线程,唤醒的线程的状态由休眠状态变为运行状态。
其中,第二线程通知第一线程,以及第一线程通知主线程,均可以利用回调函数通知,利用回调函数可以使得处理流程更加简洁,避免再次发送消息到主线程进行处理,增加了图像刷新的效率。
上述实施例公开的应用程序的图像加载方法,利用第一线程和第二线程可以实现异步下载和渲染,可以同时加载批量图像,提高了图像加载效率,同时基于第一线程和第二线程还可以实现控件的无感知渲染,由此提高了用户的体验度。
请参阅图7,图7是本申请实施例提供的一种计算机设备的示意性框图。如图7所示,该计算机设备300包括一个或多个处理器301和存储器302,处理器301和存储器302通过总线连接,该总线比如为I2C(Inter-integrated Circuit)总线。
其中,一个或多个处理器301单独地或共同地工作,用于执行上述实施例提供的应用程序的图像加载方法的步骤。
具体地,处理器301可以是微控制单元(Micro-controller Unit,MCU)、中央处理单元(Central Processing Unit,CPU)或数字信号处理器(Digital Signal Processor,DSP)等。
具体地,存储器302可以是Flash芯片、只读存储器(ROM,Read-Only Memory)磁盘、光盘、U盘或移动硬盘等。
其中,处理器301用于运行存储在存储器302中的计算机程序,并在执行所述计算机程序时实现上述实施例提供的应用程序的图像加载方法的步骤。
示例性的,处理器301用于运行存储在存储器302中的计算机程序,并在执行所述计算机程序时,实现如下步骤:
所述第一线程监测所述主线程,获取所述应用程序的控件对应的控件数据,并根据所述控件数据生成下载任务;所述第二线程监测所述第一线程,获取所述下载任务并根据所述下载任务下载所述控件对应的图像,以及在下载完所述图像时通知所述第一线程;所述第一线程通知所述主线程根据所述图像渲染对应的所述控件。
在一些实施例中,所述主线程获取所述应用程序的控件对应的控件指针,将所述控件指针存放在第一队列;所述第一线程从所述第一队列中获取所述控件指针,根据所述控件指针获取控件数据。
在一些实施例中,在所述将所述控件指针存放在第一队列之后,所述主线程还向所述第一线程发送唤醒指令以唤醒所述第一线程;其中,所述第一线程的默认状态设置为休眠状态,唤醒后的所述第一线程的状态为运行状态。
在一些实施例中,所述控件数据至少包括URL和第一回调函数,所述URL用于获取控件的图像,所述第一回调函数用于通知所述主线程根据所述图像对所述控件进行渲染。
在一些实施例中,在所述根据所述控件数据生成下载任务之前,所述第一线程还用于确定所述控件数据中的URL是否有效,若所述URL有效,确定所述URL对应的图像是否储存在缓存文件中;以及若所述URL对应的图像未存储在所述缓存文件中,则执根据所述控件数据生成下载任务。
在一些实施例中,在所述确定所述URL对应的图像是否储存在缓存文件中之后,若确定所述URL对应的图像存储在所述缓存文件中,所述第一线程从所述缓存文件中获取所述URL对应的图像,并利用所述第一回调函数通知所述主线程根据所述图像对控件进行渲染。
在一些实施例中,所述根据所述控件数据生成下载任务,具体包括:
获取所述控件数据中的URL以及第二回调函数,其中,所述第二回调函数用于通知所述第一线程图像下载完成;根据所述URL和所述第二回调函数,生成下载任务。
在一些实施例中,所述第一线程用于将所述下载任务存放在第二队列;所述第二线程从所述第二队列中获取所述下载任务,并根据所述下载任务下载所述URL对应的图像。
在一些实施例中,在所述将所述下载任务存放在第二队列之后,所述第一线程还向所述第二线程发送唤醒指令,以唤醒所述第二线程;其中,所述第二线程的默认状态设置为休眠状态,唤醒后的所述第二线程的状态为运行状态。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现上述实施例提供的应用程序的图像加载方法的步骤。
其中,所述计算机可读存储介质可以是前述任一实施例所述的计算机设备的内部存储单元,例如所述终端设备的硬盘或内存。所述计算机可读存储介质也可以是所述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种应用程序的图像加载方法,其特征在于,所述应用程序的运行环境预先配置有第一线程和第二线程,所述第一线程用于监测所述应用程序的主线程,所述第二线程用于监测所述第一线程;
所述方法包括:
所述第一线程监测所述主线程,获取所述应用程序的控件对应的控件数据,并根据所述控件数据生成下载任务;
所述第二线程监测所述第一线程,获取所述下载任务并根据所述下载任务下载所述控件对应的图像,以及在下载完所述图像时通知所述第一线程;
所述第一线程通知所述主线程根据所述图像渲染对应的所述控件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述主线程获取所述应用程序的控件对应的控件指针,将所述控件指针存放在第一队列;
所述第一线程从所述第一队列中获取所述控件指针,根据所述控件指针获取控件数据。
3.根据权利要求1所述的方法,其特征在于,在所述将所述控件指针存放在第一队列之后,所述方法还包括:
所述主线程还向所述第一线程发送唤醒指令以唤醒所述第一线程;
其中,所述第一线程的默认状态设置为休眠状态,唤醒后的所述第一线程的状态为运行状态。
4.根据权利要求1所述的方法,其特征在于,所述控件数据包括URL和第一回调函数,所述URL用于获取控件的图像,所述第一回调函数用于通知所述主线程根据所述图像对所述控件进行渲染。
5.根据权利要求4所述的方法,其特征在于,在所述根据所述控件数据生成下载任务之前,所述方法还包括:
所述第一线程还用于确定所述控件数据中的URL是否有效,若所述URL有效,确定所述URL对应的图像是否储存在缓存文件中;以及若所述URL对应的图像未存储在所述缓存文件中,则根据所述控件数据生成下载任务。
6.根据权利要求5所述的方法,其特征在于,在所述确定所述URL对应的图像是否储存在缓存文件中之后,所述方法还包括:
若所述URL对应的图像存储在所述缓存文件中,所述第一线程从所述缓存文件中获取所述URL对应的图像,并利用所述第一回调函数通知所述主线程根据所述图像对控件进行渲染。
7.根据权利要求4所述的方法,其特征在于,所述根据所述控件数据生成下载任务,包括:
获取所述控件数据中的URL以及第二回调函数,其中,所述第二回调函数用于通知所述第一线程图像下载完成;
根据所述URL和所述第二回调函数,生成下载任务。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
所述第一线程用于将所述下载任务存放在第二队列;
所述第二线程从所述第二队列中获取所述下载任务,并根据所述下载任务下载所述URL对应的图像。
9.根据权利要求8所述的方法,其特征在于,在所述将所述下载任务存放在第二队列之后,所述方法还包括:
所述第一线程还向所述第二线程发送唤醒指令,以唤醒所述第二线程;
其中,所述第二线程的默认状态设置为休眠状态,唤醒后的所述第二线程的状态为运行状态。
10.一种计算机设备,其特征在于,所述计算机设备包括:
存储器和处理器;
其中,所述存储器与所述处理器连接,用于存储程序;
所述处理器用于通过运行所述存储器中存储的程序,实现如权利要求1-9中任一项所述的应用程序的图像加载方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1-9中任一项所述的应用程序的图像加载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111492516.9A CN114237739B (zh) | 2021-12-08 | 2021-12-08 | 应用程序的图像加载方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111492516.9A CN114237739B (zh) | 2021-12-08 | 2021-12-08 | 应用程序的图像加载方法、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114237739A true CN114237739A (zh) | 2022-03-25 |
CN114237739B CN114237739B (zh) | 2024-02-02 |
Family
ID=80754048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111492516.9A Active CN114237739B (zh) | 2021-12-08 | 2021-12-08 | 应用程序的图像加载方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237739B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140136693A1 (en) * | 2012-11-09 | 2014-05-15 | Compuware Corporation | Method and system for browser based, non-intrusive measuring of end-user perceived performance of individual third party resource requests |
US20160044074A1 (en) * | 2014-08-08 | 2016-02-11 | Sas Institute Inc. | Distributed stream processing |
CN105429958A (zh) * | 2015-10-30 | 2016-03-23 | 武汉华茂工业自动化有限公司 | 一种基于Android开发的企业应用平台系统 |
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN108664404A (zh) * | 2018-05-14 | 2018-10-16 | 广州讯飞易听说网络科技有限公司 | 客户端灰度发布方法 |
CN109542642A (zh) * | 2018-11-15 | 2019-03-29 | 网宿科技股份有限公司 | 一种前端任务处理的方法及装置 |
CN110166730A (zh) * | 2019-06-06 | 2019-08-23 | 苏州科达科技股份有限公司 | 一种请求处理方法、装置、设备及可读存储介质 |
CA3103238A1 (en) * | 2018-06-09 | 2019-12-12 | Datagrid Systems, Inc. | Real-time optimization of computer-implemented application operations using machine learning technique |
CN110909279A (zh) * | 2019-11-19 | 2020-03-24 | 广州至真信息科技有限公司 | 一种网页的渲染方法、装置、计算机设备和存储介质 |
WO2020174460A2 (en) * | 2019-02-25 | 2020-09-03 | Luminati Networks Ltd. | System and method for url fetching retry mechanism |
US20210105338A1 (en) * | 2020-01-06 | 2021-04-08 | Intel Corporation | Quality of service (qos) management with network-based media processing (nbmp) |
CN112650959A (zh) * | 2019-10-11 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 页面加载时长的统计方法、装置、设备及存储介质 |
CN112948040A (zh) * | 2021-02-26 | 2021-06-11 | 青岛海信医疗设备股份有限公司 | 一种影像显示方法和装置及设备 |
CN113468448A (zh) * | 2020-03-31 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 页面渲染方法及装置 |
CN113506298A (zh) * | 2021-09-10 | 2021-10-15 | 北京市商汤科技开发有限公司 | 图像检测与渲染方法及装置、设备、存储介质 |
CN113590210A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 应用程序中的类验证方法和装置 |
-
2021
- 2021-12-08 CN CN202111492516.9A patent/CN114237739B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140136693A1 (en) * | 2012-11-09 | 2014-05-15 | Compuware Corporation | Method and system for browser based, non-intrusive measuring of end-user perceived performance of individual third party resource requests |
US20160044074A1 (en) * | 2014-08-08 | 2016-02-11 | Sas Institute Inc. | Distributed stream processing |
CN105429958A (zh) * | 2015-10-30 | 2016-03-23 | 武汉华茂工业自动化有限公司 | 一种基于Android开发的企业应用平台系统 |
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN108664404A (zh) * | 2018-05-14 | 2018-10-16 | 广州讯飞易听说网络科技有限公司 | 客户端灰度发布方法 |
CA3103238A1 (en) * | 2018-06-09 | 2019-12-12 | Datagrid Systems, Inc. | Real-time optimization of computer-implemented application operations using machine learning technique |
CN109542642A (zh) * | 2018-11-15 | 2019-03-29 | 网宿科技股份有限公司 | 一种前端任务处理的方法及装置 |
WO2020174460A2 (en) * | 2019-02-25 | 2020-09-03 | Luminati Networks Ltd. | System and method for url fetching retry mechanism |
CN110166730A (zh) * | 2019-06-06 | 2019-08-23 | 苏州科达科技股份有限公司 | 一种请求处理方法、装置、设备及可读存储介质 |
CN112650959A (zh) * | 2019-10-11 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 页面加载时长的统计方法、装置、设备及存储介质 |
CN110909279A (zh) * | 2019-11-19 | 2020-03-24 | 广州至真信息科技有限公司 | 一种网页的渲染方法、装置、计算机设备和存储介质 |
US20210105338A1 (en) * | 2020-01-06 | 2021-04-08 | Intel Corporation | Quality of service (qos) management with network-based media processing (nbmp) |
CN113468448A (zh) * | 2020-03-31 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 页面渲染方法及装置 |
CN113590210A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 应用程序中的类验证方法和装置 |
CN112948040A (zh) * | 2021-02-26 | 2021-06-11 | 青岛海信医疗设备股份有限公司 | 一种影像显示方法和装置及设备 |
CN113506298A (zh) * | 2021-09-10 | 2021-10-15 | 北京市商汤科技开发有限公司 | 图像检测与渲染方法及装置、设备、存储介质 |
Non-Patent Citations (4)
Title |
---|
HOANG-VU DANG ET AL: "Advanced Thread Synchronization for Multithreaded MPI Implementations", 《2017 17TH IEEE/ACM INTERNATIONAL SYMPOSIUM ON CLUSTER, CLOUD AND GRID COMPUTING (CCGRID)》, pages 1 - 11 * |
夏加高 等: "基于焦点队列的GUI自动测试方法研究", 《计算机应用与软件》, vol. 33, no. 1, pages 1 - 5 * |
徐金波 等: "支持多优先级多输出通道的数据队列调度方法和硬件实现", 《计算机工程与科学》, vol. 42, no. 10, pages 1749 - 1756 * |
肖傲: "可配置的分布式网页信息抓取系统的设计及实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 4, pages 139 - 531 * |
Also Published As
Publication number | Publication date |
---|---|
CN114237739B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159776B (zh) | 进程处理方法及装置 | |
US10547682B2 (en) | Dynamically scaling application components using microservices | |
US9354856B2 (en) | Software installation method and device | |
US20180357085A1 (en) | Method and apparatus for running android application on windows system | |
EP2626786A1 (en) | Multicore processor system, method of monitoring control, and monitoring control program | |
US9218201B2 (en) | Multicore system and activating method | |
CN107291481B (zh) | 一种组件更新方法、装置和系统 | |
US11095531B2 (en) | Service-aware serverless cloud computing system | |
WO2016150324A1 (zh) | 一种页面模块的渲染方法、装置以及显示设备 | |
US11016769B1 (en) | Method and apparatus for processing information | |
CN111209080A (zh) | 一种图形处理器透传的方法 | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
CN114237739B (zh) | 应用程序的图像加载方法、计算机设备及存储介质 | |
CN113778581A (zh) | 页面加载方法、电子设备和存储介质 | |
CN115981822A (zh) | 任务处理方法、介质、装置和计算设备 | |
CN111124655A (zh) | 一种网络请求调度方法、终端装置及存储介质 | |
CN115220803A (zh) | 一种数据处理方法以及设备 | |
JP5614347B2 (ja) | 情報処理装置、電力制御方法、および電力制御プログラム | |
CN114567601A (zh) | 一种流量的限制方法及系统 | |
US9015720B2 (en) | Efficient state transition among multiple programs on multi-threaded processors by executing cache priming program | |
CN113515328A (zh) | 页面渲染的方法、装置、电子设备和存储介质 | |
JPH09223021A (ja) | ソフトウェア共有方法 | |
CN113268300B (zh) | 信息显示方法及装置 | |
CN113296597B (zh) | 一种功耗控制方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |