一种应用程序冷启动加速方法、装置、电子设备制造方法及图纸

技术编号:21377728 阅读:39 留言:0更新日期:2019-06-15 13:24
本发明专利技术属于计算机领域,具体涉及一种应用程序冷启动的加速方法、装置、电子设备。该方法一具体实施方式包括:首先响应于接收到用于指示冷启动预设应用程序的指令,创建所述预设应用程序对应的第一进程,其中,所述第一进程包括一个主线程和至少一个其他线程,之后,所述第一进程继续启动,当到达预设抑制时机时,创建第二进程,所述第二进程内包括一个线程,利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括至少一个所述其他线程。实现了在冷启动预设应用程序时,通过第二进程中的线程来抑制预设应用程序的预设目标线程,将抑制节省的资源分配给启动预设应用程序必备的线程,加快应用程序的启动。

【技术实现步骤摘要】
一种应用程序冷启动加速方法、装置、电子设备
本专利技术涉及计算机
,尤其涉及一种应用程序冷启动加速方法、装置、电子设备及可读介质。
技术介绍
应用程序(Application,APP)冷启动是指软件从关闭状态到打开状态的过程。应用程序冷启动是相对于热启动而言的,冷启动是指启动应用时,操作系统(例如安卓操作系统)中不存在应用的进程,这时系统会为应用创建一个新的进程。相对而言,热启动是指启动应用时,系统中已经存在应用的进程。通常来讲,热启动速度要比冷启动速度快。通常,每个应用程序的进程中存在多个线程,除了一些应用自身创建的线程外,还包括一些系统自动创建的线程,例如HeapTaskDaemon线程,JIT线程,FinalizerDaemon线程等,这些线程各自有不同的作用,它们共同保证应用能够正常并且高效地运行。一个进程中的每一个线程都会占用CPU等资源。如果在冷启动应用程序时,该应用程序对应的进程中运行多个线程,将会导致启动应用程序的时间较长,影响用户体验。
技术实现思路
本专利技术实施例提供了一种应用程序冷启动加速方法、装置、电子设备及可读介质,以缩短冷启动应用程序的时间,改善用户体验。第一方面,本专利技术实施例提供了一种应用程序冷启动加速方法,包括:响应于接收到用于指示冷启动预设应用程序的指令,创建所述预设应用程序对应的第一进程,其中,所述第一进程包括一个主线程和除主线程之外的第一进程所需的至少一个其他线程;所述第一进程继续启动,其中启动内容包含利用所述主线程创建所述预设应用程序的对象以及所述预设应用程序其他冷启动初始化操作;到达预设抑制时机时,创建第二进程,所述第二进程内包括一个线程;利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括所述除主线程之外的第一进程所需的至少一个其他线程,其中创建第二进程的线程为第一进程中的线程,到达预设抑制时机时,执行创建的线程暂停当前执行内容,创建完成后继续原执行内容。可选地,所述除主线程之外的第一进程所需的至少一个其他线程,包括:JIT线程、Idle线程以及其他线程。可选地,所述预设应用程序的对象,包括:本应用程序自身定义的应用程序对象,或者由系统创建默认的应用程序对象。可选地,所述预设目标线程,包括:所述的第一进程中除主线程以外任何一个不影响所述预设应用冷启动的线程。可选地,所述方法还包括:在创建所述预设应用程序对应的第一进程后,在创建所述第二进程之前,获取预设目标线程ID。可选地,所述预设抑制时机,是所述第一进程主线程创建后的任意时机,包括但不限于:在自定义Application类的静态初始化代码块中;在自定义Application的构造方法中;在自定义Application的attachBaseContext方法中;在自定义Application的onCreate方法中;在首个Activity的构造方法中;在首个Activity的onCreate方法中。可选地,创建第二进程,所述第二进程内包括一个线程,包括:调用clone创建helper进程为所述第二进程以及helper线程为所述第二进程中的一个线程。可选地,所述利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,包括:所述第二进程中的线程对所述第一进程对应的预设目标线程执行延迟操作。可选地,所述的抑制操作是直接sleep。可选地,所述延迟操作的延迟时间为3秒、5秒或7秒等。可选地,所述获取预设目标线程ID,包括:通过读取/proc/[pid]/task文件夹,获取第一进程内的所有线程的ThreadID,然后针对每个线程,通过读取其对应的/proc/[tid]/comm文件获取其名字,根据预设目标现成的名字获取预设目标线程的ThreadID。可选地,所述利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括所述除主线程之外的第一进程所需的至少一个其他线程,包括:所述第二线程的helper线程调用ptrace,第一个参数为PTRACE_ATTACH,第二个参数为预设目标线程的ThreadID,第三和第四个参数均使用NULL;ptrace调用成功后,helper线程调用waitpid,将预设目标线程的ThreadID作为第一个参数。可选地,所述方法还包括:当被抑制的预设目标线程符合唤醒条件时,利用系统工具,唤醒被抑制的预设目标线程,执行第一进程中被抑制的预设目标线程的正常流程,结束第二进程。可选地,所述当被抑制的预设目标线程符合唤醒条件时,利用系统工具,唤醒被抑制的预设目标线程,执行第一进程中被抑制的预设目标线程的正常流程,结束第二进程,包括:所述唤醒条件为收到主线程通知唤醒、sleep时间结束或被其他线程唤醒;利用系统工具,执行第一进程中被抑制的预设目标线程的正常流程,所述第二进程的线程退出,释放第二进程的所有资源,结束第二进程。可选地,所述当被抑制的预设目标线程符合唤醒条件时,利用系统工具,唤醒被抑制的预设目标线程,执行第一进程中被抑制的预设目标线程的正常流程,结束第二进程,包括:所述唤醒条件为收到主线程通知唤醒、sleep时间结束或被其他线程唤醒;所述第二进程为helper进程,第二进程的线程为helper线程;所述第二线程的helper线程再次调用ptrace过程中第一个参数为PTRACE_DETACH,第二个参数为被抑制预设目标线程的ThreadID,第三和第四个参数均使用NULL,ptrace调用成功后,被抑制预设目标线程恢复,继续执行正常的线程流程,helper线程退出,释放helper进程的所有资源,结束helper进程。第二方面,本专利技术实施例提供了一种应用程序冷启动加速装置,包括:第一进程创建单元,配置用于响应于接收到用于指示冷启动预设应用程序的指令,创建所述预设应用程序对应的第一进程,其中,所述第一进程包括一个主线程和除主线程之外的第一进程所需的至少一个其他线程;第一进程继续启动单元,配置用于继续启动第一进程,其中启动内容包含利用所述主线程创建所述预设应用程序的对象以及所述预设应用程序其他冷启动初始化操作;第二进程创建单元,配置用于到达预设抑制时机时,创建第二进程,所述第二进程内包括一个线程;抑制预设目标线程单元,配置用于利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括所述除主线程之外的第一进程所需的至少一个其他线程;其中创建第二进程的线程为第一进程中的线程,到达预设抑制时机时,执行创建的线程暂停当前执行内容,创建完成后继续原执行内容。可选地,所述除主线程之外的第一进程所需的至少一个其他线程,包括:JIT线程、Idle线程以及其他线程。可选地,所述预设应用程序的对象,包括:本应用程序自身定义的应用程序对象,或者由系统创建默认的应用程序对象。可选地,所述预设目标线程,包括:所述的第一进程中除主线程以外任何一个不影响所述预设应用冷启动的线程。可选地,所述装置还包括,预设目标线程ID获取单元,所述预设目标线程ID获取单元配置用于:在创建所述预设应用程序对应的第一进程后,在创建所述第二进程之前,获取预设目标线程ID。可选地,所述预设抑制时机,是所述第一进程主线程创本文档来自技高网...

