CN117608690A - 应用程序启动方法、装置、设备、介质及产品 - Google Patents

应用程序启动方法、装置、设备、介质及产品 Download PDF

Info

Publication number
CN117608690A
CN117608690A CN202311595657.2A CN202311595657A CN117608690A CN 117608690 A CN117608690 A CN 117608690A CN 202311595657 A CN202311595657 A CN 202311595657A CN 117608690 A CN117608690 A CN 117608690A
Authority
CN
China
Prior art keywords
target
code class
application program
code
service
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.)
Pending
Application number
CN202311595657.2A
Other languages
English (en)
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.)
China Unionpay Co Ltd
Original Assignee
China Unionpay 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 China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN202311595657.2A priority Critical patent/CN117608690A/zh
Publication of CN117608690A publication Critical patent/CN117608690A/zh
Pending legal-status Critical Current

Links

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/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

本申请公开了一种应用程序启动方法、装置、设备、介质及产品。该应用程序启动方法包括获取目标用户对目标应用程序的使用信息;根据使用信息确定目标应用程序中目标用户待使用的至少一个业务功能,作为目标业务功能;根据目标业务功能对应的待加载数据,生成与目标应用程序对应的启动数据;在接收到针对目标应用程序的启动指令的情况下,启动目标应用程序,并加载启动数据。根据本申请实施例,可以提高应用程序的启动速度。

Description

