一种应用启动方法及电子设备技术

技术编号:27740844 阅读:5 留言:0更新日期:2021-03-19 13:34
本申请提供一种应用启动方法及电子设备,涉及终端技术领域,可缩短应用冷启动时耗费的启动时间,提高用户打开应用时的使用体验。该方法包括:电子设备中的系统服务进程获取所述第一应用的启动消息;响应于所述启动消息,系统服务进程向守护进程发送应用进程的创建请求,所述创建请求中包括所述第一应用的应用信息;响应于所述创建请求,守护进程为所述第一应用创建应用进程,所述应用进程包括第一线程和第二线程;所述应用进程并行地执行所述第一线程和所述第二线程,其中,所述第一线程执行对所述第一应用的主线程的初始化,所述第二线程根据所述应用信息创建第一类加载器加载所述第一应用的类文件;所述应用进程开始运行所述第一应用的代码。

【技术实现步骤摘要】
一种应用启动方法及电子设备
本申请涉及终端
,尤其涉及一种应用启动方法及电子设备。
技术介绍
手机等电子设备中安装的各类应用(Application,APP)已经广泛应用在用户的日常生活中。以手机举例,从用户点击应用的启动图标开始直到手机运行应用的代码后显示出该应用的第一帧画面的这段时间可称为应用的启动时间。启动时间的快慢直接影响用户对该应用的使用体验,也是评价手机性能的重要指标之一。在应用启动时,如果手机后台没有该应用的进程(process),则手机系统需要重新创建一个新的进程分配给该应用,这种启动方式可称为冷启动。在冷启动过程中手机需要创建应用的应用进程,在应用进程的主线程(ActivityThread)中执行main函数,并通过创建应用进程的类加载器(Classloader)将应用的类(class)文件加载至手机的内存中,这使得应用在冷启动时耗费的启动时间较长,用户打开应用时的使用体验不高。
技术实现思路
本申请提供一种应用启动方法及电子设备,可缩短应用冷启动时耗费的启动时间,提高用户打开应用时的使用体验。为达到上述目的,本申请采用如下技术方案:第一方面,本申请提供一种应用启动方法,包括:电子设备中的系统服务(SystemServer)进程可获取第一应用的启动消息;响应于该启动消息,系统服务进程可向守护进程(例如Zygote进程)发送应用进程的创建请求,该创建请求中包括第一应用的应用信息;响应于该创建请求,守护进程可为第一应用创建应用进程,该应用进程包括第一线程和第二线程;进而,创建的应用进程可并行地执行第一线程和第二线程,其中,第一线程执行对第一应用的主线程的初始化,第二线程根据上述应用信息创建第一类加载器加载第一应用的类文件;当主线程初始化完成,且类文件加载完成后,第一应用的应用进程可以开始运行第一应用的代码,以显示第一应用的应用界面。也就是说,守护进程创建了第一应用的应用进程后,应用进程可通过多线程并行的方式完成主线程初始化和加载类文件的工作。这样,在应用主线程初始化的同时可创建第一应用的类加载器加载类文件,从而缩短应用冷启动时耗费的启动时间,提高用户打开应用时的使用体验。在一种可能的实现方式中,上述应用信息中记录有第一应用运行时所需的一个或多个类加载器。例如,上述应用信息中记录有第一类加载器的标识;此时,第二线程根据应用信息创建第一类加载器加载第一应用的类文件,包括:第二线程根据第一类加载器的标识创建第一类加载器,并使用第一类加载器加载第一应用的第一类文件。在一种可能的实现方式中,上述应用信息中还可以记录第二类加载器的标识;守护进程创建的应用进程中还包括第三线程;此时,在第一应用的应用进程可并行地执行第一线程、第二线程以及第三线程;其中,第三线程可根据第二类加载器的标识创建第二类加载器,并使用第二类加载器加载第一应用的第二类文件。也就是说,如果第一应用启动时需要多个类加载器,则应用进程可通过多线程的方式并行地创建多个类加载器同时加载类文件,从而缩短应用冷启动的启动时间。在一种可能的实现方式中,上述应用信息中还记录有类加载器之间的依赖关系。例如,上述应用信息中除了第一类加载器的标识外,还记录有第二类加载器的标识,且第二类加载器依赖于第一类加载器;那么,守护进程创建的应用进程中还包括第三线程;当第三线程获取到第二线程释放的对象锁后,第三线程可根据第二类加载器的标识创建第二类加载器,并使用第二类加载器加载第一应用的第二类文件。也就是说,如果第一应用启动时需要的多个类加载器之前具有依赖关系,则应用进程可先并行地创建不具有依赖关系的类加载器加载类文件,相比于通过串行的方式创建每一个类加载器加载类文件,这种方式也可缩短应用冷启动的启动时间。在一种可能的实现方式中,上述应用信息中除了第一类加载器的标识外,还记录有第二类加载器的标识;此时,在第二线程根据第一类加载器的标识创建第一类加载器,并使用第一类加载器加载第一应用的第一类文件之后,还包括:第二线程根据第二类加载器的标识创建第二类加载器,并使用第二类加载器加载第一应用的第二类文件。也就是说,与第一线程并行的第二线程可串行的创建多个类加载器加载类文件。在一种可能的实现方式中,上述应用进程开始运行第一应用的代码,包括:当第一线程获取到第二线程释放的对象锁后,应用进程开始运行第一应用的代码。当然,如果应用进程还使用了其他线程创建类加载器加载类文件,则第一线程除了获取到第二线程释放的对象锁外,还需要获取到其他线程释放的对象锁,进而开始运行第一应用的代码。也就是说,当第一应用的主线程初始化结束,且第一应用的类文件加载完成后,可以开始运行第一应用的代码。在一种可能的实现方式中,在电子设备中的系统服务进程向守护进程发送应用进程的创建请求之前,还包括:系统服务进程可从第一应用的APK文件中获取第一应用的应用信息;进而,系统服务进程可将该应用信息添加至应用进程的创建请求中。在一种可能的实现方式中,上述第一线程可以为应用进程的主线程,上述第二线程可以为应用进程的临时线程;此时,在电子设备中的守护进程为第一应用创建应用进程后,还包括:应用进程的主线程可创建该临时线程,并将第一类加载器的标识分配给该临时线程,使得该临时线程可根据第一类加载器的标识创建第一类加载器加载类文件。在一种可能的实现方式中,电子设备中的系统服务进程获取第一应用的启动消息,包括:响应于用户点击第一应用的启动图标的操作,电子设备的启动器(launcher)可生成第一应用的启动消息,进而,系统服务进程可接收启动器发送的第一应用的启动消息。第二方面,本申请提供一种应用启动方法,包括:电子设备中的系统服务进程可获取第一应用的启动消息;进而,系统服务进程可开始对该启动消息进行校验,同时,若该启动消息来自于启动器,由于系统服务进程对launcher发来的启动消息一般都会校验通过,因此,系统服务进程可调用进程池中的第一进程提前开始创建第一应用的类加载器加载第一应用的类文件;后续,当该启动消息校验成功后,系统服务进程可继续调用第一进程对第一应用的主线程进行初始化;当主线程初始化完成,且类文件加载完成后,第一进程可开始运行第一应用的代码,以显示第一应用的应用界面。也就是说,系统服务进程可将launcher发来的启动消息作为触发条件,预先调用进程池中的第一进程创建应用运行时需要使用的类加载器,并使用类加载器加载类文件。这样,第一进程作为该应用的应用进程在运行应用代码前,进行主线程初始化以及类文件加载的耗时将减少,从而缩短了应用启动时的启动时间。在一种可能的实现方式中,系统服务进程调用进程池中的第一进程开始创建第一应用的类加载器加载第一应用的类文件,包括:系统服务进程可将进程池中第一进程的ID保存为第一应用的应用进程ID;进而,系统服务可将第一应用的应用信息传递给第一进程,该应用信息中记录有第一类加载器的标识和第二类加载器的标识;那么,第一进程可并行地执行第一线程和第二线程;其中,第一线程根据第一类加载器的标识创建第一类本文档来自技高网...

