CN111625290B - 一种Android平台下布局文件预加载方法、装置及电子设备 - Google Patents
一种Android平台下布局文件预加载方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111625290B CN111625290B CN202010376091.4A CN202010376091A CN111625290B CN 111625290 B CN111625290 B CN 111625290B CN 202010376091 A CN202010376091 A CN 202010376091A CN 111625290 B CN111625290 B CN 111625290B
- Authority
- CN
- China
- Prior art keywords
- thread
- resource
- application program
- view
- creating
- 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
- 238000000034 method Methods 0.000 title claims abstract description 99
- 230000008569 process Effects 0.000 claims abstract description 69
- 230000000712 assembly Effects 0.000 claims abstract description 12
- 238000000429 assembly Methods 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 49
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000009877 rendering Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003137 locomotive effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明属于计算机技术领域,提供一种Android平台下布局文件预加载方法、装置、电子设备和计算机可读介质,通过预先加载的方式加载移动终端资源,提升了应用程序冷启动的速度,方法包括:响应于用户的点击,冷启动应用程序;创建所述应用程序的主进程,所述主进程包括第一线程;根据待解析的资源组件数量在主进程中创建第二线程,所述第二线程解析所述资源组件;所述第一线程加载所述第二线程解析完成的资源组件,完成应用程序冷启动。采用该技术方案,利用移动终端处理器多核的特点,采用异步加载的方式执行应用程序的冷启动,在启动过程中提前加载资源组件,从而达到应用程序加载速度以及启动速度加快的目的。
Description
技术领域
本发明属于计算机技术领域,特别适用于移动终端应用程序启动领域,更具体的是涉及一种Android平台下布局文件预加载方法、装置及电子设备。
背景技术
随着半导体技术的不断发展,目前移动终端中使用的处理器都是多核处理器。多核处理器使得移动终端的性能得到很大的提高,可以并行处理多个任务。
但目前移动终端中装载的启动应用程序在冷启动过程中,资源文件的渲染操作是在主线程中同步进行的,因而存在加载速度缓慢的问题,特别是资源文件内容复杂时,加载速度缓慢现象会更加明显。导致目前的应用程序冷启动存在加载过程占用内存高、页面加载效率低、用户体验效果差等问题。
发明内容
本发明旨在解决目前的应用程序冷启动存在加载过程占用内存高、页面加载效率低、用户体验效果差等问题。
为解决上述技术问题,本发明的一方面提出一种Android平台下布局文件预加载方法,方法包括:
响应于用户的点击,冷启动应用程序;
创建所述应用程序的主进程,所述主进程包括第一线程;
根据待解析的资源组件数量在主进程中创建第二线程,所述第二线程解析所述资源组件;
所述第一线程加载所述第二线程解析完成的资源组件,完成应用程序冷启动。
根据本发明的一种优选实施方式,所述创建所述应用程序的主进程,所述主进程包括第一线程还包括:
所述第一线程创建并初始化Application;
所述第一线程调用onCreate函数,创建并初始化MainActivity。
根据本发明的一种优选实施方式,所述根据待解析的资源组件数量创建数量相同的第二线程具体为,根据所述资源组件数量创建相同数量的第二线程;
可选地,所述第二线程解析所述资源组件进一步包括,
设置所述第二线程优先级为可见线程THREAD_PRIORITY_DISPLAY;
设置所述第二线程的类加载器ClassLoader,用于加载所述资源组件中的相应加载类;
创建所述资源组件解析器,解析所述资源组件,获得对应的View;
将解析所述资源组件获得的对应的View放入内存。
根据本发明的一种优选实施方式,所述第一线程加载所述第二线程解析完成的资源组件进一步包括,所述onCreat函数从内存中读取所述View;
可选地,所述onCreat函数从内存中读取所述View进一步包括,
所述onCreat函数调用setContentView函数,构建DecorView;
从内存中读取所述View,将所述View添加到DecorView。
根据本发明的一种优选实施方式,所述完成应用程序冷启动进一步包括:
将添加View的DecorView添加到Window,完成应用程序的冷启动。
本发明第二方面提出一种Android平台下布局文件预加载装置,包括:
响应模块,用于响应于用户的点击,冷启动应用程序;
第一线程创建模块,用于创建所述应用程序的主进程,所述主进程包括第一线程;
第二线程创建模块,用于根据待解析的资源组件数量在主进程中创建第二线程,所述第二线程解析所述资源组件;
加载模块,所述第一线程加载所述第二线程解析完成的资源组件,完成应用程序冷启动。
根据本发明的一种优选实施方式,创建所述应用程序的主进程,所述主进程包括第一线程还包括,
所述第一线程创建并初始化Application;
所述第一线程调用onCreate函数,创建并初始化MainActivity。
根据本发明的一种优选实施方式,所述根据待解析的资源组件数量创建数量相同的第二线程具体为,根据所述资源组件数量创建相同数量的第二线程;
可选地,所述第二线程解析所述资源组件进一步包括,
设置所述第二线程优先级为可见线程THREAD_PRIORITY_DISPLAY;
设置所述第二线程的类加载器ClassLoader,用于加载所述资源组件中的相应加载类;
创建所述资源组件解析器,解析所述资源组件,获得对应的View;
将解析所述资源组件获得的对应的View放入内存;
可选地,所述第一线程加载所述第二线程解析完成的资源组件进一步包括,所述onCreat函数从内存中读取所述View。
本发明第三方面提出一种电子设备,包括处理器和存储器,所述存储器用于存储计算机可执行程序,当所述计算机程序被所述处理器执行时,所述处理器执行所述的方法。
本发明第四方面还提出一种计算机可读介质,存储有计算机可执行程序,所述计算机可执行程序被执行时,实现所述的方法。
采用该技术方案,利用移动终端处理器多核的特点,采用异步加载的方式执行应用程序的冷启动,在启动过程中提前加载资源组件,从而达到应用程序加载速度以及启动速度加快的目的。
附图说明
图1是现有技术中APP冷启动的流程示意图;
图2是本发明实施例中一种Android平台下布局文件预加载方法的流程示意图;
图3是本发明实施例一中Android平台下布局文件预加载方法具体的流程图;
图4是本发明实施例一中开启多个异步线程的具体流程图;
图5是本发明实施例中一种Android平台下布局文件预加载装置的结构示意图;
图6是本发明实施例中的电子设备的结构示意图;
图7是本发明实施例中的计算机可读记录介质的示意图。
具体实施方式
在对于具体实施例的介绍过程中,对结构、性能、效果或者其他特征的细节描述是为了使本领域的技术人员对实施例能够充分理解。但是,并不排除本领域技术人员可以在特定情况下,以不含有上述结构、性能、效果或者其他特征的技术方案来实施本发明。
附图中的流程图仅是一种示例性的流程演示,不代表本发明的方案中必须包括流程图中的所有的内容、操作和步骤,也不代表必须按照图中所显示的的顺序执行。例如,流程图中有的操作/步骤可以分解,有的操作/步骤可以合并或部分合并,等等,在不脱离本发明的发明主旨的情况下,流程图中显示的执行顺序可以根据实际情况改变。
附图中的框图一般表示的是功能实体,并不一定必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理单元装置和/或微控制器装置中实现这些功能实体。
各附图中相同的附图标记表示相同或类似的元件、组件或部分,因而下文中可能省略了对相同或类似的元件、组件或部分的重复描述。还应理解,虽然本文中可能使用第一、第二、第三等表示编号的定语来描述各种器件、元件、组件或部分,但是这些器件、元件、组件或部分不应受这些定语的限制。也就是说,这些定语仅是用来将一者与另一者区分。例如,第一器件亦可称为第二器件,但不偏离本发明实质的技术方案。此外,术语“和/或”、“及/或”是指包括所列出项目中的任一个或多个的所有组合。
在现有技术中,安卓系统的APP启动时,跳转需要启动的Activity页面,在setContentView()函数中开始开始同步渲染(渲染过程为单线程操作)直到XML全部解析渲染完毕。图1是现有技术APP冷启动的流程示意图,具体的流程如图1所示:
S101、用户点击App桌面图标;
S102、App开始启动加载;
S103、系统会创建App进程;
S104、初始化Application;
S105、跳转创建主MainActivity页面,调用onCreate()函数,调用setContentView()函数,Inflater开始加载解析要加载XML文件对视图进行布局最终解析渲染为用户可见的view,当跳转到要呈现的页面之后,才开始对当前页面所需的XML资源文件进行加载解析,解析完毕得到xml对应的View并添加到DecorView父布局上并最终添加到window上呈现给用户;
S106、启动完成。
现有技术中的这种方法在App冷启动过程中,需要做一系列的初始化解析操作,并且该过程是在主线程(单线程)同步执行的,并没有有效利用现有手机系统拥有多核CPU的特性,因此存在存在加载过程占用内存高、页面加载效率低等问题。
因此,本发明提供一种Android平台下布局文件预加载方法、装置及电子设备。
图2是本发明一种Android平台下布局文件预加载方法的流程示意图,如图1所示,本发明具有如下步骤:
S201、响应于用户的点击,冷启动应用程序。
应用程序APP冷启动是指软件从关闭状态到打开状态的过程,比如手机重启后点击应用程序图标启动是冷启动,或者应用程序切到后台长时间没有使用系统会为了节省资源会将应用程序的进程关闭,再次点击图标进行启动也是冷启动。应用程序冷启动是相对于热启动而言的,冷启动是指启动应用时,操作系统中不存在应用的进程,这时系统会为应用创建一个新的进程。相对而言,热启动是指启动应用时,系统中已经存在应用的进程,比如应用程序启动后切到后台,但没有被系统关闭进程,此时再点击应用程序图标,对应的应用程序进程会切换到前台,就是热启动。通常来讲,热启动速度要比冷启动速度快。
在本实施方式中,是应用程序冷启动过程中资源的异步加载,即系统中没有应用程序对应的线程,用户点击应用程序图标后,在系统中创建应用程序对应的进程。
S202、创建所述应用程序的主进程,所述主进程包括第一线程。
在上述技术方案的基础上,进一步地,所述创建所述应用程序的主进程,所述主进程包括第一线程还包括:
所述第一线程创建并初始化Application;
所述第一线程调用onCreate函数,创建并初始化MainActivity。
在上述技术方案的基础上,进一步地,所述根据待解析的资源组件数量创建数量相同的第二线程具体为:根据所述资源组件数量创建相同数量的第二线程。
Activity是安卓系统中最基本也是最为常见用的四大组件之一,适用于开发人员和系统管理员,主要是用户和应用程序之间进行交互的接口;View是安卓系统中一种界面层的控件的一种抽象,它代表了一个控件;Window是安卓系统中的一个窗口概念,安卓系统中所有的视图都是通过Window来呈现的。Activity提供Window,View被添加到Window中。
应用程序冷启动,在安卓系统中创建对应的主进程,通常一个应用程序仅对应有一个进程。在本实施方式中主进程包括多个线程,其中第一线程创建并初始化Application,安卓系统的Application是一个系统组件。当应用程序启动时,系统会自动创建一个Application对象,用于存储系统的一些信息。安卓系统自动会为每个程序运行时创建一个Application的对象且只创建一个。
Application调用onCreate函数,创建并初始化MainActivity。OnCreate函数主要做这个MainActivity启动时一些必要的初始化工作,这个函数调用完后,这个MainActivity并不是说就已经启动了,或者是跳到前台了,而是还需要其他的大量工作,比如onCreate之后还有onRestart函数和onStart函数等。
S203、根据待解析的资源组件数量在主进程中创建第二线程,所述第二线程解析所述资源组件。
在本实施方式中,资源组件为XML资源文件,确定应用程序首页必然用到的XML资源文件数量,创建数量相同的第二线程。因为XML资源文件对应应用程序中自定义的View,确定XML资源文件的数量就是确定首页中要加载的自定义的View的数量。每一个第二线程解析一个XML资源文件,利用处理器多核多线程的处理能力,将原先单进程的冷启动进程分解为异步多线程,提升了应用程序冷启动速度。
在上述技术方案的基础上,进一步地,所述根据待解析的资源组件数量创建数量相同的第二线程具体为:根据所述资源组件数量创建相同数量的第二线程。
在上述技术方案的基础上,进一步地,所述第二线程解析所述资源组件进一步包括:
设置所述第二线程优先级为可见线程THREAD_PRIORITY_DISPLAY;
设置所述第二线程的类加载器ClassLoader,用于加载所述资源组件中的相应加载类;
创建所述资源组件解析器,解析所述资源组件,获得对应的View;
将解析所述资源组件获得的对应的View放入内存。
在本实施方式中,安卓系统中的线程包括多种优先级,通过合理分配优先级解决多线程并发的阻塞问题,线程的优先级包括THREAD_PRIORITY_AUDIO标准音乐播放使用的线程优先级,THREAD_PRIORITY_BACKGROUND标准后台程序,THREAD_PRIORITY_DEFAULT默认应用的优先级等等。创建第二线程后,为了避免安卓系统将第二线程关闭,导致应用程序加载失败情况的出现,通过Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY)将第二线程的优先级提升为可见线程优先级,确保了稳定性。
在第二线程中通过资源解析器LayoutInflater对XML资源文件进行解析并最终填充为View。将解析获得的多个View存入内存,方便第一线程的加载。
在本实施方式中,第一线程和多个第二线程同时进行。
S204、所述第一线程加载所述第二线程解析完成的资源组件,完成应用程序冷启动。
在上述技术方案的基础上,进一步地,所述第一线程加载所述第二线程解析完成的资源组件进一步包括:所述onCreat函数从内存中读取所述View。
在上述技术方案的基础上,进一步地,所述MainActivity中的onCreat函数从内存中读取所述View进一步包括:
所述onCreat函数调用setContentView函数,构建DecorView;
从内存中读取所述View,将所述View添加到DecorView。
在本实施方式中,onCreat函数调用setContentView函数,在setContentView函数中PhoneWindow创建了一个顶级视图DecorView。一个或多个View是加载在DecorView中,因此第一线程从内存中读取View加载在DecorView中。
在上述技术方案的基础上,进一步地,所述完成应用程序冷启动进一步包括:
将添加View的DecorView添加到Window,完成应用程序的冷启动。
在本实施方式中,给用户展示的是Window而不是MainActivity,因此需要将添加View的DecorView添加到Window,向用户展示启动后的界面,完成应用程序的冷启动。
在传统的应用程序冷启动方式中,仅仅有一个线程,在创建完DecorView后执行XML资源文件解析,如果XML资源文件较多或者较复杂,启动时间会很长,给用户体验并不好。而在本发明中,由于第一线程和第二线程同时进行,在第一线程创建DecorView的时候,第二线程已经完成XML资源文件解析,即在MainTabActivity获取到焦点之前,已经把该MainTabActivity所需的布局文件已经初始化渲染完毕,节省了时间,大大提升了用户感受。
图3是本发明实施例一中Android平台下布局文件预加载方法具体的流程图,具体流程如下:
S301、用户点击icon;
S302、App开始自动加载;
S303、创建App主进程
S304、初始化Application;
S305、开启多个异步线程,Inflate解析XML文件得到view;
S306、跳转创建主MainActivity页面,调用onCreate()函数,调用setContentView()函数,从内存中读取view添加到DecorView父布局中并最终添加到window中呈现给用户;
S307、启动完成。
其中步骤S305的具体流程图如图4所示。
根据需要解析的XML文件构建相同个数的异步线程;设置线程优先级为THREAD_PRIORITY_DISPLAY,设置类加载器ClassLoader,构建资源解析器LayoutInflater,解析得到XML对应的view放入内存中。
图5是本发明实施例中一种Android平台下布局文件预加载装置的结构示意图,如图5所示,本发明提供一种Android平台下布局文件预加载装500,包括:
响应模块501,用于响应于用户的点击,冷启动应用程序。
应用程序APP冷启动是指软件从关闭状态到打开状态的过程,比如手机重启后点击应用程序图标启动是冷启动,或者应用程序切到后台长时间没有使用系统会为了节省资源会将应用程序的进程关闭,再次点击图标进行启动也是冷启动。应用程序冷启动是相对于热启动而言的,冷启动是指启动应用时,操作系统中不存在应用的进程,这时系统会为应用创建一个新的进程。相对而言,热启动是指启动应用时,系统中已经存在应用的进程,比如应用程序启动后切到后台,但没有被系统关闭进程,此时再点击应用程序图标,对应的应用程序进程会切换到前台,就是热启动。通常来讲,热启动速度要比冷启动速度快。
在本实施方式中,是应用程序冷启动过程中资源的异步加载,即系统中没有应用程序对应的线程,用户点击应用程序图标后,在系统中创建应用程序对应的进程。
第一线程创建模块502,用于创建所述应用程序的主进程,所述主进程包括第一线程。
在上述技术方案的基础上,进一步地,所述创建所述应用程序的主进程,所述主进程包括第一线程还包括:
所述第一线程创建并初始化Application;
所述第一线程调用onCreate函数,创建并初始化MainActivity。
在上述技术方案的基础上,进一步地,所述根据待解析的资源组件数量创建数量相同的第二线程具体为:根据所述资源组件数量创建相同数量的第二线程。
Activity是安卓系统中最基本也是最为常见用的四大组件之一,适用于开发人员和系统管理员,主要是用户和应用程序之间进行交互的接口;View是安卓系统中一种界面层的控件的一种抽象,它代表了一个控件;Window是安卓系统中的一个窗口概念,安卓系统中所有的视图都是通过Window来呈现的。Activity提供Window,View被添加到Window中。
在安卓系统中创建对应的主进程,通常一个应用程序仅对应有一个进程。在本实施方式中主进程包括多个线程,其中第一线程创建并初始化Application,安卓系统的Application是一个系统组件。当应用程序启动时,系统会自动创建一个Application对象,用于存储系统的一些信息。安卓系统自动会为每个程序运行时创建一个Application的对象且只创建一个。
Application调用onCreate函数,创建并初始化MainActivity。OnCreate函数主要做这个MainActivity启动时一些必要的初始化工作,这个函数调用完后,这个MainActivity并不是说就已经启动了,或者是跳到前台了,而是还需要其他的大量工作,比如onCreate之后还有onRestart函数和onStart函数等。
第二线程创建模块503,用于根据待解析的资源组件数量在主进程中创建第二线程,所述第二线程解析所述资源组件。
在本实施方式中,资源组件为XML资源文件,确定应用程序首页必然用到的XML资源文件数量,创建数量相同的第二线程。因为XML资源文件对应应用程序中自定义的View,确定XML资源文件的数量就是确定首页中要加载的自定义的View的数量。每一个第二线程解析一个XML资源文件,利用处理器多核多线程的处理能力,将原先单进程的冷启动进程分解为异步多线程,提升了应用程序冷启动速度。
在上述技术方案的基础上,进一步地,所述根据待解析的资源组件数量创建第二线程具体为:根据所述资源组件数量创建相同数量的第二线程。
在上述技术方案的基础上,进一步地,所述第二线程解析所述资源组件进一步包括:
设置所述第二线程优先级为可见线程THREAD_PRIORITY_DISPLAY;
设置所述第二线程的类加载器ClassLoader,用于加载所述资源组件中的相应加载类;
创建所述资源组件解析器,解析所述资源组件,获得对应的View;
将解析所述资源组件获得的对应的View放入内存。
在本实施方式中,安卓系统中的线程包括多种优先级,通过合理分配优先级解决多线程并发的阻塞问题,线程的优先级包括THREAD_PRIORITY_AUDIO标准音乐播放使用的线程优先级,THREAD_PRIORITY_BACKGROUND标准后台程序,THREAD_PRIORITY_DEFAULT默认应用的优先级等等。创建第二线程后,为了避免安卓系统将第二线程关闭,导致应用程序加载失败情况的出现,通过Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY)将第二线程的优先级提升为可见线程优先级,确保了稳定性。
在第二线程中通过资源解析器LayoutInflater对XML资源文件进行解析并最终填充为View。将解析获得的多个View存入内存,方便第一线程的加载。
在本实施方式中,第一线程和多个第二线程同时进行。
加载模块504,所述第一线程加载所述第二线程解析完成的资源组件,完成应用程序冷启动。
在上述技术方案的基础上,进一步地,所述第一线程加载所述第二线程解析完成的资源组件进一步包括:所述onCreat函数从内存中读取所述View。
在上述技术方案的基础上,进一步地,所述MainActivity中的onCreat函数从内存中读取所述View进一步包括:
所述onCreat函数调用setContentView函数,构建DecorView;
从内存中读取所述View,将所述View添加到DecorView。
在本实施方式中,onCreat函数调用setContentView函数,在setContentView函数中PhoneWindow创建了一个顶级视图DecorView。一个或多个View是加载在DecorView中,因此第一线程从内存中读取View加载在DecorView中。
在上述技术方案的基础上,进一步地,所述完成应用程序冷启动进一步包括:
将添加View的DecorView添加到Window,完成应用程序的冷启动。
在本实施方式中,给用户展示的是Window而不是MainActivity,因此需要将添加View的DecorView添加到Window,向用户展示启动后的界面,完成应用程序的冷启动。
如图6所示,电子设备以通用计算设备的形式表现。其中处理器可以是一个,也可以是多个并且协同工作。本发明也不排除进行分布式处理,即处理器可以分散在不同的实体设备中。本发明的电子设备并不限于单一实体,也可以是多个实体设备的总和。
所述存储器存储有计算机可执行程序,通常是机器可读的代码。所述计算机可读程序可以被所述处理器执行,以使得电子设备能够执行本发明的方法,或者方法中的至少部分步骤。
所述存储器包括易失性存储器,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以是非易失性存储器,如只读存储单元(ROM)。
可选的,该实施例中,电子设备还包括有I/O接口,其用于电子设备与外部的设备进行数据交换。I/O接口可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
应当理解,图6显示的电子设备仅仅是本发明的一个示例,本发明的电子设备中还可以包括上述示例中未示出的元件或组件。例如,有些电子设备中还包括有显示屏等显示单元,有些电子设备还包括人机交互元件,例如按扭、键盘等。只要该电子设备能够执行存储器中的计算机可读程序以实现本发明方法或方法的至少部分步骤,均可认为是本发明所涵盖的电子设备。
图7是本发明的一个实施例的计算机可读记录介质的示意图。如图7所示,计算机可读记录介质中存储有计算机可执行程序,所述计算机可执行程序被执行时,实现本发明上述的基于旋转角监测的车辆智能助力推行方法。所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
通过以上对实施方式的描述,本领域的技术人员易于理解,本发明可以由能够执行特定计算机程序的硬件来实现,例如本发明的系统,以及系统中包含的电子处理单元、服务器、客户端、手机、控制单元、处理器等,本发明也可以由包含上述系统或部件的至少一部分的车辆来实现。本发明也可以由执行本发明的方法的计算机软件来实现,例如由机车端的微处理器、电子控制单元,客户端、服务器端等执行的控制软件来实现。但需要说明的是,执行本发明的方法的计算机软件并不限于由一个或特定个的硬件实体中执行,其也可以是由不特定具体硬件的以分布式的方式来实现,例如计算机程序执行的某些方法步骤可以在机车端执行,另一部分可以在移动终端或智能头盔等中执行。对于计算机软件,软件产品可以存储在一个计算机可读的存储介质(可以是CD-ROM,U盘,移动硬盘等)中,也可以分布式存储于网络上,只要其能使得电子设备执行根据本发明的方法。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种Android平台下布局文件预加载方法,其特征在于,方法包括:
响应于用户的点击,冷启动应用程序;
创建所述应用程序的主进程,所述主进程包括第一线程,所述第一线程创建并初始化Application;所述第一线程调用onCreate函数,创建并初始化MainActivity;
根据待解析的资源组件数量在主进程中创建相同数量的第二线程,所述第二线程解析所述资源组件,设置所述第二线程优先级为可见线程THREAD_PRIORITY_DISPLAY;设置所述第二线程的类加载器ClassLoader,用于加载所述资源组件中的相应加载类;创建所述资源组件解析器,解析所述资源组件,获得对应的View;将解析所述资源组件获得的对应的View放入内存;
所述第一线程加载所述第二线程解析完成的资源组件,所述onCreate 函数从内存中读取所述View,所述onCreate 函数调用setContentView函数,构建DecorView;从内存中读取所述第二线程View,将所述View添加到DecorView;完成应用程序冷启动。
2.如权利要求1所述的布局文件预加载方法,其特征在于,所述完成应用程序冷启动进一步包括:
将添加View的DecorView添加到Window,完成应用程序的冷启动。
3.一种Android平台下布局文件预加载装置,其特征在于,装置包括:
响应模块,用于响应于用户的点击,冷启动应用程序;
第一线程创建模块,用于创建所述应用程序的主进程,所述主进程包括第一线程,所述第一线程创建并初始化Application;所述第一线程调用onCreate函数,创建并初始化MainActivity;
第二线程创建模块,用于根据待解析的资源组件数量在主进程中创建相同数量的第二线程,所述第二线程解析所述资源组件,设置所述第二线程优先级为可见线程THREAD_PRIORITY_DISPLAY;设置所述第二线程的类加载器ClassLoader,用于加载所述资源组件中的相应加载类;创建所述资源组件解析器,解析所述资源组件,获得对应的View;将解析所述资源组件获得的对应的View放入内存;
加载模块,所述第一线程加载所述第二线程解析完成的资源组件,所述onCreat函数从内存中读取所述View; 所述onCreate 函数从内存中读取所述View进一步包括,所述onCreate 函数调用setContentView函数,构建DecorView;从内存中读取所述第二线程View,将所述View添加到DecorView;完成应用程序冷启动。
4.一种电子设备,包括处理器和存储器,所述存储器用于存储计算机可执行程序,其特征在于:
当所述计算机可执行程序被所述处理器执行时,所述处理器执行如权利要求1至2中任一项所述的方法。
5.一种计算机可读介质,存储有计算机可执行程序,其特征在于,所述计算机可执行程序被执行时,实现如权利要求1至2中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010376091.4A CN111625290B (zh) | 2020-05-06 | 2020-05-06 | 一种Android平台下布局文件预加载方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010376091.4A CN111625290B (zh) | 2020-05-06 | 2020-05-06 | 一种Android平台下布局文件预加载方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111625290A CN111625290A (zh) | 2020-09-04 |
CN111625290B true CN111625290B (zh) | 2023-03-24 |
Family
ID=72259775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010376091.4A Active CN111625290B (zh) | 2020-05-06 | 2020-05-06 | 一种Android平台下布局文件预加载方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625290B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157337A (zh) * | 2021-04-19 | 2021-07-23 | 深圳市中科明望通信软件有限公司 | 应用程序启动方法、装置、终端设备及存储介质 |
CN114090130A (zh) * | 2021-11-26 | 2022-02-25 | 上海星融汽车科技有限公司 | 一种预加载执行逻辑的方法和系统 |
CN116662270B (zh) * | 2022-09-09 | 2024-05-10 | 荣耀终端有限公司 | 文件解析方法及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584612B1 (en) * | 1999-07-15 | 2003-06-24 | International Business Machines Corporation | Transparent loading of resources from read-only memory for an application program |
CN104216751A (zh) * | 2014-09-30 | 2014-12-17 | 广州金山网络科技有限公司 | 一种应用程序的功能组件界面资源的加载方法及系统 |
CN104731622A (zh) * | 2015-03-27 | 2015-06-24 | 北京奇虎科技有限公司 | 一种应用程序的加载方法、装置和移动终端 |
CN105630461A (zh) * | 2014-10-27 | 2016-06-01 | 航天信息股份有限公司 | 一种android应用界面的管理方法 |
CN108229107A (zh) * | 2016-12-21 | 2018-06-29 | 武汉安天信息技术有限责任公司 | 一种Android平台应用程序的脱壳方法及容器 |
CN109918145A (zh) * | 2019-01-10 | 2019-06-21 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动的加速方法、装置、电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944846B2 (en) * | 2001-12-14 | 2005-09-13 | Hewlett-Packard Development Company, L.P. | Algorithm for localization of a JAVA application using reflection API and a custom class loader |
US7444629B2 (en) * | 2004-11-12 | 2008-10-28 | International Business Machines Corporation | Autonomic self-healing of java resources |
-
2020
- 2020-05-06 CN CN202010376091.4A patent/CN111625290B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584612B1 (en) * | 1999-07-15 | 2003-06-24 | International Business Machines Corporation | Transparent loading of resources from read-only memory for an application program |
CN104216751A (zh) * | 2014-09-30 | 2014-12-17 | 广州金山网络科技有限公司 | 一种应用程序的功能组件界面资源的加载方法及系统 |
CN105630461A (zh) * | 2014-10-27 | 2016-06-01 | 航天信息股份有限公司 | 一种android应用界面的管理方法 |
CN104731622A (zh) * | 2015-03-27 | 2015-06-24 | 北京奇虎科技有限公司 | 一种应用程序的加载方法、装置和移动终端 |
CN108229107A (zh) * | 2016-12-21 | 2018-06-29 | 武汉安天信息技术有限责任公司 | 一种Android平台应用程序的脱壳方法及容器 |
CN109918145A (zh) * | 2019-01-10 | 2019-06-21 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动的加速方法、装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111625290A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984174B (zh) | 跨平台的应用创建方法、装置、服务器和存储介质 | |
Taivalsaari et al. | Web browser as an application platform | |
US9928038B2 (en) | Dynamically building locale objects or subsections of locale objects based on historical data | |
US8347272B2 (en) | Call graph dependency extraction by static source code analysis | |
CN111625290B (zh) | 一种Android平台下布局文件预加载方法、装置及电子设备 | |
US20180357085A1 (en) | Method and apparatus for running android application on windows system | |
US20120191922A1 (en) | Object synchronization in shared object space | |
CN111625289B (zh) | 应用程序快速启动方法、装置和电子设备 | |
US9778942B2 (en) | Generating a replacement binary for emulation of an application | |
CN113468448A (zh) | 页面渲染方法及装置 | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN110968305A (zh) | 小程序可视化生成方法、装置、设备及存储介质 | |
WO2018120992A1 (zh) | 一种窗口渲染方法及终端 | |
CN109684573B (zh) | 目标图片显示方法及装置、存储介质、电子设备 | |
CN114253537A (zh) | 表单生成方法及装置、电子设备和存储介质 | |
EP2828747A1 (en) | Hybrid emulation and kernel function processing systems and methods | |
US8443292B2 (en) | Scripting application with privacy mode coordination | |
CN102023857A (zh) | 基于ServiceOS的多平台应用程序服务管理方法及系统 | |
CN112650959B (zh) | 页面加载时长的统计方法、装置、设备及存储介质 | |
US9697018B2 (en) | Synthesizing inputs to preserve functionality | |
CN114911541B (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN111767111A (zh) | 页面数据处理方法及装置、电子设备和存储介质 | |
CN114647411B (zh) | 编程界面加载方法、装置、电子设备及存储介质 | |
CN112612531A (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN111971655A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230613 Address after: 6001, 6th Floor, No.1 Kaifeng Road, Shangdi Information Industry Base, Haidian District, Beijing, 100085 Patentee after: Beijing Baige Feichi Technology Co.,Ltd. Address before: 100085 4001, 4th floor, No.1 Kaifa Road, Shangdi Information Industry base, Haidian District, Beijing Patentee before: XIAOCHUANCHUHAI EDUCATION TECHNOLOGY (BEIJING) CO.,LTD. |