应用程序启动方法、装置、设备、介质及产品
技术领域
本申请属于计算机技术,尤其涉及一种应用程序启动方法、装置、设备、介质及产品。
背景技术
随着设备中安装的应用程序越来越多,应用程序所包含的业务功能越来越多样化,如何提高应用程序的启动速度,成为提升用户对该应用程序使用体验的重要问题之一。
目前,应用程序的启动流程都是在编码阶段就已经设定了的,例如应用程序启动时进行初始化的业务功能是固定的,而有些业务功能对用户而言可能并不会使用到,这就导致应用程序启动时初始化了一些无用的业务功能,降低了应用程序的启动速度。
发明内容
本申请实施例提供一种应用程序启动方法、装置、设备、介质及产品,能够提高应用程序的启动速度。
第一方面,本申请实施例提供一种应用程序启动方法,该方法包括:
获取目标用户对目标应用程序的使用信息;
根据所述使用信息确定所述目标应用程序中所述目标用户待使用的至少一个业务功能,作为目标业务功能;
根据所述目标业务功能对应的待加载数据,生成与所述目标应用程序对应的启动数据;
在接收到针对所述目标应用程序的启动指令的情况下,启动所述目标应用程序,并加载所述启动数据。
第二方面,本申请实施例提供了一种应用程序启动装置,该装置包括:
信息获取模块,用于获取目标用户对目标应用程序的使用信息;
业务确定模块,用于根据所述使用信息确定所述目标应用程序中所述目标用户待使用的至少一个业务功能,作为目标业务功能;
数据生成模块,用于根据所述目标业务功能对应的待加载数据,生成与所述目标应用程序对应的启动数据;
数据加载模块,用于在接收到针对所述目标应用程序的启动指令的情况下,启动所述目标应用程序,并加载所述启动数据。
第三方面,本申请实施例提供了一种客户端设备,该客户端设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行所述计算机程序指令时实现如第一方面的任一项实施例中所述的应用程序启动方法的步骤。
第四方面,本申请实施例提供了一种服务端设备,该服务端设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行所述计算机程序指令时实现如第一方面的任一项实施例中所述的应用程序启动方法的步骤。
第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面的任一项实施例中所述的应用程序启动方法的步骤。
第六方面,本申请实施例提供了一种计算机程序产品,计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行如第一方面的任一项实施例中所述的应用程序启动方法的步骤。
本申请实施例中的应用程序启动方法、装置、设备、介质及产品,通过根据目标用户对目标应用程序的使用信息,确定目标应用程序中目标用户可能会使用的至少一个业务功能,作为目标业务功能,并利用目标业务功能对应的待加载数据,生成与目标应用程序对应的启动数据,进而在接收到对目标应用程序的启动指令的情况下,加载该启动数据。如此,通过动态编排应用程序启动时所需加载的业务功能,可以满足不同用户的需求,在应用程序启动阶段减少了对特定用户而言无用业务功能的相关数据的加载,从而可以提高应用程序的启动速度。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的应用程序启动方法所适用的系统架构的结构示意图;
图2是本申请一个实施例提供的应用程序启动方法的流程示意图;
图3是本申请提供的启动加载包生成过程的示意图;
图4是本申请提供的用于表示代码类引用关系的树状图的示意图;
图5是本申请提供的静态编译阶段的示意图;
图6是本申请提供的动态编排阶段的示意图;
图7是本申请一个实施例提供的应用程序启动装置的结构示意图;
图8是本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
目前,业内对应用程序的启动方案通常不会做特殊适配,所有用户的启动流程都是在应用程序开发阶段就已经预设好的,也即,应用程序对于每个用户都有着相同的启动流程。然而,实际情况是不同用户的操作习惯和行为轨迹可能并不相同,对于部分用户来说,在应用程序启动阶段对一些通常不会使用的业务功能做初始化处理,反而会导致启动速度无法达到最优,从而降低了应用程序的启动速度。
为了解决现有技术问题,本申请实施例提供了一种应用程序启动方法、装置、设备、介质及产品。通过根据用户对应用程序的使用情况,动态编排应用程序启动时所需加载的业务功能,进而可以满足不同用户的需求,在应用程序启动阶段减少了对特定用户而言无用业务功能的相关数据的加载,从而可以提高应用程序的启动速度。该应用程序启动方法可以应用于应用程序的启动场景,下面首先对本申请实施例的应用程序启动方法所适用的系统架构进行介绍。
如图1所示,该架构包括客户端设备11和服务端设备12。客户端设备11中安装有目标应用程序,该目标应用程序可以是任意应用程序。
在一些示例中,客户端设备11中可包括信息采集模块111、动态加载模块112、编译寻址模块113和代码分析模块114。信息采集模块111用于采集用户对目标应用程序的使用信息;动态加载模块112用于在启动目标应用程序时加载最新生成的启动数据;编译寻址模块113用于根据代码类之间的引用关系,为每个业务功能关联到的代码类添加对应的业务标签;代码分析模块114用于分析代码执行流程并监听每个主代码类对应的生命周期,以确定该主代码类及其引用的代码类是在业务初始化阶段被调用,还是业务实现阶段被调用,从而为每个代码类添加对应的职能标签。其中,在代码运行阶段主要涉及信息采集模块111和动态加载模块112,负责动态加载目标应用程序的启动数据。在代码编译阶段主要涉及编译寻址模块113和代码分析模块114,负责根据代码类与标签之间的映射关系生成标签映射表。
另外,服务端设备12中可包括数据分析模块121和标签映射管理模块122。数据分析模块121用于从多个维度综合分析客户端采集的使用信息;标签映射管理模块122用于管理各个版本的标签映射表。每个标签映射表在各个版本的目标应用程序打包编译阶段生成。标签可分为两类:一类是业务标签,用于维护不同业务功能与其调用的代码类之间的映射关系;另一类是职能标签,用于标记代码类是否是在业务初始化阶段被调用。
在一些示例中,客户端设备11或服务端设备12中还可包括动态重排模块131,该动态重排模块131可用于动态确定最佳业务启动序列,再查询标签映射表,找到该业务启动序列对应的代码类,生成启动数据。
基于此,本申请实施例中的系统架构可存在两种模式,即“本地模式”和“云端模式”。在“本地模式”下,动态重排模块131可部署在客户端设备11中,也即由客户端设备11根据本地采集的使用信息来动态编排业务启动序列,进而生成启动数据。在“云端模式”下,动态重排模块131可部署在服务端设备12中,也即由服务端设备12根据客户端采集并上传的使用信息来动态编排业务启动序列,进而生成启动数据。
上述“本地模式”可应用于业务功能比较繁多、对启动提速的实时性要求更高的场景,而上述“云端模式”可应用于业务功能比较简单、应用较少的场景。
基于上述架构,下面对本申请实施例所提供的应用程序启动方法进行详细介绍。
图2是本申请一个实施例提供的应用程序启动方法的流程示意图。该应用程序启动方法可以由图1中的客户端设备11或服务端设备12执行。
如图2所示,该应用程序启动方法具体可以包括如下步骤:
S210、获取目标用户对目标应用程序的使用信息;
S220、根据使用信息确定目标应用程序中目标用户待使用的至少一个业务功能,作为目标业务功能;
S230、根据目标业务功能对应的待加载数据,生成与目标应用程序对应的启动数据;
S240、在接收到针对目标应用程序的启动指令的情况下,启动目标应用程序,并加载启动数据。
由此,通过根据目标用户对目标应用程序的使用信息,确定目标应用程序中目标用户可能会使用的至少一个业务功能,作为目标业务功能,并利用目标业务功能对应的待加载数据,生成与目标应用程序对应的启动数据,进而在接收到对目标应用程序的启动指令的情况下,加载该启动数据。如此,通过动态编排应用程序启动时所需加载的业务功能,可以满足不同用户的需求,在应用程序启动阶段减少了对特定用户而言无用业务功能的相关数据的加载,从而可以提高应用程序的启动速度。
下面介绍上述各个步骤的具体实现方式。
在一些实施方式中,在S210中,目标用户可以是某个特殊群体的用户,也可以是安装有目标应用程序的客户端设备的使用者。其中,目标应用程序可以是任意应用程序。
另外,使用信息可以是与用户的使用习惯、应用程序的配置以及用户在使用应用程序的过程中出现的异常等相关的信息。基于此,在一些可能的实施方式中,上述使用信息包括用户操作行为信息、应用配置信息和异常业务信息中的至少一项。其中,用户操作行为信息可以是与目标用户的使用习惯相关的信息,应用配置信息可以是与目标应用程序的配置相关的信息,异常业务信息可以是目标用户在使用目标应用程序的过程中出现异常的业务功能的信息。
示例性地,可通过客户端设备采集目标用户使用目标应用程序时的操作行为信息、目标应用程序的配置信息以及出现异常的业务信息等,以便从目标应用程序所包含的业务功能中确定目标用户可能需要使用的业务功能。
在一些实施方式中,在S220中,在得到目标用户对目标应用程序的使用信息后,可根据该使用信息推测目标用户在使用目标应用程序的过程中最有可能会用到的至少一个业务功能,得到一个可动态编排的业务启动序列。该业务启动序列中所包含的业务功能可根据不同用户对目标应用程序的使用信息的不同而不同。
在一些具体的例子中,在目标应用程序中包括业务功能a、业务功能b、业务功能c、业务功能d和业务功能e的情况下,若根据目标用户的使用习惯可确定目标用户经常使用业务功能b和业务功能c,则可将业务功能b和业务功能c作为目标业务功能。又例如,若根据目标用户对目标应用程序的配置可确定目标用户在城市M,而城市M中的用户使用较多的是业务功能e,则可将业务功能e作为目标业务功能。再例如,若目标用户在上一次使用目标应用程序的过程中业务功能a出现异常,则可将除了业务功能a之外的其他业务功能作为目标业务功能。当然,也可综合上述三种使用信息共同确定目标业务功能。
在一些实施方式中,在S230中,待加载数据可以包括运行目标业务功能时需要加载的数据,例如代码类。不同业务功能对应的代码类可以相同,也可以不同,还可以部分相同,在此不作限定。
基于此,在一些实施方式中,上述S230具体可以包括:
获取与目标业务功能对应的代码类;
根据代码类生成与目标应用程序对应的启动数据。
这里,与目标业务功能对应的代码类可以是运行目标业务功能时业务代码中需要调用的代码类。另外,启动数据可以是启动目标应用程序时需加载的数据,例如可以是dex文件或由dex文件打包成的apk文件,即启动加载包。
示例性地,如图3所示,根据使用信息可确定目标应用程序中目标用户最有可能使用的多个业务功能,得到最佳业务启动序列31,针对该业务启动序列31中的业务功能,可查询得到每个业务功能需要调用到的代码类,得到代码类序列32,进而将该代码类序列32编排进主dex文件33中,生成启动加载包。
在一些实施方式中,在S240中,在生成启动数据后,当接收到针对目标应用程序的启动指令时,可在启动目标应用程序的同时,加载该启动数据,也即,在目标应用程序的启动阶段加载该启动数据。其中,针对目标应用程序的启动指令例如可以是用户触发开启目标应用程序时生成的指令。
这样,目标应用程序在启动时,加载的是目标用户最有可能使用的业务功能所对应的数据,因此,对于不同用户做不同的适配,减少对无用业务功能的数据加载,可以减少目标应用程序的启动耗时,使目标应用程序的启动速度达到最优。
另外,在一些实施方式中,在上述获取与目标业务功能对应的代码类之后,本申请实施例提供的应用程序启动方法还可以包括:
从与目标业务功能对应的代码类中确定业务初始化阶段调用的代码类,得到第一目标代码类;
基于此,上述根据代码类生成与目标应用程序对应的启动数据,具体可以包括:
根据第一目标代码类生成与目标应用程序对应的启动数据。
这里,业务功能对应的代码类中,有些是在业务初始化阶段调用的,有些是在业务实现阶段调用的。其中,第一目标代码类可以是目标业务功能在业务初始化阶段调用的代码类。
示例性地,为了进一步提高目标应用程序的启动速度,可在目标应用程序启动时先加载目标业务功能在业务初始化阶段调用的代码类。
另外,在一些实施方式中,在上述获取与目标业务功能对应的代码类之后,本申请实施例提供的应用程序启动方法还可以包括:
从与目标业务功能对应的代码类中确定业务实现阶段调用的代码类,得到第二目标代码类。
基于此,在上述S240之后,本申请实施例提供的应用程序启动方法还可以包括:
在接收到针对目标业务功能的运行指令的情况下,加载第二目标代码类,并运行目标业务功能。
这里,第二目标代码类可以是目标业务功能在业务实现阶段调用的代码类。
示例性地,为了进一步提高目标应用程序的启动速度,可在目标应用程序启动时先加载目标业务功能在业务初始化阶段调用的代码类,而在目标应用程序运行过程中在触发目标业务功能运行的情况下,再加载目标业务功能需要调用的其他代码类,也即目标业务功能在业务实现阶段调用的代码类。
另外,为了便于找到特定业务功能对应的代码类,可以预先为各个业务功能对应的代码类添加相应的业务标签。基于此,上述获取与目标业务功能对应的代码类,具体可以包括:
确定与目标业务功能对应的目标业务标签;
从预设的多个代码类中获取添加有目标业务标签的代码类,得到与目标业务功能对应的代码类。
这里,不同的业务功能可对应设置不同的业务标签。若同一代码类在多个业务功能中被调用,则该代码类可具有多个不同的业务标签。
示例性地,代码类与业务标签之间的映射关系可设置在标签映射表中。在确定得到目标业务功能对应的目标业务标签后,通过查询标签映射表,可得到添加有目标业务标签的代码类,进而可快速获取到与目标业务功能对应的代码类。
同理,为了便于找到业务初始化阶段或业务实现阶段调用的代码类,可以预先为不同阶段调用的代码类添加相应的职能标签。基于此,在一些实施方式中,上述从与目标业务功能对应的代码类中确定业务初始化阶段调用的代码类,得到第一目标代码类,具体可以包括:
从与目标业务功能对应的代码类中确定添加有第一职能标签的代码类,得到第一目标代码类,其中,第一职能标签用于标识业务初始化阶段调用的代码类。
这里,第一职能标签例如可以是“初始化”标签,用于标识业务初始化阶段调用的代码类。
示例性地,代码类与职能标签之间的映射关系也可设置在标签映射表中。在确定业务初始化阶段调用的代码类时,可通过查询标签映射表,查询到添加有“初始化”标签的代码类,进而可快速确定业务初始化阶段调用的代码类。
同样地,在一些实施方式中,上述从与目标业务功能对应的代码类中确定业务实现阶段调用的代码类,得到第二目标代码类,具体可以包括:
从与目标业务功能对应的代码类中确定添加有第二职能标签的代码类,得到第二目标代码类,其中,第二职能标签用于标识业务实现阶段调用的代码类。
这里,第二职能标签例如可以是“业务实现”标签,用于标识业务实现阶段调用的代码类。
示例性地,在确定业务实现阶段调用的代码类时,可通过查询标签映射表,查询到添加有“业务实现”标签的代码类,进而可快速确定业务实现阶段调用的代码类。
基于此,在上述实施方式的基础上,本申请实施例还提出一些自动添加标签的方案。在一些可能的实施例中,在获取与所述目标业务功能对应的代码类之前,本申请实施例提供的应用程序启动方法还可以包括:
获取与目标业务功能对应的主代码类;
根据主代码类与其他代码类之间的引用关系,获取主代码类引用的代码类,得到第三目标代码类;
为主代码类和第三目标代码类添加与目标业务功能对应的目标业务标签。
这里,每个业务功能可以对应有一个或多个与其他业务功能隔离开来的主代码类,不同业务功能的主代码类之间可以没有引用关系。
示例性地,本申请实施例在目标应用程序的代码编译过程中,可对代码执行流程进行分析,每个主代码类及其引用的代码类可构成一个树状图。例如,如图4所示,主代码类A可引用代码类A1、A2和A3,而代码类A1又引用代码类A4和A5,代码类A3又引用代码类A6,另外,代码类A5引用代码类A7……,从而形成以主代码类A为根节点的树状图。通过该树状图,可获取得到每个主代码类所直接引用或间接引用的代码类,得到第三目标代码类。
在一些示例中,可在主代码类上使用代码注解的方式添加相应业务功能对应的业务标签,例如在目标业务功能对应的主代码类上以代码注解的方式添加上目标业务标签,再根据树状图中的关联关系,利用编译寻址功能,将目标业务标签映射到该主代码类引用的各个代码类上,并将代码类与目标业务标签之间的映射关系存储至标签映射表中,其中,一个代码类可能会映射到一个或多个业务标签。
另外,在为代码类添加标签之前,还可根据合适的业务边界梳理业务,例如按照“应用业务→基础业务→代码组件”的业务架构对目标应用程序调用的代码类按照业务功能进行拆分,对每个业务功能内的主代码类手动添加上对应业务名称的代码注解,进而在编译过程中,根据代码执行流程里代码类与代码类之间的引用关系,生成各个业务功能对应的树状图,在每一个被引用的代码类上自动添加上父节点的代码类所对应的注解标签。这样,可以实现为各个代码类添加上相应业务功能所对应的业务标签。
基于此,在本申请的一些实施方式中,在根据主代码类与其他代码类之间的引用关系,获取主代码类引用的代码类,得到第三目标代码类之后,本申请实施例提供的应用程序启动方法还可以包括:
监听主代码类的生命周期;
在根据生命周期确定主代码类在业务初始化阶段被调用的情况下,为主代码类和第三目标代码类添加第一职能标签。
示例性地,在编译过程中,还可监听每个业务功能对应的主代码类的生命周期,进而确定哪些主代码类是在对应业务功能的业务初始化阶段被调用的代码类,将业务初始化阶段调用到的主代码类及其引用的代码类,以代码注解的方式添加第一职能标签,例如“初始化”标签。
另外,在本申请的一些实施方式中,在上述监听主代码类的生命周期之后,本申请实施例提供的应用程序启动方法还可以包括:
在根据生命周期确定主代码类在业务实现阶段被调用的情况下,为主代码类和第三目标代码类添加第二职能标签。
示例性地,通过监听每个业务功能对应的主代码类的生命周期,还可确定哪些主代码类是在对应业务功能的业务初始化阶段不会被调用的代码类,也即业务实现阶段才会被调用的代码类,进而将业务初始化阶段不会调用到的主代码类及其引用的代码类,以代码注解的方式添加第二职能标签,例如“业务实现”标签。
需要说明的是,若一个代码类既是目标业务功能a在业务初始化阶段被调用的代码类,又是目标业务功能b在业务实现阶段被调用的代码类,则该代码类的加载时机可以“初始化”标签为准,也即,将该代码类作为第一目标代码类,在目标应用程序的启动阶段进行加载。
在一些具体例子中,本申请实施例可分为静态编译和动态编排两个阶段。在静态编译阶段,如图5所示,针对目标应用程序中的每个业务功能,可按照上述方式分析各个业务功能的代码执行流程,并相应添加业务标签和职能标签,进而可根据代码类与标签之间的映射关系生成标签映射表,方便后期查询。
基于此,在动态编排阶段,如图6所示,采集目标用户对目标应用程序的使用信息,并根据使用信息生成最佳业务启动序列,例如业务功能a、业务功能e、业务功能d和业务功能b。从标签映射表中可查询到与最佳业务启动序列中包含的业务功能相对应的代码类,以及每个代码类被调用的阶段。基于此,将这些代码类中具有“初始化”标签的代码类整合至主dex文件中,而将这些代码类中具有“业务实现”标签的代码类整合至其他dex文件中,并进行重构、压缩,生成新的启动加载包。这样,目标应用程序在下一次冷启动时,可直接使用该新的启动加载包进行加载,其中,主dex文件中的代码类在目标应用程序启动时会优先加载,其他dex文件中的代码类在目标应用程序运行过程中当用户启动相应业务功能时再进行加载。
基于上述各个实施方式,下面结合使用场景举一些具体例子。
例如,“乘车码”应用是某个应用程序提供的业务功能之一,但在现有的启动流程中,并不会预先对它进行初始化。通过分析埋点数据,可以发现某用户在很长一段时间内,每次打开该应用程序就只使用“乘车码”,且几乎从未使用过其他功能。对于该用户而言,现有启动流程里所做的大部分预加载都是无效耗时,而真正的常用业务功能“乘车码”却要等到每次用户使用“乘车码”时才去做初始化,浪费了很多启动资源。
通过本申请实施例提出的应用程序启动方法,可以针对这个用户的实际情况进行优化:以“云端模式”为例,首先服务端设备中的数据分析模块会生成一个包含“乘车码”的业务序列,并将用户不常用的业务从序列中移除;再查询标签映射表,遍历出同时带有“乘车码”业务标签和“初始化”职能标签的代码类;服务端设备中的动态重排模块会将这些类编排到主dex文件中,并生成一个新的启动加载包;最后,将这个新的启动加载包下发到这个用户的客户端设备上,在其下一次冷启动该应用程序时,会预先初始化“乘车码”业务,而用户从未使用的一些业务则等到使用到的时候再进行初始化。这样,就可以极大提高应用程序的启动效率,减少用户等待时间,常用业务的使用体验也会更加流畅。
需要说明的是,上述本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于相同的发明构思,本申请还提供了一种应用程序启动装置。具体结合图7进行详细说明。
图7是本申请一个实施例提供的应用程序启动装置的结构示意图。
如图7所示,该应用程序启动装置700可以包括:
信息获取模块701,用于获取目标用户对目标应用程序的使用信息;
业务确定模块702,用于根据所述使用信息确定所述目标应用程序中所述目标用户待使用的至少一个业务功能,作为目标业务功能;
数据生成模块703,用于根据所述目标业务功能对应的待加载数据,生成与所述目标应用程序对应的启动数据;
数据加载模块704,用于在接收到针对所述目标应用程序的启动指令的情况下,启动所述目标应用程序,并加载所述启动数据。
下面对上述应用程序启动装置700进行详细说明,具体如下所示:
在其中一些实施例中,所述数据生成模块703包括:
第一获取子模块,用于获取与所述目标业务功能对应的代码类;
第一生成子模块,用于根据所述代码类生成与所述目标应用程序对应的启动数据。
在其中一些实施例中,所述数据生成模块703还包括:
第一确定子模块,用于在获取与所述目标业务功能对应的代码类之后,从与所述目标业务功能对应的代码类中确定业务初始化阶段调用的代码类,得到第一目标代码类;
所述第一生成子模块具体用于:
根据所述第一目标代码类生成与所述目标应用程序对应的启动数据。
在其中一些实施例中,所述数据生成模块703还包括:
第二确定子模块,用于在获取与所述目标业务功能对应的代码类之后,从与所述目标业务功能对应的代码类中确定业务实现阶段调用的代码类,得到第二目标代码类;
第一加载子模块,用于在启动所述目标应用程序,并加载所述启动数据之后,在接收到针对所述目标业务功能的运行指令的情况下,加载所述第二目标代码类,并运行所述目标业务功能。
在其中一些实施例中,所述第一获取子模块包括:
第一确定单元,用于确定与所述目标业务功能对应的目标业务标签;
第一获取单元,用于从预设的多个代码类中获取添加有所述目标业务标签的代码类,得到与所述目标业务功能对应的代码类。
在其中一些实施例中,所述第一确定子模块具体用于:
从与所述目标业务功能对应的代码类中确定添加有第一职能标签的代码类,得到第一目标代码类,其中,所述第一职能标签用于标识业务初始化阶段调用的代码类。
在其中一些实施例中,所述第二确定子模块具体用于:
从与所述目标业务功能对应的代码类中确定添加有所述第二职能标签的代码类,得到第二目标代码类,其中,所述第二职能标签用于标识业务实现阶段调用的代码类。
在其中一些实施例中,所述数据生成模块703还包括:
第二获取子模块,用于在获取与所述目标业务功能对应的代码类之前,获取与所述目标业务功能对应的主代码类;
第三获取子模块,用于根据所述主代码类与其他代码类之间的引用关系,获取所述主代码类引用的代码类,得到第三目标代码类;
第一添加子模块,用于为所述主代码类和所述第三目标代码类添加与所述目标业务功能对应的目标业务标签。
在其中一些实施例中,所述数据生成模块703还包括:
第一监听子模块,用于在根据所述主代码类与其他代码类之间的引用关系,获取所述主代码类引用的代码类,得到第三目标代码类之后,监听所述主代码类的生命周期;
第二添加子模块,用于在根据所述生命周期确定所述主代码类在业务初始化阶段被调用的情况下,为所述主代码类和所述第三目标代码类添加第一职能标签。
在其中一些实施例中,所述数据生成模块703还包括:
第三添加子模块,用于在监听所述主代码类的生命周期之后,在根据所述生命周期确定所述主代码类在业务实现阶段被调用的情况下,为所述主代码类和所述第三目标代码类添加第二职能标签。
在其中一些实施例中,所述使用信息包括用户操作行为信息、应用配置信息和异常业务信息中的至少一项。
由此,通过根据目标用户对目标应用程序的使用信息,确定目标应用程序中目标用户可能会使用的至少一个业务功能,作为目标业务功能,并利用目标业务功能对应的待加载数据,生成与目标应用程序对应的启动数据,进而在接收到对目标应用程序的启动指令的情况下,加载该启动数据。如此,通过动态编排应用程序启动时所需加载的业务功能,可以满足不同用户的需求,在应用程序启动阶段减少了对特定用户而言无用业务功能的相关数据的加载,从而可以提高应用程序的启动速度。
图8是本申请一个实施例提供的电子设备的结构示意图。
电子设备800可以包括处理器801以及存储有计算机程序指令的存储器802。
具体地,上述处理器801可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器802可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器802可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器802可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器802可在综合网关容灾设备的内部或外部。在特定实施例中,存储器802是非易失性固态存储器。
在特定实施例中,存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本申请的一方面的方法所描述的操作。
处理器801通过读取并执行存储器802中存储的计算机程序指令,以实现上述实施例中的任意一种应用程序启动方法。
在一些示例中,电子设备800还可包括通信接口803和总线810。其中,如图8所示,处理器801、存储器802、通信接口803通过总线810连接并完成相互间的通信。
通信接口803主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线810包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线810可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线810可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
示例性的,电子设备800可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等。
该电子设备800可以执行本申请实施例中的应用程序启动方法,从而实现结合图1和图7描述的应用程序启动方法和装置。
另外,结合上述实施例中的应用程序启动方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种应用程序启动方法。计算机可读存储介质的示例包括非暂态计算机可读存储介质,如便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件等。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