【技术保护点】
1.一种应用程序冷启动加速方法,其特征在于,所述方法包括:响应于接收到用于指示冷启动预设应用程序的指令,创建所述预设应用程序对应的第一进程,其中,所述第一进程包括一个主线程和除主线程之外的第一进程所需的至少一个其他线程;所述第一进程继续启动,其中启动内容包含利用所述主线程创建所述预设应用程序的对象以及所述预设应用程序其他冷启动初始化操作;到达预设抑制时机时,创建第二进程,所述第二进程内包括一个线程;利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括所述除主线程之外的第一进程所需的至少一个其他线程;其中创建第二进程的线程为第一进程中的线程,到达预设抑制时机时,执行创建的线程暂停当前执行内容,创建完成后继续原执行内容。

【技术特征摘要】
1.一种应用程序冷启动加速方法,其特征在于,所述方法包括:响应于接收到用于指示冷启动预设应用程序的指令,创建所述预设应用程序对应的第一进程,其中,所述第一进程包括一个主线程和除主线程之外的第一进程所需的至少一个其他线程;所述第一进程继续启动,其中启动内容包含利用所述主线程创建所述预设应用程序的对象以及所述预设应用程序其他冷启动初始化操作;到达预设抑制时机时,创建第二进程,所述第二进程内包括一个线程;利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括所述除主线程之外的第一进程所需的至少一个其他线程;其中创建第二进程的线程为第一进程中的线程,到达预设抑制时机时,执行创建的线程暂停当前执行内容,创建完成后继续原执行内容。2.如权利要求1所述的方法,其特征在于,所述除主线程之外的第一进程所需的至少一个其他线程,包括:JIT线程、Idle线程。3.如权利要求1所述的方法,其特征在于,所述预设应用程序的对象,包括:本应用程序自身定义的应用程序对象,或者由系统创建默认的应用程序对象。4.如权利要求1所述的方法,其特征在于,所述预设目标线程,包括:所述的第一进程中除主线程以外任何一个不影响所述预设应用冷启动的线程。5.如权利要求4所述的方法,其特征在于,所述方法还包括:在创建所述预设应用程序对应的第一进程后,在创建所述第二进程之前,获取预设目标线程ID。6.如权利要求1所述的方法,其特征在于,所述预设抑制时机,是所述第一进程主线程创建后的任意时机,包括:在自定义Application类的静态初始化代码块中;在自定义Application的构造方法中;在自定义Application的attachBaseContext方法中;在自定义Application的onCreate方法中;在首个Activity的构造方法中;在首个Activity的onCreate方法中。7.如权利要求5所述的方法,其特征在于,创建第二进程,所述第二进程内包括一个线程,包括:调用clone创建helper进程为所述第二进程以及helper线程为所述第二进程中的一个线程。8.如权利要求1所述的方法,其特征在于,所述利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,包括:所述第二进程中的线程对所述第一进程对应的预设目标线程执行延迟操作。9.如权利要求5所述的方法,其特征在于,所述获取预设目标线程ID,包括:通过读取/proc/[pid]/task文件夹,获取第一进程内的所有线程的ThreadID,然后针对每个线程,通过读取其对应的/proc/[tid]/comm文件获取其名字,根据预设目标现成的名字获取预设目标线程的ThreadID。10.如权利要求7所述的方法,其特征在于,所述利用所述第二进程中的线程对所述第一进程对应的预设目标线程执行抑制操作,所述预设目标线程包括所述除主线程之外的第一进程所需的至少一个其他线程,包括:所述第二线程的helper线程调用ptrace,第一个参数为PTRACE_ATTACH,第二个参数为预设目标线程的ThreadID,第三和第四个参数均使用NUL...

【专利技术属性】
技术研发人员:刘洪凯
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京,11

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

1