【技术保护点】
1.一种应用启动方法,其特征在于,包括:/n电子设备中的系统服务进程获取第一应用的启动消息;/n响应于所述启动消息,所述电子设备中的系统服务进程向守护进程发送应用进程的创建请求,所述创建请求中包括所述第一应用的应用信息;/n响应于所述创建请求,所述电子设备中的守护进程为所述第一应用创建应用进程,所述应用进程包括第一线程和第二线程;/n所述应用进程并行地执行所述第一线程和所述第二线程,其中,所述第一线程执行对所述第一应用的主线程的初始化,所述第二线程根据所述应用信息创建第一类加载器加载所述第一应用的类文件;/n所述应用进程开始运行所述第一应用的代码,以显示所述第一应用的应用界面。/n

【技术特征摘要】
1.一种应用启动方法,其特征在于,包括:
电子设备中的系统服务进程获取第一应用的启动消息;
响应于所述启动消息,所述电子设备中的系统服务进程向守护进程发送应用进程的创建请求,所述创建请求中包括所述第一应用的应用信息;
响应于所述创建请求,所述电子设备中的守护进程为所述第一应用创建应用进程,所述应用进程包括第一线程和第二线程;
所述应用进程并行地执行所述第一线程和所述第二线程,其中,所述第一线程执行对所述第一应用的主线程的初始化,所述第二线程根据所述应用信息创建第一类加载器加载所述第一应用的类文件;
所述应用进程开始运行所述第一应用的代码,以显示所述第一应用的应用界面。