Claims (16)

1.一种应用程序启动方法,其特征在于,包括:
获取目标用户对目标应用程序的使用信息;
根据所述使用信息确定所述目标应用程序中所述目标用户待使用的至少一个业务功能,作为目标业务功能;
根据所述目标业务功能对应的待加载数据,生成与所述目标应用程序对应的启动数据;
在接收到针对所述目标应用程序的启动指令的情况下,启动所述目标应用程序,并加载所述启动数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标业务功能对应的待加载数据,生成与所述目标应用程序对应的启动数据,包括:
获取与所述目标业务功能对应的代码类;
根据所述代码类生成与所述目标应用程序对应的启动数据。
3.根据权利要求2所述的方法,其特征在于,在获取与所述目标业务功能对应的代码类之后,所述方法还包括:
从与所述目标业务功能对应的代码类中确定业务初始化阶段调用的代码类,得到第一目标代码类;
所述根据所述代码类生成与所述目标应用程序对应的启动数据,包括:
根据所述第一目标代码类生成与所述目标应用程序对应的启动数据。
4.根据权利要求3所述的方法,其特征在于,在获取与所述目标业务功能对应的代码类之后,所述方法还包括:
从与所述目标业务功能对应的代码类中确定业务实现阶段调用的代码类,得到第二目标代码类;
在启动所述目标应用程序,并加载所述启动数据之后,所述方法还包括:
在接收到针对所述目标业务功能的运行指令的情况下,加载所述第二目标代码类,并运行所述目标业务功能。
5.根据权利要求2所述的方法,其特征在于,所述获取与所述目标业务功能对应的代码类,包括:
确定与所述目标业务功能对应的目标业务标签;
从预设的多个代码类中获取添加有所述目标业务标签的代码类,得到与所述目标业务功能对应的代码类。
6.根据权利要求3所述的方法,其特征在于,所述从与所述目标业务功能对应的代码类中确定业务初始化阶段调用的代码类,得到第一目标代码类,包括:
从与所述目标业务功能对应的代码类中确定添加有第一职能标签的代码类,得到第一目标代码类,其中,所述第一职能标签用于标识业务初始化阶段调用的代码类。
7.根据权利要求4所述的方法,其特征在于,所述从与所述目标业务功能对应的代码类中确定业务实现阶段调用的代码类,得到第二目标代码类,包括:
从与所述目标业务功能对应的代码类中确定添加有所述第二职能标签的代码类,得到第二目标代码类,其中,所述第二职能标签用于标识业务实现阶段调用的代码类。
8.根据权利要求5所述的方法,其特征在于,在获取与所述目标业务功能对应的代码类之前,所述方法还包括:
获取与所述目标业务功能对应的主代码类;
根据所述主代码类与其他代码类之间的引用关系,获取所述主代码类引用的代码类,得到第三目标代码类;
为所述主代码类和所述第三目标代码类添加与所述目标业务功能对应的目标业务标签。
9.根据权利要求8所述的方法,其特征在于,在根据所述主代码类与其他代码类之间的引用关系,获取所述主代码类引用的代码类,得到第三目标代码类之后,所述方法还包括:
监听所述主代码类的生命周期;
在根据所述生命周期确定所述主代码类在业务初始化阶段被调用的情况下,为所述主代码类和所述第三目标代码类添加第一职能标签。
10.根据权利要求9所述的方法,其特征在于,在监听所述主代码类的生命周期之后,所述方法还包括:
在根据所述生命周期确定所述主代码类在业务实现阶段被调用的情况下,为所述主代码类和所述第三目标代码类添加第二职能标签。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述使用信息包括用户操作行为信息、应用配置信息和异常业务信息中的至少一项。
12.一种应用程序启动装置,其特征在于,包括:
信息获取模块,用于获取目标用户对目标应用程序的使用信息;
业务确定模块,用于根据所述使用信息确定所述目标应用程序中所述目标用户待使用的至少一个业务功能,作为目标业务功能;
数据生成模块,用于根据所述目标业务功能对应的待加载数据,生成与所述目标应用程序对应的启动数据;
数据加载模块,用于在接收到针对所述目标应用程序的启动指令的情况下,启动所述目标应用程序,并加载所述启动数据。
13.一种客户端设备,其特征在于,包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-11任意一项所述的应用程序启动方法的步骤。
14.一种服务端设备,其特征在于,包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-11任意一项所述的应用程序启动方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-11任意一项所述的应用程序启动方法的步骤。
16.一种计算机程序产品,其特征在于,所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1-11任意一项所述的应用程序启动方法的步骤。
CN202311595657.2A 2023-11-27 2023-11-27 应用程序启动方法、装置、设备、介质及产品 Pending CN117608690A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311595657.2A CN117608690A (zh) 2023-11-27 2023-11-27 应用程序启动方法、装置、设备、介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311595657.2A CN117608690A (zh) 2023-11-27 2023-11-27 应用程序启动方法、装置、设备、介质及产品

