CN114237743B - 界面加载方法、装置、电子设备和存储介质 - Google Patents
界面加载方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114237743B CN114237743B CN202111528363.9A CN202111528363A CN114237743B CN 114237743 B CN114237743 B CN 114237743B CN 202111528363 A CN202111528363 A CN 202111528363A CN 114237743 B CN114237743 B CN 114237743B
- Authority
- CN
- China
- Prior art keywords
- instantiated
- target file
- target
- instantiation
- interface
- 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.)
- Active
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了界面加载方法、装置、电子设备和存储介质,该方法包括:通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象;在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。在界面加载的过程中无需回调操作,避免了回调操作可能导致的界面加载出错。并且预先进行实例化得到目标实例对象,在进行界面加载时,可快速地获取到目标实例对象,无需花费大量时间进行实例化,从而减少或避免界面的卡顿,提升界面加载的流畅度。
Description
技术领域
本申请涉及信息技术领域,具体涉及界面加载方法、装置、电子设备和存储介质。
背景技术
在Android系统中,Android布局文件定义了可视化界面中各个元素的结果,Android布局通过View和ViewGroup展示元素以及各个元素之间的关系,基于Android布局文件,可以实现任意内容的可视化界面。
目前在Android开发中提供两种方式定义布局,一种是在可扩展标记语言(Extensible Markup Language,XML)布局文件中声明可视化界面中的元素及其结果,另一种是在Java代码中直接实例化元素。由于XML布局文件的方式相比对Java代码的方式更加直观灵活,大部分界面开发都是通过XML布局文件定义的。
在对XML布局文件进行实例化以进行界面加载时,通常需要把得到的与XML布局文件对应的实例对象回调给使用者,使用者只有在接收到回调操作后,才能进行界面加载,然而基于回调操作进行界面加载,容易出错。
发明内容
本申请实施例提供界面加载方法、装置、电子设备和存储介质,在实例化过程中无需进行回调操作,避免界面加载出错。
本申请实施例提供一种界面加载方法,包括:通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
本申请实施例还提供一种界面加载装置,包括:预实例化模块,用于通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;加载模块,用于在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
在一些实施例中,预实例化工具包括布局预加载方法及布局加载器,预实例化模块还用于通过预实例化工具中的布局预加载方法获取待实例化的目标文件对应的目标文件标识;利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象。
在一些实施例中,预实例化模块还用于利用预实例化工具中的布局加载器,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象。
在一些实施例中,界面加载装置还包括实例化模块,若在进行界面加载时,未获取到与待实例化的目标文件对应的预实例化后的目标实例对象,实例化模块用于在主线程上创建新的布局加载器;在主线程上使用所述新的布局加载器对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象。
在一些实施例中,预实例化工具还包括标识列表,用于存储待实例化的目标文件对应的目标文件标识,所述在主线程上使用所述新的布局加载器对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象之后,预实例化模块还用于确定所述标识列表中是否存在所述待实例化的目标文件对应的目标文件标识;若所述标识列表中不存在所述待实例化的目标文件对应的目标文件标识,将所述待实例化的目标文件对应的目标文件标识添加至所述标识列表中。
在一些实施例中,预实例化工具还包括标识列表,用于存储待实例化的目标文件对应的目标文件标识,在通过预实例化工具中的布局预加载方法获取待实例化的目标文件对应的目标文件标识之后,预实例化模块还用于将待实例化的目标文件对应的目标文件标识依序存储在标识列表中,在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,预实例化模块还用于删除标识列表中预实例化后的目标文件对应的目标文件标识。
在一些实施例中,预实例化工具还包括实例数组,在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,预实例化模块还用于将待实例化的目标文件对应的目标文件标识,待实例化的目标文件对应的目标实例对象,以及目标文件标识与目标实例对象的对应关系存储在所述实例数组中。
在一些实施例中,预实例化模块还用于将待实例化的目标文件对应的目标文件标识以及待实例化的目标文件对应的目标实例对象分别作为键值对中的关键字和键值,存储在所述实例数组中。
在一些实施例中,在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象之后,预实例化模块还用于从所述实例数组中删除所述目标实例对象;将所述目标实例对象对应的目标文件的目标文件标识添加至所述标识列表中。
本申请实施例还提供一种电子设备,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例所提供的任一种界面加载方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种界面加载方法中的步骤。
本申请实施例在进行界面加载之前,通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象;在进行界面加载时,直接获取与待实例化的目标文件对应的预实例化后的目标实例对象,并利用该目标实例对象进行界面加载。无需在进行界面加载时,调用实例化工具进行实例化,从而避免界面加载的过程的程序出错。
目前对待实例化的目标文件进行实例化时,可以采用AsyncLayoutInflater提供异步实例化待实例化的目标文件的方法,AsyncLayoutInflater是在界面加载时,对待实例化的目标文件进行实例化,把得到的目标实例对象通过OnInflateFinishedListener回调给使用者,使用者只有在接收到回调后,才能进行后续操作。也就是说,这种方式在没有接收到回调之前,待实例化的目标文件可能没有实例化成功,若在此时执行与目标实例对象相关的操作,则会出现空指针错误,导致界面加载出错。
而在本申请实施例中,是在界面加载之前使用预实例化工具对待实例化的目标文件进行预实例化,得到预实例化后的目标实例对象,在加载界面时,可直接获取目标实例对象进行界面加载,在界面加载的过程中无需回调操作,避免了回调操作可能导致的界面加载出错。并且预先进行实例化得到目标实例对象,在进行界面加载时,可快速地获取到目标实例对象,无需花费大量时间进行实例化,从而减少或避免界面的卡顿,提升界面加载的流畅度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的实现界面加载方法的系统示意图;
图2是本申请实施例提供的界面加载方法的流程示意图;
图3是本申请另一个实施例提供的界面加载方法的流程示意图;
图4是本申请实施例提供的界面加载方法的主线程和子线程之间的交互示意图;
图5是本申请实施例提供的界面加载装置的结构示意图;
图6是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供界面加载方法、装置、电子设备和存储介质。
其中,该界面加载装置具体可以集成在电子设备中,该电子设备可以为终端等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(PersonalComputer,PC)等设备。
请参考图1,图1为本申请实施例提供的实现界面加载方法的系统示意图。该系统可以包括至少一个终端设备1000,至少一个服务器2000,至少一个数据库3000,以及网络4000。用户持有的终端设备1000可以通过网络4000连接到服务器2000。其中,终端设备1000是具有计算硬件的任何设备,该计算硬件能够支持和执行与页面显示对应的软件产品;服务器2000可以是单一服务器,可以是服务器集群;网络4000可以是无线网络或者有线网络,比如无线网络为无线局域网(WLAN)、局域网(LAN)、蜂窝网络、2G网络、3G网络、4G网络、5G网络等。另外,不同的终端设备1000之间也可以使用自身的蓝牙网络或者热点网络连接到其他终端或者连接到服务器2000。
通常,终端设备1000上可以安装有各种应用程序,服务器2000可以为应用程序提供应用程序所实现的功能对应的数据服务。另外,该系统还可以包括至少一个数据库3000,该数据库3000用于存储用户使用所述终端设备1000上的应用程序时所产生的数据,例如,使用日志等等。
终端设备1000执行界面加载方法时,可以通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象;在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
以下分别进行详细说明。
请参阅图2,为本申请实施例提供的界面加载方法的流程示意图,该方法可由电子设备执行,电子设备可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑等终端设备,该方法具体可包括以下步骤:S110至S120。
S110、通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象。
待实例化的目标文件可以是指等待被实例化的文件,例如XML布局文件,在XML布局文件中定义了可视化界面中的元素结构,通过对XML布局文件进行实例化可得到对应的布局实例,以便于界面加载。
目标实例对象是指对待实例化的目标文件进行预实例化成功得到的结果,该目标实例对象可直接用于界面的显示。
预实例化工具可以是编程语言中的工具类,在封装后可被重复调用,可用于在界面加载之前预先对待实例化的目标文件进行实例化。即调用预实例化工具,可以实现在界面加载之前预先对待实例化的目标文件进行实例化,无需在进行界面加载时,进行实例化。
其中,预实例化工具可以包括布局预加载方法及布局加载器,在预实例化工具被调用时,可以是使用布局预加载方法获取待实例化的目标文件对应的目标文件标识;利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象。
布局预加载方法即Preinflate,为编程语言中的方法类,可用于在预实例化时获取待实例化的目标文件对应的目标文件标识,该布局预加载方法可以在封装后重复调用。这与Android系统提供的布局加载方法inflate有所不同,Android系统中的inflate方法用于将布局加载成对象并返回。
目标文件标识可以是指待实例化的目标文件的名称,或者是可以指示待实例化的目标文件的唯一标识。例如,待实例化的目标文件为XML布局文件,目标文件标识可以是指XML布局文件的文件名称。
目标文件标识和待实例化的目标文件之间是一一对应的关系,即一个目标文件标识对应一个待实例化的目标文件,一个待实例化的目标文件对应一个目标文件标识。
预实例化的过程会消耗大量的资源,为了避免在主线程上进行实例化,造成界面卡顿,可以在子线程上进行预实例化。具体的,在使用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象时,可以是利用预实例化工具中的布局加载器,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象。
线程是操作系统能够进行运算调度的最小单元,被包含在进程之中,是进程中的实际运作单位。进程是指正在运行的程序,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,具有一定独立功能。其中,一个进程中包括至少一个线程,当进程中包括多个线程时,每个线程中并行执行不同的任务。
例如,一个应用程序运行后为一个进程,在该应用程序的进程中,可以有两个线程,其中一个线程用于界面显示,另一个线程用于数据处理,这两个线程是并行执行的,即在一个线程中进行界面显示的同时,另一个线程中进行数据处理。在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象,即表示在子线程中执行对目标文件标识对应的待实例化的目标文件进行预实例化,以得到与待实例化的目标文件对应的目标实例对象的操作。
其中,在预实例化工具被调用时,可以是在主线程中使用布局预加载方法获取待实例化的目标文件对应的目标文件标识,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象,以提升加载界面的流畅度。
在一些实施方式中,预实例化工具还可以包括标识列表,标识列表用于存储待实例化的目标文件对应的目标文件标识。在主线程中使用布局预加载方法获取待实例化的目标文件对应的目标文件标识后,可以将待实例化的目标文件对应目标文件标识依序存储在标识列表中。例如,在主线程中依次获取到目标文件标识a和目标文件标识b,则按照获取到目标文件标识的顺序,先将目标文件标识a存入标识列表中,再将目标文件标识b存储在目标文件标识a之后。
在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象时,可以在子线程中从标识列表中读取目标文件标识。
具体的,在子线程中从标识列表中读取目标文件标识时,可以是依序循环读取标识列表,以获取存储在标识列表中的目标文件标识。
在一些实施方式中,子线程的数量可以是1,子线程读取标识列表中的目标文件标识,可以是先读取标识列表中的第一个目标文件标识,例如,标识列表中依次存入目标文件标识a、b、c、d,子线程可以是先读取目标文件标识a,再读取目标文件标识b。
在一些实施方式中,子线程的数量可以是至少一个,子线程在读取标识列表中的目标文件标识时,可以是依次读取标识列表中的第一个目标文件标识。例如,子线程的数量为3个,分别为子线程1、子线程2和子线程3,标识列表中依次存入目标文件标识a、b、c、d,子线程1读取目标文件标识a,子线程2读取目标文件标识b,子线程3读取目标文件标识c。若子线程1先完成对目标文件标识a对应的待实例化的目标文件的预实例化,子线程1可再次读取目标文件标识d。
其中,在主线程中使用布局预加载方法获取待实例化的目标文件对应的目标文件标识并存入标识列表的同时,可在子线程读取标识列表中的目标文件标识,以便在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象。
需要说明的是,在子线程读取到目标文件标识后,可以根据目标文件标识获取该目标文件标识对应的待实例化的目标文件。具体的,子线程可以先获取预先存储的目标文件标识与待实例化的目标文件的对应关系,基于该对应关系获取目标文件标识对应的待实例化的目标文件,以便对待实例化的目标文件进行预实例化。其中,目标文件标识与待实例化的目标文件的对应关系,可以是在主线程获取目标文件标识的过程中获取到的,并预先存储在预设位置处。
子线程在读取到目标文件标识后,可以从预设位置处获取到目标文件标识与待实例化的目标文件的对应关系,基于该对应关系,可以确定出目标文件标识对应的待实例化的目标文件。
利用预实例化工具中的布局加载器,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化时,可能出现预实例化成功或预实例化失败的情况。若预实例化成功,则可以得到与待实例化的目标文件对应的目标实例对象,若预实例化失败,则无法得到与待实例化的目标文件对应的目标实例对象。
在一些实施方式中,预实例化工具还包括实例数组,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化后,若预实例化成功,则可以将得到的与待实例化的目标文件对应的目标实例对象与待实例化的目标文件对应的目标文件标识存储在实例数组中。也就是说,待实例化的目标文件对应有目标文件标识,预实例化成功的待实例化的目标文件对应有目标实例对象,从而目标文件标识与目标实例对象具有对应关系,则可以将待实例化的目标文件对应的目标文件标识、待实例化的目标文件对应的目标实例对象,以及目标文件标识与目标实例对象的对应关系存储在实例数组中。
具体的,可以将待实例化的目标文件对应的目标文件标识和待实例化的目标文件对应的目标实例对象以键值对的方式存储在实例数组中,也就是说,可以将待实例化的目标文件对应的目标文件标识和待实例化的目标文件对应的目标实例对象分别作为键值对中的关键字和键值,存储在实例数组中。可以理解是,键值对可以存储具有对应关系的一对数据,即关键字和键值具有对应关系,分别将目标文件标识和目标实例对象作为键值对中的关键字和键值,可以表示目标文件标识与目标实例对象具有对应关系。
在一些实施方式中,可以是将待实例化的目标文件对应的目标文件标识作为键值对中的关键字,将待实例化的目标文件对应的目标实例对象作为键值对中的键值存储在实例数组中。在另一些实施方式中,可以将待实例化的目标文件对应的目标文件标识作为键值对中的键值,将待实例化的目标文件对应的目标实例对象作为键值对中的关键字存储在实例数组中。具体可以根据实际的需要进行选择,在此不做具体限定,在本申请实施例中,以待实例化的目标文件对应的目标文件标识为关键字,仅以待实例化的目标文件对应的目标实例对象为键值构成键值对,存储在实例数组中为例进行说明。
如前所述,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化后,可能出现预实例化失败的情况,若预实例化失败,无法得到待实例化的目标文件对应的目标实例对象,此时可以将预实例化结果表示为预设内容,并将目标文件标识和预设内容以键值对的方式存储在实例数组中。具体的,可以是将目标文件标识作为关键字,将预设内容作为键值存储在实例数组中。
其中,预设内容可以是特定的标识符、特定的内容等等,用于表示预实例化失败,具体可以根据实际需要进行设置,在此不做具体限定。例如,目标文件标识a对应的待实例化的目标文件为A,若预实例化成功可以得到目标实例对象为A`,目标文件标识b对应的待实例化的目标文件为B,若预实例化失败可以得到预设内容为null。若子线程预实例化A成功,预实例化B失败,那么目标文件标识a与目标实例对象为A`以键值对的形式存储在实例数组中,目标文件标识b与预设内容null以键值对的形式存储在实例数组中。
子线程对待实例化的目标文件进行预实例化后,子线程可以根据预实例化是否成功对标识列表进行操作。具体的,在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,可以删除标识列表中预实例化后的目标文件对应的目标文件标识。
可以理解的是,通过子线程读取标识列表中的目标文件标识时,子线程并未对标识列表中的数据进行改变。例如,标识列表中存在目标文件标识a、b、c、d,在子线程读取了目标文件标识a时,目标文件标识a仍然存在于标识列表中。若目标文件标识a对应的待实例化的目标文件预实例化成功,得到对应的目标实例对象,可将目标文件标识a从标识列表中删除,此时标识列表中的目标文件标识为b、c、d。
子线程预实例化成功的待实例化的目标文件后,已经得到了对应的目标实例对象,无需再次对该待实例化的目标文件进行实例化,从而子线程可以将预实例化成功的待实例化的目标文件对应的目标文件标识从标识列表中删除,避免重复对预实例化成功的待实例化的目标文件进行预实例化,节省线程资源,加快实例化的过程。
S120、在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
在进行界面加载时,可以获取与待实例化的目标文件对应的预实例化后的目标实例对象,并基于该目标实例对象加载界面。
在一些实施方式中,在进行界面加载时,可以接收到加载请求,该加载请求可以是基于用户操作触发的,也可以是系统自动触发,其中,该加载请求中可以包括目标文件标识,目标文件标识用于指示进行界面加载所需要的目标实例对象。
在获取到加载请求中的目标文件标识后,可以通过主线程根据目标文件标识在实例数组中查找,以得到对应的查找结果。可理解的是,若实例数组中并未存储有该目标文件标识以及对应的目标实例对象,则在实例数组中无法查找到对应的目标实例对象。其中,无法查找到对应的目标实例对象可包括下述两种情况:
1、实例数组中不存在该目标文件标识;
2、实例数组中将该目标文件标识与预设内容对应存储。
下面以表1表示实例数组为例进行详细说明。
表1
关键字 | 目标文件标识a | 目标文件标识b | 目标文件标识c |
键值 | 目标实例对象A` | null | 目标实例对象C` |
若加载请求中携带的目标文件标识为目标文件标识a,可以在关键字中查找是否存在目标文件标识a,若存在,则在实例数组中获取与目标文件标识a对应的键值,为目标实例对象A`,从而可以从实例数组中获取到对应的目标实例对象。
若加载请求中的携带的目标文件标识为目标文件标识b,可以在关键字中查找是否存在目标文件标识b,若存在,则在实例数组中获取与目标文件标识b对应的键值,得到null,从而无法从实例数组中获取到对应的目标实例对象。
若加载请求中携带的目标文件标识为目标文件标识d,可以在关键字中查找是否存在目标文件标识d,无法查找到,从而无法实例数组中获取到对应的目标实例对象。
在一些实施方式中,在成功从实例数组中获取到目标实例对象之后,为了保证再次进入相同界面时获取到的是一个全新的布局,可以从所述实例数组中删除所述目标实例对象;将所述目标实例对象对应的目标文件的目标文件标识添加至所述标识列表中。
具体的,目标文件标识和目标实例对象以键值对的方式存储在实例数组中,在删除时,通常为整体删除,即将目标实例对象从实例数组中删除时,其对应的目标文件标识也会被删除。将获取到的目标实例对象从实例数组中删除,表明目标实例对象仅在此次进行界面加载时需要,当后续需要加载相同的界面时,需要重新实例化得到新的目标实例对象。
再次加载相同界面时,布局通常会有动态的修改,例如控件的显隐,动态添加控件等,若下次加载相同的界面时,仍然使用此时在实例数组中存储的目标实例对象,则无法显示出正确的界面。从而,成功获取到目标实例对象后,将目标实例对象从实例数组中删除,并将与该目标实例对象对应的目标文件标识添加至标识列表中,可再次进行预实例化,确保下次进入相同的界面时可以显示出正确的界面。
若无法从实例数组中取得目标文件标识对应的目标实例对象,可以在主线程上创建新的布局加载器,在主线程上使用新的布局加载器对目标文件标识对应的待实例化的目标文件进行实例化,以得到对应的目标实例对象,从而保证界面能够正常显示。
其中,主线程可以是基于目标文件标识获取对应的待实例化的目标文件,再利用创建的新的布局加载器对待实例化的目标文件进行实例化,以得到目标实例对象。其中布局加载器又称LayoutInflater,是一个用于加载布局的系统服务,可以将XML文件实例化为对应的实例对象。
在通过主线程进行实例化得到目标实例对象之后,为了保证下次进入相同界面时,可以成功的从实例数组中获取到目标实例对象,可以确定标识列表中是否存在待实例化的目标文件对应的目标文件标识;若标识列表中不存在待实例化的目标文件对应的目标文件标识,将待实例化的目标文件对应的目标文件标识添加至标识列表中,等待在子线程中进行预实例化。
主线程获取到目标实例对象后,可以基于目标实例对象进行界面加载。具体的,在获取到目标实例对象后,主线程可以基于目标实例对象进行绘制渲染,以便及时显示界面。
本申请实施例提供的界面加载方法,在界面加载之前,通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象;在进行界面加载时,可直接获取与待实例化的目标文件对应的预实例化后的目标实例对象,并基于预实例化后的目标实例对象加载界面。由于预先对待实例化的目标文件进行实例化,得到对应的目标实例对象,在进行界面显示时,由于无需进行回调操作,可避免回调操作可能引起的界面加载出错,在底层界面开发中,与布局相关的操作代码不需要在回调中执行,可以按照正常的逻辑编写,降低了界面开发难度。并且需要显示界面时,可快速获取到目标实例对象,无需花费大量时间进行实例化,从而可以减少或避免界面的卡顿,提升界面加载的流畅度。
根据上述实施例所描述的方法,以下将作进一步详细说明。
在本实施例中,将以电子设备中安装的某一应用程序的界面加载为例,对本申请实施例的方法进行详细说明。
如图3所示,一种界面加载方法具体流程包括以下步骤:S210至S250。
S210、在应用程序启动时,通过主线程获取标识列表。
在应用程序启动时,可以调用预实例化工具PreInflateLayoutManager,其中,该PreInflateLayoutManager包含一个用户布局实例化的LayoutInflater对象、一个线程池InflateThreadPool、一个存放待实例化的目标文件对应的目标文件标识的标识列表resIdList、一个保存对待实例化的目标文件进行预实例化后得到的目标实例对象的实例数组inflateViewMap,其中实例数组为map数组,key为待实例化的目标文件对应的目标文件标识,value为待实例化的目标文件对应的目标实例对象。
也就是说,子线程为InflateThreadPool中的一个或多个线程,resIdList为标识列表,用于存放XML布局文件的文件标识,inflateViewMap为实例数组,其中,inflateViewMap中以key-value的形式存放数据,key为目标文件标识,value为目标实例对象,待实例化的目标文件为XML布局文件。
在应用程序启动的过程中,电子设备可以调用预实例化工具PreInflateLayoutManager,并通过主线程将应用程序底层代码中需要显示的界面布局文件即XML布局文件传递给预实例化工具PreInflateLayoutManager,预实例化工具PreInflateLayoutManager中布局预加载方法Preinflate将获取到XML布局文件对应的目标文件标识存入resIdList的队尾,得到标识列表。
S220、通过子线程读取标识列表中的目标文件标识,并对目标文件标识对应的待实例化的目标文件进行预实例化,得到实例数组。
InflateThreadPool中包括至少一个子线程,InflateThreadPool可以不停的循环顺序读取resIdList中的数据,如果读取到目标文件标识就使用预实例化工具PreInflateLayoutManager中的LayoutInflater对目标文件标识对应的XML布局文件进行预实例化。
若预实例化成功,以该目标文件标识为key,预实例化成功得到的目标实例对象为value保存到inflateViewMap中,并删除resIdList中对应的目标文件标识。
若预实例化失败,以该目标文件标识为key,以null为value保存到inflateViewMap中。
S230、当目标界面需要显示时,通过主线程获取携带有目标文件标识的加载请求。
S240、通过主线程基于加载请求中的目标文件标识和实例数组,确定与目标文件标识对应的目标实例对象。
S250、通过主线程基于目标实例对象加载界面。
某一个界面需要显示时,可以通过预实例化工具PreInflateLayoutManager中的Preinflate方法获取目标文件标识,利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象并存入inflateViewMap中,在进行界面加载时,可以从inflateViewMap中取值,取值成功与否有不同的处理。
若取值成功获取到目标实例对象,可直接基于目标实例对象进行界面加载,以进行显示。由于一个界面显示的时候,布局会有动态的修改,例如控件的显隐,动态添加了控件等,如果下次进入相同界面还是使用此时存储在inflateViewMap中的目标实例对象,显示的界面可能是不正确的。由此,从inflateViewMap中成功获取到目标实例对象后,可以删除inflateViewMap中的目标实例对象,再次把该目标实例对象对应的目标文件标识添加到resIdList中进行预实例化,便于再次进入相同界面的时候拿到的是一个全新的布局,以确保显示的界面的正确性。
因为PreInflateLayoutManager的PreInflate方法是在子线程中进行,如果调用PreInflate和调用inflate之间的时间过短,有可能XML布局文件还没有预实例化完成,而且目标文件标识放在resIdList中顺序执行,也有可能XML布局文件还没开始实例化。若在子线程中预实例化失败,也会导致在inflateViewMap取值失败。
若从inflateViewMap取值失败,可以在主线程中新建一个LayoutInflater对象对目标文件标识对应的XML布局文件进行实例化并返回目标实例对象,以确保界面的正常显示以及代码和功能的正常执行。
通过主线程对目标布局文件进行实例化并显示后,可以判断目标文件标识是否存在于resIdList中;若不存在于resIdList中,将目标文件标识添加到resIdList中参与子线程实例化,保证再次进入相同界面的时候,可以成功从inflateViewMap拿到目标布局对象。
上述过程同时也可以参阅图4,示出了界面加载方法中的主线程和子线程的交互示意图,在图4中,虚线左侧为在主线程中执行的操作,虚线右侧为在子线程中执行的操作。
由上可知,在应用程序启动时,主线程获取待实例化的目标文件对应的目标文件标识,存入标识列表中,子线程循环读取标识列表中的目标文件标识,并基于该目标文件标识对XML布局文件进行预实例化,可以避免占用主线程资源,子线程将预实例化后的结果与目标文件标识存储在实例数组中,当界面需要显示时,主线程可以直接基于目标文件标识,从实例数组中获取目标实例对象加载界面,避免花费大量时间进行实例化,即可防止在进行界面加载时的程序出错,也可以减少或避免界面的卡顿。整个实例化过程和界面加载过程均不需要回调操作,进一步避免了回调操作可能引起的程序错误。
并且,当子线程预实例化失败或还没有开始实例化,导致主线程无法从实例数组中取得目标实例对象时,可以直接通过主线程进行实例化,以保证界面的正常显示。
主线程实例化得到目标实例对象后,可以将对应的目标文件标识添加至标识列表中,等待子线程对其进行预先实例化,以确保提升再次进入目标界面时的成功率。
主线程从实例数组中成功取得目标实例对象后,可以将对应的目标文件标识添加至标识列表中,以保证下次进入相同的界面时,可以重新拿到新的目标实例对象,保证显示的界面的正确性。
为了更好地实施以上方法,本申请实施例还提供一种界面加载装置,该界面加载装置具体可以集成在电子设备中,该电子设备可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等终端设备。
比如,在本实施例中,将以界面加载装置具体集成在终端设备中为例,对本申请实施例的方法进行详细说明。
例如,如图5所示,该界面加载装置300可以包括预实例化模块310以及加载模块320。
预实例化模块310用于通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;加载模块320用于在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
在一些实施例中,预实例化工具包括布局预加载方法及布局加载器,预实例化模块310还用于通过预实例化工具中的布局预加载方法获取待实例化的目标文件对应的目标文件标识;利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象。
在一些实施例中,预实例化模块310还用于利用预实例化工具中的布局加载器,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象。
在一些实施例中,界面加载装置300还包括实例化模块,若在进行界面加载时,未获取到与待实例化的目标文件对应的预实例化后的目标实例对象,实例化模块用于在主线程上创建新的布局加载器;在主线程上使用所述新的布局加载器对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象。
在一些实施例中,预实例化工具还包括标识列表,用于存储待实例化的目标文件对应的目标文件标识,所述在主线程上使用所述新的布局加载器对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象之后,预实例化模块310还用于确定所述标识列表中是否存在所述待实例化的目标文件对应的目标文件标识;若所述标识列表中不存在所述待实例化的目标文件对应的目标文件标识,将所述待实例化的目标文件对应的目标文件标识添加至所述标识列表中。
在一些实施例中,预实例化工具还包括标识列表,用于存储待实例化的目标文件对应的目标文件标识,在通过预实例化工具中的布局预加载方法获取待实例化的目标文件对应的目标文件标识之后,预实例化模块310还用于将待实例化的目标文件对应的目标文件标识依序存储在标识列表中,在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,预实例化模块310还用于删除标识列表中预实例化后的目标文件对应的目标文件标识。
在一些实施例中,预实例化工具还包括实例数组,在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,预实例化模块310还用于将待实例化的目标文件对应的目标文件标识,待实例化的目标文件对应的目标实例对象,以及目标文件标识与目标实例对象的对应关系存储在所述实例数组中。
在一些实施例中,预实例化模块310还用于将待实例化的目标文件对应的目标文件标识以及待实例化的目标文件对应的目标实例对象分别作为键值对中的关键字和键值,存储在所述实例数组中。
在一些实施例中,在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象之后,预实例化模块310还用于从所述实例数组中删除所述目标实例对象;将所述目标实例对象对应的目标文件的目标文件标识添加至所述标识列表中。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的界面加载装置在界面加载之前使用预实例化工具对待实例化的目标文件进行预实例化,得到预实例化后的目标实例对象,在加载界面时,可直接获取目标实例对象进行界面加载,在界面加载的过程中无需回调操作,避免了回调操作可能导致的界面加载出错。并且预先进行实例化得到目标实例对象,在进行界面加载时,可快速地获取到目标实例对象,无需花费大量时间进行实例化,从而减少或避免界面的卡顿,提升界面加载的流畅度。
相应的,本申请实施例还提供一种电子设备,该电子设备可以为终端或服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机、个人数字助理(Personal Digital Assistant,PDA)等终端设备。
如图6所示,图6为本申请实施例提供的电子设备的结构示意图,该电子设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备400的各个部分,通过运行或加载存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备400的各种功能和处理数据,从而对电子设备400进行整体监控。
在本申请实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:
通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;
在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图6所示,电子设备400还包括:触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407。其中,处理器401分别与触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407电性连接。本领域技术人员可以理解,图6中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触控显示屏403可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏403可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏403而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏403也可以作为输入单元406的一部分实现输入功能。
在本申请实施例中,通过处理器401执行应用程序在触控显示屏403上生成可视化界面,以向用户展示。该触控显示屏403用于呈现可视化界面以及接收用户作用于可视化界面产生的操作指令。
射频电路404可用于收发射频信号,以通过无线通信与网络设备或其他电子设备建立无线通讯,与网络设备或其他电子设备之间收发信号。
音频电路405可以用于通过扬声器、传声器提供用户与电子设备之间的音频接口。音频电路405可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路405接收后转换为音频数据,再将音频数据输出处理器401处理后,经射频电路404以发送给比如另一电子设备,或者将音频数据输出至存储器402以便进一步处理。音频电路405还可能包括耳塞插孔,以提供外设耳机与电子设备的通信。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源407用于给电子设备400的各个部件供电。可选的,电源407可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源407还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管图6中未示出,电子设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
由上可知,本实施例提供的电子设备可以在界面加载之前使用预实例化工具对待实例化的目标文件进行预实例化,得到预实例化后的目标实例对象,在加载界面时,可直接获取目标实例对象进行界面加载,无需等待回调后再执行与目标实例对象相关的操作,避免程序出错。并且预先进行实例化得到目标实例对象,在进行界面加载时,可快速地获取到目标实例对象,无需花费大量时间进行实例化,从而减少或避免界面的卡顿,提升界面加载的流畅度。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种界面加载方法中的步骤。例如,该计算机程序可以执行如下步骤:
通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;
在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种界面加载方法中的步骤,因此,可以实现本申请实施例所提供的任一种界面加载方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种界面加载方法、装置、存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种界面加载方法,其特征在于,所述方法包括:
在响应于界面的加载请求之前,通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;
响应于界面的加载请求,若获取到与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面;
响应于界面的加载请求,若未获取到与待实例化的目标文件对应的预实例化后的目标实例对象且所述待实例化的目标文件未预实例化完成,通过主线程对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象,并基于所述目标实例对象加载界面。
2.根据权利要求1所述的方法,其特征在于,预实例化工具包括布局预加载方法及布局加载器,所述通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,包括:
通过预实例化工具中的布局预加载方法获取待实例化的目标文件对应的目标文件标识;
利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象。
3.根据权利要求2所述的方法,其特征在于,利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,包括:
利用预实例化工具中的布局加载器,在子线程上对目标文件标识对应的待实例化的目标文件进行异步预实例化,得到与待实例化的目标文件对应的目标实例对象。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若在进行界面加载时,未获取到与待实例化的目标文件对应的预实例化后的目标实例对象且所述待实例化的目标文件预实例化失败,在主线程上创建新的布局加载器;
在主线程上使用所述新的布局加载器对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象。
5.根据权利要求4所述的方法,其特征在于,所述预实例化工具还包括标识列表,用于存储待实例化的目标文件对应的目标文件标识,所述在主线程上使用所述新的布局加载器对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象之后,还包括:
确定所述标识列表中是否存在所述待实例化的目标文件对应的目标文件标识;
若所述标识列表中不存在所述待实例化的目标文件对应的目标文件标识,将所述待实例化的目标文件对应的目标文件标识添加至所述标识列表中。
6.根据权利要求2所述的方法,其特征在于,预实例化工具还包括标识列表,用于存储待实例化的目标文件对应的目标文件标识,在通过预实例化工具中的布局预加载方法获取待实例化的目标文件对应的目标文件标识之后,所述方法还包括:
将待实例化的目标文件对应的目标文件标识依序存储在标识列表中;
在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,所述方法还包括:
删除标识列表中预实例化后的目标文件对应的目标文件标识。
7.根据权利要求6所述的方法,其特征在于,预实例化工具还包括实例数组,在利用预实例化工具中的布局加载器对目标文件标识对应的待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象之后,所述方法还包括:
将待实例化的目标文件对应的目标文件标识,待实例化的目标文件对应的目标实例对象,以及目标文件标识与目标实例对象的对应关系存储在所述实例数组中。
8.根据权利要求7所述的方法,其特征在于,所述将待实例化的目标文件对应的目标文件标识,待实例化的目标文件对应的目标实例对象,以及目标文件标识与目标实例对象的对应关系存储在所述实例数组中,包括:
将待实例化的目标文件对应的目标文件标识以及待实例化的目标文件对应的目标实例对象分别作为键值对中的关键字和键值,存储在所述实例数组中。
9.根据权利要求7所述的方法,其特征在于,在进行界面加载时,获取与待实例化的目标文件对应的预实例化后的目标实例对象之后,还包括:
从所述实例数组中删除所述目标实例对象;
将所述目标实例对象对应的目标文件的目标文件标识添加至所述标识列表中。
10.一种界面加载装置,其特征在于,所述装置包括:
预实例化模块,用于在响应于界面的加载请求之前,通过预实例化工具对待实例化的目标文件进行预实例化,得到与待实例化的目标文件对应的目标实例对象,所述预实例化工具用于在界面加载之前预先对待实例化的目标文件进行实例化;
加载模块,用于响应于界面的加载请求,若获取到与待实例化的目标文件对应的预实例化后的目标实例对象,以基于预实例化后的目标实例对象加载界面;
响应于界面的加载请求,若未获取到与待实例化的目标文件对应的预实例化后的目标实例对象且所述待实例化的目标文件未预实例化完成,通过主线程对所述待实例化的目标文件进行实例化,得到与待实例化的目标文件对应的目标实例对象,并基于所述目标实例对象加载界面。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行如权利要求1~9任一项所述的界面加载方法中的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1~9任一项所述的界面加载方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111528363.9A CN114237743B (zh) | 2021-12-14 | 2021-12-14 | 界面加载方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111528363.9A CN114237743B (zh) | 2021-12-14 | 2021-12-14 | 界面加载方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114237743A CN114237743A (zh) | 2022-03-25 |
CN114237743B true CN114237743B (zh) | 2023-03-21 |
Family
ID=80755893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111528363.9A Active CN114237743B (zh) | 2021-12-14 | 2021-12-14 | 界面加载方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237743B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756298B (zh) * | 2022-04-20 | 2024-06-04 | 广州博冠信息科技有限公司 | 程序实例管理方法及装置、计算机存储介质、电子设备 |
CN115686287A (zh) * | 2022-11-03 | 2023-02-03 | 广州市保伦电子有限公司 | 一种wpf应用程序间的快速切换方法及处理终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10146842B2 (en) * | 2015-11-19 | 2018-12-04 | Google Llc | Pre-instantiating native applications in background |
CN113779451A (zh) * | 2020-09-16 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种页面加载方法和装置 |
CN112433792A (zh) * | 2020-11-12 | 2021-03-02 | 金蝶软件(中国)有限公司 | 界面加载方法、装置、计算机设备和存储介质 |
-
2021
- 2021-12-14 CN CN202111528363.9A patent/CN114237743B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114237743A (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3575962B1 (en) | Method and device for preloading application, storage medium and intelligent terminal | |
US20200342338A1 (en) | Method for preloading application, storage medium, and terminal | |
US11467855B2 (en) | Application preloading method and device, storage medium and terminal | |
CN108363593B (zh) | 应用程序预加载方法、装置、存储介质及终端 | |
US20200364085A1 (en) | Task scheduling based on performance control conditions for multiple processing units | |
US11604660B2 (en) | Method for launching application, storage medium, and terminal | |
US11099861B2 (en) | Method for preloading application, storage medium, and terminal | |
CN112257135B (zh) | 一种基于多线程的模型加载方法、装置、存储介质及终端 | |
CN114237743B (zh) | 界面加载方法、装置、电子设备和存储介质 | |
US20150160976A1 (en) | Multitasking method and electronic device therefor | |
CN110309475B (zh) | 一种页面展现方法、装置、终端设备及存储介质 | |
US20210208935A1 (en) | Method for Scheduling Multi-Core Processor, Terminal, and Storage Medium | |
CN112882764B (zh) | 组件加载方法、装置、计算机设备及存储介质 | |
CN105847446B (zh) | 一种网络数据的获取方法、装置和系统 | |
CN115469937A (zh) | 插件运行方法、装置、电子设备及存储介质 | |
CN110427213B (zh) | 一种智能配置软件的实现方法、装置、设备及存储介质 | |
CN108762838B (zh) | 应用程序预加载方法、装置、存储介质及终端 | |
CN114327087A (zh) | 输入事件处理方法、装置、电子设备和存储介质 | |
EP2955628A1 (en) | Method and device for displaying application execution screen in electronic device | |
CN114510334A (zh) | 类实例的调用方法、装置、电子设备及自动驾驶车辆 | |
CN114647411A (zh) | 编程界面加载方法、装置、电子设备及存储介质 | |
CN114995970A (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN114489892A (zh) | 数据处理方法、装置、计算机可读存储介质和计算机设备 | |
CN112463626A (zh) | 内存泄漏定位方法、装置、计算机设备及存储介质 | |
CN113961585A (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 |