2.根据权利要求1所述的方法,其特征在于,所述应用信息中记录有第一类加载器的标识;
其中,所述第二线程根据所述应用信息创建第一类加载器加载所述第一应用的类文件,包括:
所述第二线程根据所述第一类加载器的标识创建第一类加载器,并使用所述第一类加载器加载所述第一应用的第一类文件。


3.根据权利要求2所述的方法,其特征在于,所述应用信息中还记录有第二类加载器的标识;所述应用进程中还包括第三线程;
其中,在所述应用进程并行地执行所述第一线程和所述第二线程时,还包括;
所述第三线程根据所述第二类加载器的标识创建第二类加载器,并使用所述第二类加载器加载所述第一应用的第二类文件。


4.根据权利要求2所述的方法,其特征在于,所述应用信息中还记录有第二类加载器的标识,所述第二类加载器依赖于所述第一类加载器;所述应用进程中还包括第三线程;所述方法还包括:
当所述第三线程获取到所述第二线程释放的对象锁后,所述第三线程根据所述第二类加载器的标识创建第二类加载器,并使用所述第二类加载器加载所述第一应用的第二类文件。


5.根据权利要求2所述的方法,其特征在于,所述应用信息中还记录有第二类加载器的标识;
其中,在所述第二线程根据所述第一类加载器的标识创建第一类加载器,并使用所述第一类加载器加载所述第一应用的第一类文件之后,还包括:
所述第二线程根据所述第二类加载器的标识创建第二类加载器,并使用所述第二类加载器加载所述第一应用的第二类文件。


6.根据权利要求1-5中任一项所述的方法,其特征在于,所述应用进程开始运行所述第一应用的代码,包括:
当所述第一线程获取到所述第二线程释放的对象锁后,所述应用进程开始运行所述第一应用的代码。


7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述电子设备中的系统服务进程向守护进程发送应用进程的创建请求之前,还包括:
所述系统服务进程从所述第一应用的APK文件中获取所述第一应用的应用信息;
所述系统服务进程将所述应用信息添加至所述应用进程的创建请求中。


8.根据权利要求2-7中任一项所述的方法,其特征在于,所述第一线程为所述应用进程的主线程,所述第二线程为所述应用进程的临时线程;
其中,在所述电子设备中的守护进程为所述第一应用创建应用进程后,还包括:
所述主线程创建所述临时线程,并将所述第一类加载器的标识分配给所述临时线程。


9.根据权利要求1-8中任一项所述的方法,其特征在于,所述电子设备中的系统服务进程获取所述第一应用的启动消息,包括:
响应于用户点击所述第一应用的启动图标的操作,所...

【专利技术属性】
技术研发人员:孙文涌任玉林韩风程飞飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1