Publications (1)

Publication Number Publication Date
CN117608690A true CN117608690A (zh) 2024-02-27

Family

ID=89947683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311595657.2A Pending CN117608690A (zh) 2023-11-27 2023-11-27 应用程序启动方法、装置、设备、介质及产品

Country Status (1)

Country Link
CN (1) CN117608690A (zh)

Similar Documents

Publication Publication Date Title
CN109598127B (zh) 隐私风险评估方法和装置
KR20170068814A (ko) 악성 모바일 앱 감지 장치 및 방법
CN110928548A (zh) 一种数据处理方法以及设备
CN115408193A (zh) 多模块间错误码处理方法及装置
CN104765624A (zh) 虚拟机应用程序的更新处理方法和装置
US9411618B2 (en) Metadata-based class loading using a content repository
CN110245074B (zh) 一种日志记录的生成方法、装置、存储介质和服务器
CN113434582B (zh) 业务数据处理方法、装置、计算机设备和存储介质
CN111026613B (zh) 日志处理方法及装置
CN117608690A (zh) 应用程序启动方法、装置、设备、介质及产品
CN105867938A (zh) 指纹模组的识别方法及装置
CN107391711B (zh) 获取歌曲伴奏的方法和装置
CN112862245B (zh) 数据交换方法、装置以及电子设备
CN115858320A (zh) 操作日志记录方法、装置、介质及产品
CN113282541B (zh) 文件调用方法、装置和电子设备
CN107193721B (zh) 一种生成日志的方法和装置
CN115705294B (zh) 用于获取函数调用信息的方法、装置、电子设备和介质
CN113495723B (zh) 一种调用功能组件的方法、装置及存储介质
CN112783500B (zh) 编译优化信息生成方法、装置及电子设备
CN114492365A (zh) 二进制文件之间相似度的确定方法、计算设备及存储介质
CN110471708B (zh) 基于可重用组件的配置项获取的方法及装置
US10185718B1 (en) Index compression and decompression
CN114968787B (zh) 基于节点关系的测试方法、装置及电子设备
CN108446113B (zh) 类名称获取方法、装置及电子设备
CN115248705A (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