CN105955765B - 应用预加载方法及装置 - Google Patents

应用预加载方法及装置 Download PDF

Info

Publication number
CN105955765B
CN105955765B CN201610256360.7A CN201610256360A CN105955765B CN 105955765 B CN105955765 B CN 105955765B CN 201610256360 A CN201610256360 A CN 201610256360A CN 105955765 B CN105955765 B CN 105955765B
Authority
CN
China
Prior art keywords
activity
class
preloaded
class list
classes
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
Application number
CN201610256360.7A
Other languages
English (en)
Other versions
CN105955765A (zh
Inventor
王舒捷
孙念
吴俊洲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201610256360.7A priority Critical patent/CN105955765B/zh
Publication of CN105955765A publication Critical patent/CN105955765A/zh
Application granted granted Critical
Publication of CN105955765B publication Critical patent/CN105955765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading

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

本公开提供了一种应用预加载方法及装置,属于终端技术领域。所述方法包括:接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;对所述第一Activity暂停处理;在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表,基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载;其中,所述第二Activity的预加载类列表包括至少一个所述第二Activity在历史运行过程中所使用到的类。本公开通过在场景切换时,在对切换前的第一Activity进行暂停处理时,利用空闲资源,对切换后的场景所可能使用到的类提前进行加载,从而节约了真正使用这些类时所需消耗的时间,提高了应用的运行速度。

Description

应用预加载方法及装置
技术领域
本公开涉及终端技术领域,尤其涉及一种应用预加载方法及装置。
背景技术
随着智能终端的发展,智能终端的功能越来越强大,用户对智能终端的性能要求也越来越高。智能终端的性能可以体现在多个方面,最突出的在于智能终端上所安装应用的运行上,例如,使用应用时应用界面刷新的帧率,启动应用时的加载速度等等,均已经成为衡量智能终端性能的重要方面。因此,亟需一种能够提高应用运行速度的应用预加载方法。
发明内容
为了克服相关技术中存在的问题,本公开提供一种应用预加载方法及装置。
根据本公开实施例的第一方面,提供一种应用预加载方法,包括:
接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;对所述第一Activity暂停处理;在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表,基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载;其中,所述第二Activity的预加载类列表包括至少一个所述第二Activity在历史运行过程中所使用到的类。上述技术方案,通过在场景切换时,在对切换前的第一Activity进行暂停处理时,利用空闲资源,对切换后的场景所可能使用到的类提前进行加载,这种在暂停处理过程中,采用并行的方式,启动至少一个线程加载后续可能会使用到的类的方式,使得在接下来的运行过程中,如果需要使用已预加载的某个类,终端如果发现这个类已经被加载,也即是已经初始化,则可以直接跳过这个类的初始化流程,从而加快了整体执行速度,节约了真正使用这些类时所需消耗的时间,提高了应用的运行速度。
在第一方面的第一种可能实现方式中,所述接收场景切换指令之前,所述方法还包括:在所述第二Activity的运行过程中,记录所述运行过程中所使用到的类,生成所述第二Activity的预加载类列表。在实际运行中生成预加载类列表,可以适应于用户的实际使用习惯,提高预加载的准确度。
在第一方面的第二种可能实现方式中,所述方法还包括:当所述第二Activity所属应用的版本更新后,根据更新版本中所述第二Activity的运行过程,重新生成所述第二Activity的预加载类列表。在版本更新时重新生成预加载类列表,可以提高预加载的准确度。
在第一方面的第三种可能实现方式中,所述方法还包括:基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载包括:如果所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,按照各个类在运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类;启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。按照使用先后顺序,对类进行加载,提高了预加载的准确度,能够提高应用的运行速度。
基于上述任一种可能实现方式,在第一方面的第三种可能实现方式中,所述方法还包括:所述第一Activity与所述第二Activity属于同一个应用程序;或,所述第一Activity属于第一应用程序,所述第二Activity属于第二应用程序。该方法可以适用于从一个应用切换至另一个应用的场景,还可以适用于应用内界面切换的场景。
根据本公开实施例的第二方面,提供一种应用预加载装置,包括:
接收模块,用于接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;
暂停模块,用于对所述第一Activity暂停处理;
获取模块,用于在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表;
加载模块,用于基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载;
其中,所述第二Activity的预加载类列表包括至少一个所述第二Activity在历史运行过程中所使用到的类。
上述技术方案,通过在场景切换时,在对切换前的第一Activity进行暂停处理时,利用空闲资源,对切换后的场景所可能使用到的类提前进行加载,这种在暂停处理过程中,采用并行的方式,启动至少一个线程加载后续可能会使用到的类的方式,使得在接下来的运行过程中,如果需要使用已预加载的某个类,终端如果发现这个类已经被加载,也即是已经初始化,则可以直接跳过这个类的初始化流程,从而加快了整体执行速度,节约了真正使用这些类时所需消耗的时间,提高了应用的运行速度。
在第二方面的第一种可能实现方式中,所述装置还包括列表生成模块,用于在所述第二Activity的运行过程中,记录所述运行过程中所使用到的类,生成所述第二Activity的预加载类列表。
在第二方面的第二种可能实现方式中,所述列表生成模块,还用于当所述第二Activity所属应用的版本更新后,根据更新版本中所述第二Activity的运行过程,重新生成所述第二Activity的预加载类列表。
在第二方面的第三种可能实现方式中,所述第二加载模块用于如果所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,按照各个类在运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类;启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。
结合上述任一种可能实现方式,在第二方面的第四种可能实现方式中,所述第一Activity与所述第二Activity属于同一个应用程序;或,所述第一Activity属于第一应用程序,所述第二Activity属于第二应用程序。
根据本公开实施例的第三方面,提供一种应用预加载装置,包括:
多核处理器;用于存储多核处理器可执行的指令的存储器;其中,所述多核处理器被配置为:接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;对所述第一Activity暂停处理;在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表,基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载;其中,所述第二Activity的预加载类列表包括至少一个所述第二Activity在历史运行过程中所使用到的类。上述技术方案,通过在场景切换时,在对切换前的第一Activity进行暂停处理时,利用空闲资源,对切换后的场景所可能使用到的类提前进行加载,这种在暂停处理过程中,采用并行的方式,启动至少一个线程加载后续可能会使用到的类的方式,使得在接下来的运行过程中,如果需要使用已预加载的某个类,终端如果发现这个类已经被加载,也即是已经初始化,则可以直接跳过这个类的初始化流程,从而加快了整体执行速度,节约了真正使用这些类时所需消耗的时间,提高了应用的运行速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种应用预加载方法的流程图;
图2是根据一示例性实施例示出的一种应用预加载方法的流程图;
图3是根据一示例性实施例示出的一种应用预加载装置框图;
图4是根据一示例性实施例示出的另一种应用预加载装置框图;
图5是根据一示例性实施例示出的一种应用预加载装置500的框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
用户切换活动(Activity)是Android平台的一种标准组件。实际上一个Activity就是应用中的一个单一的屏幕,它继承自Activity类,它将显示由Views组成的UI(UserInterface,用户界面)以及响应事件。
本领域技术人员可以获知,一个应用Activity的生命周期包括:启动一个Activity时,Activity()的构造函数执行完毕后,系统调用onCreate()方法,在这里设置Activity的全局状态和资源,然后调用onStart()方法,在这个方法执行完毕,Activity在屏幕中可见。执行onResume()方法,这个时候Activity在一个loop循环中的等待窗口事件。当窗口部分可见时,也就是说Activity不是在最前端时,Activity的onFreeze()方法被调用,这个方法保存Activity一些内部状态。然后窗口暂停,直到Activity又出现在最前端,activity的onResume()方法被调用。如果Activity窗口不可见,则说明Activity的onStop()方法被调用,直到覆盖Activity的窗口关闭时,activity的onRestart()方法开始调用,然后重复onStart()方法。当系统回收资源或者Activity被调用finish()方法时,Activity停止,调用onDestroy()释放Activity拥有的资源。
图1是根据一示例性实施例示出的一种应用预加载方法的流程图,如图1所示,应用预加载方法用于终端中,包括以下步骤。
在步骤101中,接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity。
在步骤102中,对所述第一Activity暂停处理。
在步骤103中,在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表,基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载,其中,所述第二Activity的预加载类列表包括至少一个所述第二Activity在历史运行过程中所使用到的类。
上述技术方案,通过在场景切换时,在对切换前的第一Activity进行暂停处理时,利用空闲资源,对切换后的场景所可能使用到的类提前进行加载,这种在暂停处理过程中,采用并行的方式,启动至少一个线程加载后续可能会使用到的类的方式,使得在接下来的运行过程中,如果需要使用已预加载的某个类,终端如果发现这个类已经被加载,也即是已经初始化,则可以直接跳过这个类的初始化流程,从而加快了整体执行速度,节约了真正使用这些类时所需消耗的时间,提高了应用的运行速度。
在一种可能实现方式中,所述接收场景切换指令之前,所述方法还包括:
在所述第二Activity的运行过程中,记录所述运行过程中所使用到的类,生成所述第二Activity的预加载类列表。
在一种可能实现方式中,所述方法还包括:
当所述第二Activity所属应用的版本更新后,根据更新版本中所述第二Activity的运行过程,重新生成所述第二Activity的预加载类列表。
在一种可能实现方式中,基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的类进行加载包括:
如果所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,按照各个类在运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类;
启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。
在一种可能实现方式中,所述第一Activity与所述第二Activity属于同一个应用程序;或,所述第一Activity属于第一应用程序,所述第二Activity属于第二应用程序。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是根据一示例性实施例示出的一种应用预加载方法的流程图,如图2所示,应用预加载方法用于终端中,包括以下步骤。
在步骤201中,在第二Activity的运行过程中,记录运行过程中所使用到类,生成该第二Activity的预加载类列表,该第二Activity的预加载类列表包括至少一个该第二Activity在历史运行过程中所使用到的类。
其中,该第二Activity可以是指任一个应用中的任一个Activity,本公开实施例对此不做限制。该记录以及生成预加载类列表的过程,可以是在该应用安装后第一次运行时进行,也可以是在应用的每一次运行时均进行,可以根据每一次运行时第二Activity所使用到的类不断完善该预加载列表,如,在第一次运行时,第二Activity加载了类A1至A5,在第N次运行时,第二Activity又加载了类B1至B3,则可以将类B1至B3添加至预加载列表,以达到最佳的预加载效果。
在本公开实施例中,仅以预加载类列表是本地生成并存储于本地为例进行说明,而在实际应用中,该预加载类列表还可以是一个由网络侧提供的通用的预加载类列表,由终端从网络侧获取并存储于本地。
进一步地,在应用运行过程中,还可以基于实际运行情况,对该本地已存储的预加载类列表进行调整,以使得预加载过程更加符合用户的实际使用习惯。其中,从网络侧获取预加载类列表的时机可以有多种情况,与上述生成时机类似,本公开实施例对此不作具体限定。
在一种可能实现方式中,应用版本会不时发生更新,因此,为了保证预加载的准确性,当该第二Activity所属应用的版本更新后,根据更新版本中该第二Activity的运行过程,重新生成该第二Activity的预加载类列表。对于一个Activity来说,新版本与原有版本共同的Activity中新增或减少了某些类,针对这种情况,为了实现加速后续运行以及空间和成本的需求,需要为Activity生成新的预加载类列表。而由于更新版本一般会包含不同的功能,因此,还可能出现的情况可以包括:(1)更新版本不包含原有版本的某些Activity,针对这种情况,为了节约空间和加载成本,需要将原有Activity对应的预加载类列表删除。(2)新版本包含原有版本中没有的新Activity,针对这种情况,为了实现加速后续运行,需要为新Activity生成预加载类列表。(3)更新版本与原有版本具有相同的一些Activity,但是这些Activity会用到的类发生了增加或删除的变化,因此,需要为应用的Activity重新生成预加载类列表。
当然,上述三种情况可能并发,此时可以应用上述对应的更新方法为更新版本应用中发生变化的Activity重新生成新的预加载类列表。
在步骤202中,接收场景切换指令,该场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity。
在本公开的一个实施例中,该场景切换指令可以是由用户在系统桌面上对任一应用程序图标的点击操作触发,所述第一Activity为桌面Activity,所述第二Activity为任一个应用程序的主Activity。也即是,上述接收到的场景切换指令事实上用于启动某一个应用程序。
在本公开的一个实施例中,该场景切换指令可以是由用户在某一应用界面上对按钮的点击操作触发,该第一Activity与该第二Activity属于同一个应用程序,也即是,上述接收到的场景切换指令事实上用于在一个应用程序内进行界面跳转,
在本公开的另一个实施例中,该场景切换指令可以是由用户在某一应用界面上对另一应用界面的跳转操作触发,例如,在某一应用界面上点击跳转至另一应用界面的按钮。该第一Activity属于第一应用程序,该第二Activity属于第二应用程序,一般地,在应用程序之间进行跳转时,该第二Activity可以是指应用程序的主Activity,本公开对此不做具体限定。
在步骤203中,对第一Activity暂停处理。
该进行暂停处理的线程可以是由多核终端的任一个核启动。第二Activity可以包含多个类,也即是第二Activity的全局状态和资源,加载第二Activity所包含的类之后,可以实现第二Activity的前台运行。
在步骤204中,在该第一Activity的暂停处理过程中,获取该第二Activity的预加载类列表,基于空闲计算资源,启动至少一个线程对该第二Activity的预加载类列表中的类进行加载。
由于在该第一Activity的暂停处理过程中,终端内可能存在一些处于闲置状态的计算资源,为了在提高应用运行速度的同时提高资源利用率,可以将这些空闲计算资源利用起来,以便提高处理器的利用率。该至少一个线程可以是由多核终端的上述已启动线程所占用的核以外的任一个核启动。
上述预加载类列表中可以包括该第二Activity所属应用在历史运行过程中所使用到的类,具体地,还可以仅包括第二Activity在历史运行过程中所使用到的类,本公开对此不做具体限定。
当该第一Activity为桌面Activity,所述第二Activity为任一个应用程序的主Activity时,在对第一Activity暂停处理后,还可以启动应用进程对应用的运行环境进行初始化工作,该初始化工作通常会比应用已经启动后的Activity切换过程耗费更多时间,因此,在所述第一Activity的暂停处理并对应用进行初始化的过程中,进行步骤204的第二Activity的预加载类列表加载过程,能够加载更多的类,使得后续应用的运行速度提升效果更好。
当然,对于多核终端来说,并不一定是除了进行暂停处理的线程所占用的核以外的核均处于闲置状态,因此,在一种可能实现方式中,基于空闲计算资源,启动至少一个线程对该第二Activity的预加载类列表中的类进行加载包括:如果该空闲计算资源不能满足该第二Activity的预加载类列表中的类的加载需求,按照各个类在运行过程中的使用先后顺序,确定该第二Activity的预加载类列表中的目标类;启动至少一个线程对该第二Activity的预加载类列表中的目标类进行加载。终端可以判断当前处于闲置状态的核是否能够加载整个列表,如果不能,则获取一定的类进行加载,例如,按照使用时间进行加载,或在其他实施例中,还可以按照使用频率加载,本公开不做具体限定。
需要说明的是,上述应用加载方法可以应用于任一种应用,且这个加载方法无需第三方应用进行适配,可以大大提高终端上所安装应用的启动速度和应用速度。
上述技术方案,通过在场景切换时,在对切换前的第一Activity进行暂停处理时,利用空闲资源,对切换后的场景所可能使用到的类提前进行加载,这种在启动第一线程进行第二Activity所包含的类的加载的同时,采用并行的方式,启动至少一个线程加载后续可能会使用到的类的方式,使得在接下来的运行过程中,如果需要使用已预加载的某个类,终端如果发现这个类已经被加载,也即是已经初始化,则可以直接跳过这个类的初始化流程,从而加快了整体执行速度,节约了真正使用这些类时所需消耗的时间,提高了应用的运行速度。
图3是根据一示例性实施例示出的一种应用预加载装置框图。参照图3,该装置包括接收模块301,暂停模块302、获取模块303和加载模块304。
接收模块301,用于接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;
暂停模块302,用于对所述第一Activity暂停处理;
获取模块303,用于在加载所述第二Activity所包含类的同时,获取所述第二Activity的预加载类列表;
加载模块304,用于在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表;
其中,所述第二Activity的预加载类列表包括至少一个所述第二Activity在历史运行过程中所使用到的类。
在一种可能实现方式中,参见图4,在上述图3结构的基础上,所述装置还包括列表生成模块305,用于在所述第二Activity的运行过程中,记录所述运行过程中所使用到的类,生成所述第二Activity的预加载类列表。
在一种可能实现方式中,所述列表生成模块305,还用于当所述第二Activity所属应用的版本更新后,根据更新版本中所述第二Activity的运行过程,重新生成所述第二Activity的预加载类列表。
在一种可能实现方式中,所述第二加载模块304用于如果所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,按照各个类在运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类;启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。
在一种可能实现方式中,所述第一Activity为桌面Activity,所述第二Activity为任一个应用程序的主Activity;或,所述第一Activity与所述第二Activity属于同一个应用程序;或,所述第一Activity属于第一应用程序,所述第二Activity属于第二应用程序。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种应用预加载装置500的框图。例如,装置500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,装置500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件516。
处理组件502通常控制装置500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个多核处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在装置500的操作。这些数据的示例包括用于在装置500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为装置500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为装置500生成、管理和分配电力相关联的组件。
多媒体组件508包括在所述装置500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当装置500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当装置500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为装置500提供各个方面的状态评估。例如,传感器组件514可以检测到设备500的打开/关闭状态,组件的相对定位,例如所述组件为装置500的显示器和小键盘,传感器组件514还可以检测装置500或装置500一个组件的位置改变,用户与装置500接触的存在或不存在,装置500方位或加速/减速和装置500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于装置500和其他设备之间有线或无线方式的通信。装置500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述应用预加载方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由装置500的多核处理器520执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (9)

1.一种应用预加载方法,其特征在于,所述方法包括:
接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;
对所述第一Activity暂停处理;
在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表;
基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的多个预加载类进行并行加载,所述空闲计算资源是指在所述第一Activity的暂停处理过程中,终端中存在的处于闲置状态的剩余计算资源;
其中,所述第二Activity的预加载类列表在每次应用运 行时同步生成,且所述预加载类列表中的多个预加载类是指所述第二Activity在历史运行过程中所使用到的多个类;
其中,所述基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的多个预加载类进行并行加载,包括:
若所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,则确定各个类在历史运行过程中的使用先后顺序,根据所述各个类在历史运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类;
启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。
2.根据权利要求1所述的方法,其特征在于,所述接收场景切换指令之前,所述方法还包括:
在所述第二Activity的运行过程中,记录所述运行过程中所使用到的类,生成所述第二Activity的预加载类列表。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述第二Activity所属应用的版本更新后,根据更新版本中所述第二Activity的运行过程,重新生成所述第二Activity的预加载类列表。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述第一Activity为桌面Activity,所述第二Activity为任一个应用程序的主Activity;或,所述第一Activity与所述第二Activity属于同一个应用程序;或,所述第一Activity属于第一应用程序,所述第二Activity属于第二应用程序。
5.一种应用预加载装置,其特征在于,所述装置包括:
接收模块,用于接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;
暂停模块,用于对所述第一Activity暂停处理;
获取模块,用于在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表;
加载模块,用于基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的多个预加载类进行并行加载,所述空闲计算资源是指在所述第一Activity的暂停处理过程中,终端中存在的处于闲置状态的剩余计算资源;
其中,所述第二Activity的预加载类列表在每次应用运 行时同步生成,且所述预加载类列表中的多个预加载类是指所述第二Activity在历史运行过程中所使用到的多个类;
其中,所述加载模块,还用于若所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,则确定各个类在历史运行过程中的使用先后顺序,根据所述各个类在历史运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类,启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括列表生成模块,用于在所述第二Activity的运行过程中,记录所述运行过程中所使用到的类,生成所述第二Activity的预加载类列表。
7.根据权利要求6所述的装置,其特征在于,所述列表生成模块,还用于当所述第二Activity所属应用的版本更新后,根据更新版本中所述第二Activity的运行过程,重新生成所述第二Activity的预加载类列表。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述第一Activity为桌面Activity,所述第二Activity为任一个应用程序的主Activity;或,所述第一Activity与所述第二Activity属于同一个应用程序;或,所述第一Activity属于第一应用程序,所述第二Activity属于第二应用程序。
9.一种应用预加载装置,其特征在于,包括:
多核处理器;
用于存储所述多核处理器可执行的指令的存储器;
其中,所述多核处理器被配置为:
接收场景切换指令,所述场景切换指令用于指示从第一用户切换活动Activity切换至第二Activity;
对所述第一Activity暂停处理;
在所述第一Activity的暂停处理过程中,获取所述第二Activity的预加载类列表,基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的多个预加载类进行并行加载,所述空闲计算资源是指在所述第一Activity的暂停处理过程中,终端中存在的处于闲置状态的剩余计算资源;
其中,所述第二Activity的预加载类列表在每次应用运 行时同步生成,且所述预加载类列表中的多个预加载类是指所述第二Activity在历史运行过程中所使用到的多个类;
其中,所述基于空闲计算资源,启动至少一个线程对所述第二Activity的预加载类列表中的多个预加载类进行并行加载,包括:
若所述空闲计算资源不能满足所述第二Activity的预加载类列表中的类的加载需求,则确定各个类在历史运行过程中的使用先后顺序,根据所述各个类在历史运行过程中的使用先后顺序,确定所述第二Activity的预加载类列表中的目标类;
启动至少一个线程对所述第二Activity的预加载类列表中的目标类进行加载。
CN201610256360.7A 2016-04-22 2016-04-22 应用预加载方法及装置 Active CN105955765B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610256360.7A CN105955765B (zh) 2016-04-22 2016-04-22 应用预加载方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610256360.7A CN105955765B (zh) 2016-04-22 2016-04-22 应用预加载方法及装置

Publications (2)

Publication Number Publication Date
CN105955765A CN105955765A (zh) 2016-09-21
CN105955765B true CN105955765B (zh) 2020-03-03

Family

ID=56916547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610256360.7A Active CN105955765B (zh) 2016-04-22 2016-04-22 应用预加载方法及装置

Country Status (1)

Country Link
CN (1) CN105955765B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106502737B (zh) * 2016-10-20 2019-07-30 广州酷狗计算机科技有限公司 一种提高应用程序启动速度的方法和终端
CN106598640A (zh) * 2016-11-01 2017-04-26 努比亚技术有限公司 一种启动应用程序的方法和装置
CN108062320A (zh) * 2016-11-08 2018-05-22 长沙博为软件技术股份有限公司 一种针对桌面应用程序的数据采集、转换及装载的方法
CN108228335A (zh) * 2016-12-21 2018-06-29 阿里巴巴集团控股有限公司 一种软件运行方法、装置、系统及电子设备
CN109960539A (zh) * 2017-12-21 2019-07-02 广东欧珀移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108614722B (zh) 2018-05-10 2020-09-08 上海瑾盛通信科技有限公司 应用程序预加载方法、装置、存储介质及终端
CN108595227A (zh) 2018-05-10 2018-09-28 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108595228B (zh) 2018-05-10 2021-03-12 Oppo广东移动通信有限公司 应用程序预测模型建立方法、装置、存储介质及移动终端
CN108710513B (zh) 2018-05-15 2020-07-21 Oppo广东移动通信有限公司 应用程序启动方法、装置、存储介质及终端
CN108595231B (zh) * 2018-05-15 2021-06-15 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及智能终端
CN108762833A (zh) * 2018-05-16 2018-11-06 北京安云世纪科技有限公司 安卓系统中的应用启动方法和装置
CN108647086B (zh) * 2018-05-16 2022-10-21 北京安云世纪科技有限公司 安卓系统中的应用切换方法和装置
CN108804157A (zh) 2018-06-05 2018-11-13 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及终端
CN111736913B (zh) * 2019-03-25 2021-11-19 华为技术有限公司 类加载方法和装置
CN110209435A (zh) * 2019-04-28 2019-09-06 北京蓦然认知科技有限公司 一种应用预加载方法、装置
CN111078308B (zh) * 2019-10-18 2023-12-15 北京奇艺世纪科技有限公司 类的自动加载方法、装置、电子设备及存储介质
CN112817648A (zh) * 2019-10-31 2021-05-18 深圳市万普拉斯科技有限公司 应用程序文件预加载方法、装置和移动终端
CN112947927A (zh) * 2019-11-22 2021-06-11 华为技术有限公司 应用程序运行方法、装置、终端设备及介质
CN111258676B (zh) * 2020-01-16 2023-07-25 中国平安财产保险股份有限公司 模块预加载方法、装置、设备及可读存储介质
CN113254105B (zh) * 2021-06-08 2023-03-24 北京字节跳动网络技术有限公司 资源处理方法和装置、存储介质和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577212A (zh) * 2012-08-08 2014-02-12 腾讯科技(深圳)有限公司 系统启动预加载方法及装置
CN103793249A (zh) * 2014-01-24 2014-05-14 北京航空航天大学 一种Java虚拟机中类库的多线程预加载方法
CN104268019A (zh) * 2014-09-23 2015-01-07 广州金山网络科技有限公司 一种软件运行方法、装置及终端
CN104461632A (zh) * 2014-12-09 2015-03-25 东软集团股份有限公司 一种Web App加载方法及装置
CN105045655A (zh) * 2015-05-15 2015-11-11 广东小天才科技有限公司 应用资源加载方法和装置
CN105357562A (zh) * 2015-11-11 2016-02-24 腾讯科技(深圳)有限公司 一种信息处理方法及终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577212A (zh) * 2012-08-08 2014-02-12 腾讯科技(深圳)有限公司 系统启动预加载方法及装置
CN103793249A (zh) * 2014-01-24 2014-05-14 北京航空航天大学 一种Java虚拟机中类库的多线程预加载方法
CN104268019A (zh) * 2014-09-23 2015-01-07 广州金山网络科技有限公司 一种软件运行方法、装置及终端
CN104461632A (zh) * 2014-12-09 2015-03-25 东软集团股份有限公司 一种Web App加载方法及装置
CN105045655A (zh) * 2015-05-15 2015-11-11 广东小天才科技有限公司 应用资源加载方法和装置
CN105357562A (zh) * 2015-11-11 2016-02-24 腾讯科技(深圳)有限公司 一种信息处理方法及终端

Also Published As

Publication number Publication date
CN105955765A (zh) 2016-09-21

Similar Documents

Publication Publication Date Title
CN105955765B (zh) 应用预加载方法及装置
CN108762839B (zh) 应用程序的界面显示方法及装置
US9588805B2 (en) Method and terminal device for controlling background application
US10282561B2 (en) Method and apparatus for managing application
CN105955766B (zh) 应用预加载方法及装置
CN107291626B (zh) 数据存储方法和装置
US20150333971A1 (en) Method and device for managing processes of application program
JP6189000B2 (ja) アプリケーションのインストールパッケージの処理方法、装置、プログラム及び記録媒体
CN109254849B (zh) 应用程序的运行方法及装置
CN105930213B (zh) 应用运行方法及装置
CN105912204B (zh) 启动应用界面的方法及装置
CN111258952B (zh) 一种数据存储控制方法、装置及存储介质
CN108958911B (zh) 进程的控制方法及装置
CN109062625B (zh) 应用程序加载的方法、装置及可读存储介质
RU2632396C2 (ru) Способ и устройство для управления подключаемым модулем маршрутизатора
CN107632835B (zh) 应用安装方法及装置
CN109471714B (zh) 平台部署方法、装置、设备及储存介质
CN105786561B (zh) 进程调用的方法及装置
CN112307229A (zh) 数据处理方法及装置、电子设备、计算机可读存储介质
CN116048757A (zh) 任务处理方法、装置、电子设备和存储介质
CN113703937A (zh) 动画切换方法及装置、存储介质
CN112416580A (zh) 确定应用运行时最佳资源配置方式的方法、装置及介质
CN112083981A (zh) 一种页面视图组件的创建方法和装置
CN110968523A (zh) 内存碎片整理的方法和装置
CN114115025B (zh) 基于自动驾驶系统的故障信息的保存方法、装置和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant