CN117130692B - 应用管理方法、装置、电子设备及存储介质 - Google Patents
应用管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117130692B CN117130692B CN202311370475.5A CN202311370475A CN117130692B CN 117130692 B CN117130692 B CN 117130692B CN 202311370475 A CN202311370475 A CN 202311370475A CN 117130692 B CN117130692 B CN 117130692B
- Authority
- CN
- China
- Prior art keywords
- page
- resource
- application
- module
- functional
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 118
- 230000004044 response Effects 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims abstract description 80
- 238000013507 mapping Methods 0.000 claims abstract description 43
- 238000005538 encapsulation Methods 0.000 claims abstract description 39
- 230000006870 function Effects 0.000 claims description 316
- 230000015654 memory Effects 0.000 claims description 73
- 238000004590 computer program Methods 0.000 claims description 17
- 230000036316 preload Effects 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 6
- 230000004083 survival effect Effects 0.000 claims description 5
- 230000007704 transition Effects 0.000 claims 2
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 9
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 7
- 238000009434 installation Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 238000007619 statistical method Methods 0.000 description 4
- 238000007635 classification algorithm Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000009933 burial Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
本申请涉及计算机技术领域,提供了一种应用管理方法、装置、电子设备及存储介质。该方法包括:确定应用管理对象,应用管理对象至少包括应用功能;将应用的功能划分为N个独立的功能模块,各功能模块的跳转关系通过中介模块管理;基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块;将预装功能模块加入应用的预装包,将非预装功能模块配置为在使用时实时下载;其中,各功能模块的跳转关系通过中介模块管理,包括:响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转。该方法能提高应用管理的效率,提升用户体验。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用管理方法、装置、电子设备及存储介质。
背景技术
在客户端的应用或游戏开发中,经常遇到这种情况:许多功能和资源用户用不到或者很少用到,但是却必须都打入安装包,造成安装包比较庞大,进而可能导致用户因为安装包过大而不下载和尝试使用该应用或游戏。相关技术中,可以仅在应用或者游戏的安装包中预装部分功能和资源,其余的功能和资源可以在应用被安装之后以热更新的形式进行更新、附加。
再者,尤其是游戏开发中,窗口的创建和销毁是比较耗性能耗资源的。在游戏中,窗口是指用户所看到的场景,比如:用户的背包是一个窗口,任务是一个窗口,用户正在玩的界面也是一个窗口。很多游戏的窗口中有地图、玩家、灯光、镜头等一系列元素,内容较为复杂。如果频繁的创建、销毁窗口,会影响游戏加载时间和性能。若能对窗口进行假性关闭,即仅隐藏但不销毁窗口,或者隔一段时间才对窗口进行销毁,在这段时间之内,只隐藏而不销毁窗口,则用户再次切换回隐藏的窗口时速度可以很快,且调用资源也较少。
然而,应当将应用中的哪些功能、资源进行预装,哪些窗口进行隐藏,现有技术中都尚无约定。
发明内容
有鉴于此,本申请实施例提供了一种应用管理方法、装置、电子设备及存储介质,以解决现有技术中应用的功能、资源和窗口管理不够灵活的问题。
本申请实施例的第一方面,提供了一种应用管理方法,包括:
确定应用管理对象,应用管理对象至少包括应用功能;
将应用功能划分为N个独立的功能模块,各功能模块的跳转关系通过中介模块管理,N为正整数;
基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块;
将预装功能模块加入应用的预装包,将非预装功能模块配置为在使用时实时下载;
其中,各功能模块的跳转关系通过中介模块管理,包括:
响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转。
本申请实施例的第二方面,提供了一种应用管理装置,包括:
确定模块,被配置为确定应用管理对象,应用管理对象至少包括应用功能;
功能划分模块,被配置为将应用功能划分为N个独立的功能模块,各功能模块的跳转关系通过中介模块管理,N为正整数;
功能划分模块还被配置为基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块;
管理模块,被配置为将预装功能模块加入应用的预装包,将非预装功能模块配置为在使用时实时下载;
其中,各功能模块的跳转关系通过中介模块管理,包括:
响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转。
本申请实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
本申请实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例通过将应用的功能划分为N个独立的功能模块,该N个独立的功能模块的跳转关系通过中介模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑管理,并针对该N个独立的功能模块,基于自服务器获取的埋点数据统计结果,将各功能模块划分为预装功能模块和非预装功能模块,对预装功能模块和非预装功能模块分别采用不同的策略进行管理,相比现有技术中无法将应用的功能划分为多个独立的功能模块,进而导致对功能进行管理时常常出现重复管理、遗漏管理的情况,提供了对应用的功能基于多个独立的功能模块的管理方法,不再会出现重复管理、遗漏管理的情况,提高了对应用功能的管理效率,同时通过合理划分应用的功能模块,能够相应制定合理的应用功能预装策略,优化应用的预装包体积,提升了用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例的应用场景的场景示意图。
图2是本申请实施例提供的一种应用管理方法的流程示意图。
图3(A)是现有技术中的功能模块跳转关系示意图。
图3(B)是本申请实施例提供的基于中介模块的功能模块跳转关系示意图。
图4(A)是现有技术中的功能模块调用关系示意图。
图4(B)是本申请实施例提供的基于中介模块的功能模块调用关系示意图。
图5示出使用埋点工具获取数据的方法的流程示意图。
图6是本申请实施例提供的中介模块管理各功能模块的跳转关系的方法的流程示意图。
图7是本申请实施例提供的基于中介模块实现页面跳转的逻辑示意图。
图8是本申请实施例提供的基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块的方法的流程示意图。
图9是本申请实施例提供的另一种基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块的方法的流程示意图。
图10是本申请实施例提供的另一种应用管理方法的流程示意图。
图11是本申请实施例提供的又一种应用管理方法的流程示意图。
图12是本申请实施例提供的再一种应用管理方法的流程示意图。
图13是本申请实施例提供的预下载策略和实时下载策略的实现方法的流程示意图。
图14是本申请实施例提供的一种预加载实现方法的流程示意图。
图15是本申请实施例提供的另一种预加载实现方法的流程示意图。
图16是本申请实施例提供的另外一种应用管理方法的流程示意图。
图17是本申请实施例提供的一种求k值的方法的示意图。
图18是本申请实施例提供的一种应用管理装置的示意图。
图19是本申请实施例提供的电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面将结合附图详细说明根据本申请实施例的一种应用管理方法和装置。
图1是本申请实施例的应用场景的场景示意图。该应用场景可以包括终端设备1、2和3、服务器4以及网络5。
终端设备1、2和3可以是硬件,也可以是软件。当终端设备1、2和3为硬件时,其可以是具有显示屏且支持与服务器4通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等;当终端设备1、2和3为软件时,其可以安装在如上所述的电子设备中。终端设备1、2和3可以实现为多个软件或软件模块,也可以实现为单个软件或软件模块,本申请实施例对此不作限制。进一步地,终端设备1、2和3上可以安装有各种应用,例如数据处理应用、即时通信工具、社交平台软件、搜索类应用、购物类应用等。
服务器4可以是提供各种服务的服务器,例如,对与其建立通信连接的终端设备发送的请求进行接收的后台服务器,该后台服务器可以对终端设备发送的请求进行接收和分析等处理,并生成处理结果。服务器4可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者还可以是一个云计算服务中心,本申请实施例对此不作限制。
需要说明的是,服务器4可以是硬件,也可以是软件。当服务器4为硬件时,其可以是为终端设备1、2和3提供各种服务的各种电子设备。当服务器4为软件时,其可以是为终端设备1、2和3提供各种服务的多个软件或软件模块,也可以是为终端设备1、2和3提供各种服务的单个软件或软件模块,本申请实施例对此不作限制。
网络5可以是采用同轴电缆、双绞线和光纤连接的有线网络,也可以是无需布线就能实现各种通信设备互联的无线网络,例如,蓝牙(Bluetooth)、近场通信(Near FieldCommunication,NFC)、红外(Infrared)等,本申请实施例对此不作限制。
用户可以通过终端设备1、2和3经由网络5与服务器4建立通信连接,以接收或发送信息等。具体地,用户可以通过终端设备1、2和3从服务器4接收应用的安装包,还可以向服务器4发送应用相关数据。进一步的,用户还可以通过终端设备1、2和3从服务器4接收应用功能、资源和窗口的管理策略,并基于接收到的管理策略对应用功能、资源和窗口分别进行管理。
需要说明的是,终端设备1、2和3、服务器4以及网络5的具体类型、数量和组合可以根据应用场景的实际需求进行调整,本申请实施例对此不作限制。
图2是本申请实施例提供的一种应用管理方法的流程示意图。图2的应用管理方法可以由图1的终端设备或服务器执行。如图2所示,该应用管理方法包括如下步骤:
在步骤S201中,确定应用管理对象。
其中,应用管理对象至少包括应用功能、应用资源和应用窗口。
在步骤S202中,将应用功能划分为N个独立的功能模块。
其中,各功能模块的跳转关系通过中介模块管理,N为正整数。
在步骤S203中,基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块。
在步骤S204中,将预装功能模块加入应用的预装包,将非预装功能模块配置为在使用时实时下载。
其中,各功能模块的跳转关系通过中介模块管理,包括:响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转。
本申请实施例中,应用可以是客户端中的应用,包括游戏、电商应用、控制类应用等。其中,客户端可以是移动终端、车载单元等。应用包括应用功能、应用资源、应用窗口以及其他。本申请实施例的应用管理方法针对应用功能、应用资源、应用窗口分别制定不同的管理策略,以提高应用管理效率。
本申请实施例中,可以首先确定应用管理对象,其中,应用管理对象至少包括应用功能。
应用的各种功能之间通常是彼此关联的,例如一个功能可能需要调用另一个功能才能实现。因此,本申请实施例中,为实现对应用功能的管理,可以将应用的功能划分为N个独立的功能模块。
具体的,在对功能进行划分时,若存在多个功能模块调用一个功能模块的情况,则可以将该一个模块作为一个独立的功能模块进行拆分,以确保模块之间的低耦合。例如:应用中的通用的工具类功能模块可以拆分为单独的功能模块。又如,应用中的用户模块提供的判断登录功能,由于其他功能模块都需要调用该功能,因此该判断登录功能也可以划分为独立的功能模块。
进一步的,在实际开发中,无论是客户端应用开发或客户端游戏开发,对一个功能模块的拆分的粒度是可以灵活确定的。例如:若某些功能模块由多个页面组成,则可以将其划分为一个独立的功能模块。若某些功能模块只是一个功能函数,因为它大量被其他功能模块调用,因此也可以将其划分为一个独立的功能模块。若某些功能模块是一个页面,且该模块使用频率较低,比如设置模块的多语言设置,其也可以划分为独立的功能模块进行管理。
以车载单元中的应用为例,可以将应用粗略划分为以下功能模块:登录模块、社区模块、商城模块、车控模块、用户模块、设置模块、消息模块、汽车中控空中下载(Over-The-Air,OTA)升级模块、整车售卖模块和权益模块。这些功能模块之间的代码保持相对独立,逻辑上没有紧耦合的调用关系。
本申请实施例中,划分后的各功能模块虽然在功能上是彼此独立的,但根据业务需求,各功能模块间仍然存在页面之间的相互跳转。例如,通过点击车控模块首页上的某个按钮(或其他控件),进入登录模块,登录完成后,回到车控模块首页。或者,通过用户模块某页上的某个按钮(或其他控件),进入商城模块的某个页面。以上的跳转会形成一个巨大的复杂的网络,如果直接互相调用,就需要互相引用,破坏了模块之间的独立性,让功能模块分别上线变成不可能的事。
本申请实施例中,可以将各功能模块的跳转关系通过中介模块管理。也就是说,可以创建一个中介模块,该中介模块保存拆分后的各功能模块之间的页面跳转关系,并对这种关系进行管理。采用这种方式,中介模块可以将如图3(A)所示的各功能模块原有的多对多的页面跳转关系,转换成如图3(B)所示的一对多的星型结构。需要说明的是,中介模块是一个抽象概念,内部实现上,可以不止一个,例如:中介模块1专门管理车控模块和OTA升级模块(因为这两个模块之间交往紧密,而其他模块和这两个模块之间关系不那么紧密),或者中介模块2专门管理商城模块及其子模块等等。中介模块之间再形成合理有序的调用关系,还可以通过一个大的中介模块总揽全局,管理其他中介模块。
本申请实施例中,中介模块可以在内部维护一个列表,对外提供注册应用程序接口(Application Programming Interface ,API)。其中,API可以是对外提供的接口,也就是对外提供的功能,供外部调用。每个功能模块都调用中介模块工具的注册API进行注册,中介模块将注册的功能模块加入自己维护的内部列表中。这种加入是动态可调整的,随时可以增、删、拆、合其中某一项或某几项功能模块。例如:目前注册的功能模块包括上文提到的登录模块,社区模块,商城模块,车控模块,用户模块,设置模块,消息模块,OTA升级模块,整车售卖模块,权益模块。若其中权益模块暂时不需要了,服务器可以通知客户端将权益模块删除,则中介模块在收到通知后可以将权益模块的注册项从自己的内部列表中删除。其中,服务器通知到客户端的具体动作取决于服务器和客户端的具体通信方式。例如,如果服务器和客户端之间是用HTTP请求的方式通信,则在客户端请求服务器的任一接口时,服务器通过网关的功能,给客户端返回接口原本数据外,再附加某1个或多个功能模块的增删拆合信息。若服务器和客户端之间是用Socket等长连接等方式通信的,则直接由服务器给客户端发送通知,告诉客户端的中介模块工具进行更新。
中介模块内部维护一个模块之间的调用关系映射表。如图4(A)所示,对于普通的客户端程序来说,调用关系是功能模块A直接调用功能模块B的某个功能。因此,功能模块A会引用或者持有功能模块B,这种关系是紧耦合的,不可动态进行拆分和改动的,如果要拆分和改动,就要涉及到代码的调整。如图4(B)所示,对于加入了中介模块的客户端程序来说,调用关系为功能模块A调用中介模块,中介模块再调用功能模块B的某个功能。中介模块负责对功能模块B进行查找,如果没有就下载,如果有就负责功能模块B的保存、动态更新和调用工作,非常灵活。功能模块A和功能模块B的代码无需进行修改。
例如,若因业务调整,功能模块A不再调用功能模块B,而是改为调用功能模块C,则中介模块可以修改调用关系。又如,因业务调整,功能模块A不再调用功能模块B的x功能,而是调用功能模块B的y功能,则中介模块可以修改调用关系。
功能模块作为一个独立的模块,可以具有自我更新其功能清单的功能,也可以由中介模块进行管理。其中,功能模块自我更新其功能清单可以是:在客户端创建一个通用的“自我更新其功能清单”的功能模块,供其他功能模块调用。该自我更新其功能清单的功能模块至少包括一个自我更新的API,入参为某个需要更新的功能模块,其执行步骤为:更新入参的功能清单;更新入参实际的功能在内存中的存储地址和引用;发送通知,让客户端其他有关联的功能模块更新对入参的功能清单的引用。当其他功能模块需要更新自己的功能清单时(例如收到服务器的更新功能通知),调用步骤功能模块的对应功能,该调用关系可以由中介模块介入; 中介模块收到通知后,更新自己维护的功能清单部分和调用关系。
由中介模块进行管理所有模块的功能清单的更新可以是,中介模块接收服务器对某个或者某几个功能模块的功能清单的更新功能通知;中介模块更新某个或者某几个功能模块的功能清单;中介模块更新某个或者某几个功能模块实际的功能在内存中的存储地址和引用;中介模块更新自身对这个或者这几个功能模块的功能清单的存储和引用。
业务是可能随时发生变动的,随着业务的变动,某些功能模块可能不再使用,某些功能模块新增了,而某些功能模块会被拆分得更细一些,某些功能模块会被合并。这就需要动态更新前面提到的内部数据:页面跳转关系映射表,跳转的数据封装逻辑表,下载+缓存记录表。
其中,页面跳转关系映射表是中介模块内部维护一个关系映射表,该关系映射表并非数据库的表,而是一种关系表,且实际实现中可以包括不止一个表,即可以将该一个关系映射表理解为一类表。
跳转的数据封装逻辑表用于保存页面跳转时的数据封装逻辑或者业务逻辑。例如,页面A和页面B来自于不同的功能模块,页面A需要传递数据给页面B,但页面A和页面B之间的数据格式和类型并不相同,因此需要一些转换策略。可以将转换的策略存在该跳转的数据封装逻辑表中。又如,页面A、页面B和页面C分别来自于不同的功能模块,页面A需要根据当时的上下文情况决定跳转到页面B或页面C,可以将该跳转所需的策略存在该跳转的数据封装逻辑表中。
下载+缓存记录表用于查询功能模块是否存在。具体的,中介模块需要清楚它所管理的功能模块是否存在,如果功能模块不存在,中介模块需要去下载它并加以缓存,因此中介模块还需要维护一个“某模块是否存在、其对应缓存是否过期的记录表”,即下载+缓存记录表。
进一步的,删除功能模块的操作可以包括:删除某功能模块在内存中的实际位置和引用;删除页面跳转关系映射表中“当前所在的功能模块”和“需跳转去的功能模块”为某功能模块的记录;删除跳转的数据封装逻辑表中“当前所在的功能模块”和“需跳转去的功能模块”为某功能模块的记录;删除下载+缓存记录表中,当前所在的功能模块”和“需跳转去的功能模块”为某功能模块的记录;删除功能模块在内存中的实际存储和引用地址。
新增功能模块的操作可以包括:新增页面跳转关系映射表中“当前所在的功能模块”和“需跳转去的功能模块”为某功能模块的记录;新增跳转的数据封装逻辑表中“当前所在的功能模块”和“需跳转去的功能模块”为某功能模块的记录;新增下载+缓存记录表中“当前所在的功能模块”和“需跳转去的功能模块”为某功能模块的记录;当实际跳转或调用发生时,下载某功能模块到内存中,并根据远程获取到的缓存策略,决定是否缓存和缓存的实际动作。
拆分功能模块的具体含义可以是,将一个功能模块拆成了多个。例如:拆分前从功能模块X的页面A可以在第一条件下跳转到功能模块Y的页面B,或者在第二条件下跳转到功能模块Y的页面C。其中,是否满足第一或者第二条件的判断可以由页面A根据业务逻辑和当时的数据条件执行。拆分时,可以将功能模块Y拆分为功能模块Y和Z两个模块,则原来都属于功能模块Y的页面B和页面C,在拆分后页面B可以属于新的功能模块Y,而页面C可以属于新的功能模块Z。拆分完成后,表中记录的是从功能模块X的页面A跳转到功能模块Y的页面B,也可以跳转到功能模块Z的页面C。又如,登录模块由密码登录,验证码登录,忘记密码,重置密码组成。可以把登录模块拆分成4个更小的模块进行管理。
具体的,拆分功能模块的操作可以包括:删除页面跳转关系映射表、跳转的数据封装逻辑表和下载+缓存记录表中,旧功能模块的相关记录;删除功能模块在内存中的实际存储和引用地址,再在页面跳转关系映射表、跳转的数据封装逻辑表和下载+缓存记录表中新增拆分后的多个功能模块的记录;当实际跳转或调用发生时,下载某功能模块到内存中,并根据远程获取到的缓存策略,决定是否缓存和缓存的实际动作。
合并功能模块的操作可以包括:删除页面跳转关系映射表、跳转的数据封装逻辑表和下载+缓存记录表中,几个旧功能模块的相关记录;再在页面跳转关系映射表、跳转的数据封装逻辑表和下载+缓存记录表中新增合并后的新功能模块的记录;当实际跳转或调用发生时,下载该功能模块到内存中,并根据远程获取到的缓存策略,决定是否缓存和缓存的实际动作。
在页面变动时,服务器向客户端发送更新消息,并附带具体的数据,如模块是增/删/拆/合,对应的跳转策略,数据封装策略,缓存策略。
本申请实施例中,可以基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块。
本申请实施例中,由于功能通常由多个类和函数构成,因此各功能模块的使用特征可以通过在应用的逻辑链路的入口和出口处设置的埋点进行采集。其中,埋点数据可以包括:登录用户信息,时间戳,当前点的是哪个功能模块标识+功能标识+页面标识,设备信息,调用者等等。基于埋点服务器可以统计得到某功能模块的某个功能的使用总次数(包括其它功能模块的调用数和用户使用数)、某功能模块的某个功能的使用总人数、某功能模块的某个功能的所有用户使用总次数、人均使用次数、某功能模块的某个功能的用户停留总时长、人均停留时长、地点等信息。
进一步的,由于功能模块由其功能清单组成,因此服务器统计该功能模块的所有功能的入口或出口埋点,可以得到:某功能模块的使用总次数(包括其它功能模块的调用数和用户使用数)、某功能模块的使用总人数、某功能模块的所有用户使用总次数、人均使用次数、某功能模块的停留总时长、人均停留时长。
可以在所有功能模块的每个页面的入口和出口分别埋点。以iOS应用开发为例:重写页面的func viewWillAppear(_ animated: Bool)函数和func viewDidDisappear(_animated: Bool)函数。这2个函数前者是页面入口,后者是页面出口,在其中埋点。服务器经过统计后,就可以得到其页面的某功能模块的某个页面的使用总次数(包括其它功能模块的调用数和用户使用数)、某功能模块的某个页面的使用总人数、某功能模块的某个页面的所有用户使用总次数、人均使用次数、某功能模块的某个页面的停留总时长、人均停留时长。
更进一步的,埋点工具可以自行开发也可以使用市面上流行的三方免费/收费工具。埋点工具通常由以下几个模块组成: 注入模块:在程序中设置标记,获取当时瞬间的信息,如登录用户信息,时间戳,当前点的是哪个功能模块标识+功能标识+页面标识,设备信息,等等。存储模块:将多条埋点数据存储在客户端本地。策略模块:制定上报,存储的对应策略:如客户端存储条数达到多少条后/客户端存储容量达到多大后/客户端时间间隔多久后,将这些数据上报到服务器。又如:是否开启定位权限,是否打印日志等等。上报模块:将数据上报到服务器的工具,一般为超文本传输协议(Hypertext Transfer Protocol,HTTP)请求。其他模块:例如客户端的存储管理工具,客户端的数据合法性校验工具等。
图5示出使用埋点工具获取数据的方法的流程示意图。如图5所示,该方法包括:注入埋点;数据格式校验;存入客户端本地缓存;上报条件判断;上报数据到服务器;清理本地缓存。采用这种方式,可以获取某功能模块的使用总次数(包括其它功能模块的调用数和用户使用数)、某功能模块的使用总人数、某功能模块的所有用户使用总次数、某功能模块的停留总时长、某功能模块(未预装)的下载量、某功能模块的每个功能的使用总次数(包括其它功能模块的调用数和用户使用数)、某功能模块的每个功能的使用总人数、某功能模块的每个功能的所有用户使用总次数、某功能模块的每个功能的用户停留总时长、某功能模块的每个页面的使用总次数(包括其它功能模块的调用数和用户使用数)、某功能模块的每个页面的使用总人数、某功能模块的每个页面的所有用户使用总次数、某功能模块的每个页面的停留总时长、应用的启动时间、应用生命周期结束时的时间、设备信息和定位信息等信息。
本申请实施例中,在获取埋点数据后,可以基于埋点数据将N个独立的功能模块划分为预装功能模块和非预装功能模块。
本申请实施例中,还可以基于使用特征对各功能模块进行分类,得到预装功能模块和非预装功能模块,将预装功能模块加入应用的预装包。其中,对于预装功能模块和非预装功能模块可以采用不同的管理策略,例如将预装功能模块加入应用的预装包,将非预装功能模块配置为在使用时实时下载。
需要说明的是,本申请实施例中的功能模块都是将“业务需求要求的必须预装的那些功能模块”排除在外的其他功能模块。这是因为某些基础功能模块是客户端应用程序能运行起来的必须模块,如:首页模块,这种必然需要进行预装。本申请实施例中,资源可以是客户端用到的图片、颜色、文件等。1.资源不能被拆分或整合。资源可以选择性的预加载入内存,且资源的埋点仅获取使用次数数据,不获取持续时长数据。其中,可以在资源使用的地方进行埋点,使用一次就埋点一次,此时记录的数据包括登录用户信息、时间戳、当前下载资源信息(包括资源标识,资源类型等)、设备信息、调用者等。还可以在资源下载时进行埋点,此时记录的数据包括登录用户信息、时间戳、当前下载资源信息(包括资源标识,资源类型等)、设备信息、调用者等。
本申请实施例中,各功能模块的跳转关系通过中介模块管理,包括:响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转。
根据本申请实施例提供的技术方案,通过将应用的功能划分为N个独立的功能模块,该N个独立的功能模块的跳转关系通过中介模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑管理,并针对该N个独立的功能模块,基于自服务器获取的埋点数据统计结果,将各功能模块划分为预装功能模块和非预装功能模块,对预装功能模块和非预装功能模块分别采用不同的策略进行管理,相比现有技术中无法将应用的功能划分为多个独立的功能模块,进而导致对功能进行管理时常常出现重复管理、遗漏管理的情况,提供了对应用的功能基于多个独立的功能模块的管理方法,不再会出现重复管理、遗漏管理的情况,提高了对应用功能的管理效率,同时通过合理划分应用的功能模块,能够相应制定合理的应用功能预装策略,优化应用的预装包体积,提升了用户体验。
图6是本申请实施例提供的中介模块管理各功能模块的跳转关系的方法的流程示意图,如图6所示,该方法包括如下步骤:
在步骤S601中,中介管理模块接收应用发送的页面跳转请求,页面跳转请求至少包括跳转前的第一页面和跳转后的第二页面。
在步骤S602中,响应于第二页面包括唯一页面,且第一页面与第二页面具有相同的数据格式和数据类型,中介管理模块基于页面跳转关系映射表将应用的页面自第一页面转换至第二页面。
在步骤S603中,响应于第二页面包括唯一页面,且第一页面与第二页面具有不同的数据格式和数据类型,中介管理模块使用页面跳转数据封装逻辑将第一页面需要传输至第二页面的数据进行封装,并基于页面跳转关系映射表将应用的页面自第一页面转换至第二页面。
在步骤S604中,响应于第二页面包括多个页面,中介管理模块使用页面跳转业务逻辑自第二页面中确定第三页面为跳转后的页面,基于页面跳转关系映射表和/或页面跳转数据封装逻辑将应用的页面自第一页面转换至第三页面。
本申请实施例中,在中介管理模块中存储有各功能模块的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑。进一步的,中介管理模块可以接收所述应用发送的页面跳转请求,页面跳转请求至少包括跳转前的第一页面和跳转后的第二页面。其中,第二页面可以包括一个或多个页面。当第二页面包括唯一页面,且第一页面与第二页面具有相同的数据格式和数据类型时,中介管理模块可以基于页面跳转关系映射表将应用的页面自第一页面转换至第二页面。当第二页面包括唯一页面,且第一页面与第二页面具有不同的数据格式和数据类型时,中介管理模块可以使用页面跳转数据封装逻辑将第一页面需要传输至第二页面的数据进行封装,并基于页面跳转关系映射表将应用的页面自第一页面转换至第二页面。当第二页面包括多个页面时,中介管理模块可以使用页面跳转业务逻辑自第二页面中确定第三页面为跳转后的页面,基于页面跳转关系映射表和/或页面跳转数据封装逻辑将应用的页面自第一页面转换至第三页面。
具体的,功能模块之间除了页面跳转关系,还有不涉及页面的、功能之间的互相调用的关系。为此,每个功能模块需对外提供一份功能清单(功能清单就是一套API,对于某些语言来说,就是其头文件中的公开函数;对于另一些项目管理方式,如cocoapods或者framework,则是其专门提供出来的头文件清单)。中介模块负责保存并管理所有功能模块的功能清单,实现功能模块之间的互相调用,并可以动态调整这种调用关系。
中介模块对外提供跳转API,该跳转API的入参可以是:参数1:当前所在的功能模块,即:哪个功能模块想要跳转;参数2:当前所在的页面,即:哪个功能模块的某个页面;参数3: 当前触发的控件 ,即:页面上的哪个按钮或哪个区域;参数4:其他细节,如携带的数据。
每个功能模块在需要跳转到另一个功能模块的某个页面时,都需要调用中介模块的跳转API,中介模块根据入参,查询跳转关系映射表,得到实际要跳转的功能模块和页面。如果该功能模块并未在客户端存在,则请求服务器下载功能模块,并根据策略(是否需要缓存,或是否已超过缓存时间),可选的对其进行缓存,然后执行跳转动作,查询跳转的数据封装逻辑表,封装对应的数据逻辑,跳转到对应的功能模块和页面。
本申请实施例中,中介管理模块还包括各功能模块的信息表,信息表至少包括各功能模块是否存在记录和各功能模块对应的缓存是否过期记录。中介管理模块在接收到页面跳转请求后,基于信息表中的记录确定第二页面或者第三页面所属目标功能模块是否存在,和/或缓存是否过期。响应于目标功能模块存在且未过期,根据页面跳转请求实现页面转换。响应于目标功能模块不存在和/或目标功能模块的缓存已过期,下载目标功能模块,根据页面跳转请求实现页面转换。
图7是本申请实施例提供的基于中介模块实现页面跳转的逻辑示意图。如图7所示,该方法包括:查询跳转关系映射表;得到将要跳转的功能模块和页面;判断功能模块是否存在,若存在则查询跳转的数据封装逻辑表,若不存在则下载功能模块;判断下载的功能模块是否需要缓存,若是则缓存功能模块,若否则判断是否已达到预设的缓存时间,若是则缓存功能模块,若否则查询跳转的数据封装逻辑表;然后封装对应的数据逻辑,实现跳转。
采用本申请实施例的技术方案,通过中介模块管理各功能模块的跳转关系,能够实现各功能模块的解耦,提高管理效率,提升用户体验。
本申请实施例中,埋点数据统计结果至少包括各功能模块的使用特征。其中,使用特征包括以下中的至少一项:功能模块的使用总次数、功能模块的使用总人数、功能模块的所有用户使用总次数、功能模块的人均使用次数、功能模块的停留总时长、功能模块的人均停留时长、功能模块的下载量。
本申请实施例中,可以通过使用特征的绝对统计值将N个独立的功能模块划分为预装功能模块和非预装功能模块。具体的,可以将使用特征中的一项或者多项大于或者等于第一预设功能阈值的功能模块设置为预装功能模块,并将使用特征中的一项或者多项小于第一预设功能阈值的功能模块设置为非预装功能模块。其中,第一预设功能阈值为单一阈值,或者为阈值集合。可以理解的是,当基于使用特征中的一项特征进行判断时,第一预设功能阈值可以为单一阈值;当基于使用特征中的多项特征同时判断时,第一预设功能阈值可以为阈值集合,其中包括多个阈值,每一阈值对应该多项特征中的一项特征。
本申请实施例中,可以将用户使用量大并重要的功能进行预装,其他不常用的功能不预装,到需要用的时候再去下载安装,并根据服务器的策略进行缓存。鉴于此,可以将使用特征中的一项或者多项大于或者等于第一预设功能阈值的功能模块,加入应用的预装包。
具体的,可以对于所有功能模块,按用户使用总次数进行从大到小的排序(认为有人使用的次数多的功能模块重要),根据业务要求或运营情况,设置一个阈值,例如:50次。然后,将大于该阈值的功能模块视为用户使用量大的功能模块,标记为预装,打包进客户端的预装包,并将小于该阈值的功能模块视为用户使用量大的功能模块,标记为不预装,而是在客户端发起请求时再采用实时下载和缓存的策略。
还可以对于所有功能模块,按所有用户使用总人数进行从大到小的排序(认为使用的人数多的功能模块重要),根据业务要求或运营情况,设置一个阈值,例如:500人。然后,将大于该阈值的功能模块视为用户使用量大的功能模块,标记为预装,打包进客户端的预装包,并将小于该阈值的功能模块视为用户使用量大的功能模块,标记为不预装,而是在客户端发起请求时再采用实时下载和缓存的策略。
还可以对于所有功能模块,按用户人均使用次数进行从大到小的排序,根据业务要求或运营情况,设置一个阈值,例如:10次。然后,将大于该阈值的功能模块视为用户使用量大的功能模块,标记为预装,打包进客户端的预装包,并将小于该阈值的功能模块视为用户使用量大的功能模块,标记为不预装,而是在客户端发起请求时再采用实时下载和缓存的策略。
还可以对于所有功能模块,按用户停留总时长进行从大到小的排序(认为使用的时间长的功能模块重要),根据业务要求或运营情况,设置一个阈值,该阈值可以是绝对时间,例如1小时,也可以是从应用打开到应用生命周期结束的这段时间内,该功能模块所占的时间百分比,用百分比进行排序和设置阈值。然后,将大于该阈值的功能模块视为用户使用量大的功能模块,标记为预装,打包进客户端的预装包,并将小于该阈值的功能模块视为用户使用量大的功能模块,标记为不预装,而是在客户端发起请求时再采用实时下载和缓存的策略。
上述实现方式以用户为中心去划分的,其侧重点也各自不同,还要考虑到非用户的情况,即:其他功能模块调用某个功能模块的情况。因此,还可以对于所有功能模块,按使用总次数进行从大到小的排序(认为被调用次数多的功能模块重要),使用总次数包括其它功能模块的调用数和用户使用数,根据业务要求或运营情况,设置一个阈值,例如:100次。然后,将大于该阈值的功能模块视为重要的功能模块,标记为预装,打包进客户端的预装包,并将小于该阈值的功能模块视为重要的功能模块,标记为不预装,而是在客户端发起请求时再采用实时下载和缓存的策略。
本申请实施例中,还可以基于功能模块的历史使用特征与分类值,在功能模块具有新增使用特征时对功能模块进行分类。此时,可以基于使用特征使用K最邻近算法对各功能模块进行分类。
图8是本申请实施例提供的基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块的方法的流程示意图。如图8所示,该方法包括如下步骤:
在步骤S801中,获取各功能模块的历史使用特征和分类值。
其中,分类值包括预装和非预装。
在步骤S802中,定时获取功能模块中第一功能模块的新增使用特征,第一功能模块为功能模块中的任一功能模块。
在步骤S803中,计算新增使用特征与历史使用特征之间的距离,得到与新增使用特征距离最近的K个历史功能模块。
其中,K为正整数。
在步骤S804中,计算K个历史功能模块的分类值占比。
其中,分类值占比为分类值为预装的历史功能模块数与分类值为非预装的历史功能模块数的比值。
在步骤S805中,响应于分类值占比大于1,确定第一功能模块为预装功能模块。
在步骤S806中,响应于分类值占比小于1,确定第一功能模块为预装功能模块。
本申请实施例中, 由于功能模块的特征入参较多(使用总次数,使用总人数,用户使用总次数,人均使用次数,停留总时长,人均停留时长,每次应用启动时某个功能模块的使用率 (即每个客户端程序的生命周期内,这个功能模块是否被使用,如果每次客户端程序运行中,该功能模块都被使用大于等于1次,使用率就是100%),地域等等),而实际所求的结果为:分类,且只分为两类:预装,非预装。这是一个典型的分类问题,因此可以用分类算法来求得结果。具体的,可以使用K最邻近算法对各功能模块进行分类。
其中,基于使用特征使用K最邻近算法对各功能模块进行分类可以是,统计客户端过去一段时间内的运行数据样本,如表1所示:
表1运行数据样本
可以统计现有样本的值,将其归纳在表中(已知分类结果)并做常规的归一化处理。然后针对每个功能模块,每日(或者隔几日,其中间隔时间根据业务情况确定)进行一次统计,将新增的这条功能模块的特征值与表中样本的值进行距离计算,求出和其最近的n(n为正整数,n可以根据业务要求或运营情况进行确认的)个样本。其中,设新增功能模块对应数据点A,与该新增功能模块距离最近的n个样本中,任意一个样本数据点B,则数据点A和B的距离可以通过绝对距离公式计算得到,其中,a11、a12、……、a1m为数据点A即新增功能模块的m个特征值,a21、a22、……、a2m为数据点B即上述n个样本中任意一个样本的m个特征值,m为正整数,由功能模块的特征值个数确定,在表1所示实施例中,m=8。例如,若表1中的功能模块-商城为新增功能模块,则a11、a12、……、a1m可以是表1中的功能模块-商城对应的以下m个特征值:使用总次数3000、使用总人数4650、用户使用总次数500000、人均使用次数7000、停留总时长200000、人均停留时长3030、应用启动时某个功能的使用率60%和地域(中国)。同时,a21、a22、……、a2m可以是表1中的功能模块-用户数据对应的以下m个特征值:使用总次数40000、使用总人数5000、用户使用总次数200000、人均使用次数3000、停留总时长100000、人均停留时长1000、应用启动时某个功能的使用率100%和地域(中国,欧洲国家),或者功能模块-登录对应的以下m个特征值:使用总次数10000、使用总人数4550、用户使用总次数100000、人均使用次数2000、停留总时长30000、人均停留时长2220、应用启动时某个功能的使用率30%和地域(中国,欧洲国家)。需要说明的是,可以首先上述特征值进行归一化处理,转换为[-1,1]区间内的数值,然后使用上述绝对距离计算公式计算新增功能模块与n个样本中每个样本的距离。
另一方面,数据点A和B的距离还可以通过余弦相似度公式计算得到,其中,/>为新增功能模块与和其最近的n个样本中任一样本即数据点A和B之间的余弦相似度,xi为数据点A即新增功能模块的m个特征值,yi为数据点B即上述n个样本中任一样本的m个特征值。例如,若表1中的功能模块-商城为新增功能模块,则xi(i=1,……,m)可以是表1中的功能模块-商城对应的以下m个特征值:使用总次数3000、使用总人数4650、用户使用总次数500000、人均使用次数7000、停留总时长200000、人均停留时长3030、应用启动时某个功能的使用率60%和地域(中国)。同时,yi(i=1,……,m)可以是表1中的功能模块-用户数据对应的以下m个特征值:使用总次数40000、使用总人数5000、用户使用总次数200000、人均使用次数3000、停留总时长100000、人均停留时长1000、应用启动时某个功能的使用率100%和地域(中国,欧洲国家),或者功能模块-登录对应的以下m个特征值:使用总次数10000、使用总人数4550、用户使用总次数100000、人均使用次数2000、停留总时长30000、人均停留时长2220、应用启动时某个功能的使用率30%和地域(中国,欧洲国家)。需要说明的是,计算余弦相似度时,仍然可以首先对上述特征值进行归一化处理,然后再代入公式计算。最后计算这n个样本的结果(即分类)的平均值,将得到的类别作为本次这个模块所在的分类。
需要说明的是,这里的特征值是多种多样的,可以根据运营效果继续增加/减少,以达到最好的效果,例如:当前增加了地域一项,这样可以根据地区来划分,在不同的地域下,预装入包的功能模块是不一样的。如果加入时间段一项,那么,在不同的时间段下(比如电商应用的促销季和非促销季),预装入包的能模块也是不一样的。
本申请实施例中,还可以使用回归算法对分类结果进行调整。
图9是本申请实施例提供的另一种基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块的方法的流程示意图。如图9所示,该方法包括如下步骤:
在步骤S901中,以使用特征中的多个使用特征分别作为统计维度,对各功能模块进行统计排序,得到多个统计排序结果。
在步骤S902中,将每个统计排序结果的前L个排序结果中都包含的功能模块确定为预装功能模块,其他功能模块确定为非预装功能模块。
其中,L为正整数。
在步骤S903中,以预设频率统计预装功能模块中的使用特征,响应于使用特征中的至少一个使用特征小于第二预设功能阈值,将预装功能模块调整为非预装功能模块。
在步骤S904中,以预设频率统计非预装功能模块中的使用特征,响应于使用特征中的至少一个使用特征大于或者等于第三预设功能阈值,将非预装功能模块调整为预装功能模块。
其中,第二预设功能阈值和第三预设功能阈值为单一阈值,或者为阈值集合。
本申请实施例中,可以对使用特征的绝对统计值将N个独立的功能模块划分为预装功能模块和非预装功能模块的分类方法,使用回归算法对分类结果进行调整。首先可以以使用特征中的多个使用特征分别作为统计维度,对各功能模块进行统计排序,得到多个统计排序结果。然后将每个统计排序结果的前L个排序结果中都包含的功能模块确定为预装功能模块,其他功能模块确定为非预装功能模块。针对预装功能模块,可以以预设频率统计预装功能模块中的使用特征,响应于使用特征中的至少一个使用特征小于第二预设功能阈值,将预装功能模块调整为非预装功能模块。针对非预装功能模块,可以以预设频率统计非预装功能模块中的使用特征,响应于使用特征中的至少一个使用特征大于或者等于第三预设功能阈值,将非预装功能模块调整为预装功能模块。
具体的,由于上文列举了五种对功能模块数据进行统计方法,这五种方法因为侧重点各自不同,统计出来的功能模块有交集,也有其外的部分。可以使用回归算法对各功能模块进行分类,以使用特征中的多个使用特征分别作为统计维度,对各功能模块进行统计排序,得到多个统计排序结果;将每个统计排序结果的前L个排序结果中都包含的功能模块确定为预装功能模块,其他功能模块确定为非预装功能模块。即将统计出来的交集的部分归纳进预装,其外的部分暂时归纳进非预装。进一步的,还可以采用该方式对功能模块进行管理后,根据客户端一段时间的运行情况后,得到持续反馈,动态调整该算法,使其更加完善科学。
进一步的,可以继续跟踪非预装的功能模块,如果其下载次数(下载量可以约等于使用次数)超过预期阈值,则将其动态归入预装中,在客户端下个版本迭代的时候,将这些模块加入预装包。还可以继续跟踪预装的功能模块,如果其使用次数降低,使得其从交集中出来了,则将其动态归入非预装中,在客户端下个版本迭代的时候,将这些模块从预装包里面排除。举例而言,对于一个电商应用来说,在活动季该电商应用的活动功能模块使用率非常高,但是在平时该功能模块的使用量没有那么高,所以在平时,这个能模块从预装包中移除,在活动季需放入预装包中,这可以使用上文提及的回归方法动态调整实现。
此外,还存在一些极端情况。例如:一个小型闹钟,整个包的大小才4M,几乎引不起用户的注意。则可以在预装包体积满足需求的情况下,在预装包中预装所有功能模块,在后期经过埋点统计,调整功能模块,对其进行增、删、拆、合。又如一个炒股的包/游戏的包,大小已经140M,用户很难不关注。因此可以在预装包体积不满足需求的情况下,在预装包中只安装几个核心模块,在后期经过埋点统计,调整功能模块,对其进行增、删、拆、合。
本申请实施例中,还可以采用回归算法对基于使用特征使用K最邻近算法对各功能模块进行分类的方法的分类结果进行调整。具体的,首先可以利用基于使用特征的绝对统计值对各功能模块进行分类的方法确定某一个或多个特定功能模块的第一分类值,该第一分类值可以是预装或者非预装;同时还可以利用基于使用特征使用K最邻近算法对各功能模块进行分类的方法该一个或多个特定功能模块的第二分类值,该第二分类值可以是预装或者非预装。当第一分类值与所述第二分类值不同时,更新基于使用特征使用K最邻近算法对各功能模块进行分类的方法中,各功能模块的历史使用特征和分类值,重新确定所述特定功能模块的第二分类值,直至所述第一分类值与所述第二分类值相同。
本申请实施例中,非预装各功能模块可以在使用时下载。非预装的功能模块一旦下载,并非就永驻客户端,而是需要一个缓存策略,根据缓存策略进行删除缓存。缓存策略可以由服务器制定。包括是否需要缓存,如果需要缓存,根据服务器制定时间阈值决定是否删除该功能模块在客户端的缓存,即是否在一定时间后,删除该功能模块在客户端的缓存。或者如果需要缓存,根据使用频率决定是否删除该功能模块在客户端的缓存,即若一定时间内使用次数达不到阈值,则在时间达到后,删除该功能模块在客户端的缓存。
针对一个非预装的功能模块,服务器可以统计其使用总次数,使用总人数,用户使用总次数,人均使用次数,停留总时长,人均停留时长,App启动时某个功能的使用率,等等。需要注意的是,由于不同性质的客户端程序,它的侧重点不一样,不能一概而论,所以不同的客户端程序可能选择的项目是不一样的。随后可以设置一个第一阈值1,小于该第一阈值1的判定为极少使用的功能,可以设置为对其不做缓存,以便节省用户存储空间。为了便于叙述,可以将前述第一预设功能阈值记为阈值2,当一个功能模块的对应参数处于阈值1和阈值2之间时,这个功能模块可以设置缓存,进一步设置其缓存的存在时长策略。当一个功能模块的对应参数小于阈值1时,可以认为其极少使用,不对其进行预装且不做缓存。当一个功能模块的对应参数大于阈值2时,可以认为其使用量大或者非常重要,对其进行预装。
进一步的,可以将处于缓存阈值区间的功能模块,统计每个功能模块的平均停留总时长,作为其缓存时长。其中,有的功能模块不存在停留时长这一说,例如:用户判断是否登录的功能模块,则以其单位时间内被使用的总次数作为缓存清除的依据。
客户端处理缓存策略有两种实现方法:一种是基于定时器实现,具体为当缓存功能模块后,立刻单开启一个线程,在线程中,开启一个定时器,每秒进入定时器处理函数,判断当前时间增量是否达到了缓存规定的时长,如果达到,删除缓存,如果没达到,什么也不做。另一种是使用时判断,当缓存功能模块后,记录存储时的时间戳。在每次使用缓存功能模块时,读取缓存上次记录的时间戳,和当前时间做对比,如果时间差大于缓存规定的时长,就删除缓存,重新下载,如果小于,则直接读取缓存内容。
采用本申请实施例的技术方案,可以对应用的功能模块的分类值进行动态调整,在业务、场景等发生变化时能够及时调整各功能模块的分类值,以使业务、场景等变化后用户常用的或者安装包体积增大的功能模块的分类值能够被及时调整为预装,而用户不再经常使用或者安装包体积减少的功能模块的分类值能够被及时调整为非预装,进一步提升了用户体验。
本申请实施例中,对应用功能的管理策略还可以随着业务发展和统计数据的变化自动更新。具体的,一个大的功能模块由功能组成,某些功能可能使用率非常高,另一些则使用率极低。
由服务器对埋点数据中关于某功能模块的某个功能的相关数据统计分析得知:针对某个功能的使用次数,服务器设置阈值,将大的功能模块拆成2个或多个新的功能模块,将使用次数更少的功能模块在原有的划分区域中进一步降级。例如,若原来的设置功能模块为预装的功能模块,则新拆分的方框2部分的子功能模块落在非预装中,再根据其他特征值设置缓存策略。若原来的设置功能模块为非预装和缓存的功能模块,则新拆分的方框2部分的子功能模块仍然落在非预装中,并将缓存策略进一步降级,如缩短其时间或不做缓存。
图10是本申请实施例提供的另一种应用管理方法的流程示意图。图10所示实施例中的步骤S1001至步骤S1005与图2所示实施例中的步骤S201至步骤S205基本相同,此处不再赘述。如图10所示,该方法还包括如下步骤:
在步骤S1006中,响应于确定第二功能模块满足拆分条件,对第二功能模块进行拆分。
其中,拆分条件包括第二功能模块中至少存在一个使用特征小于第四预设功能阈值的子功能模块,第四预设功能阈值小于或者等于第一预设功能阈值。
在步骤S1007中,响应于第二功能模块为预装功能模块,将子功能模块配置为非预装功能模块。
在步骤S1008中,响应于第二功能模块为具有第一缓存策略的非预装功能模块,将子功能模块配置为具有第二缓存策略的非预装功能模块。
其中,第一缓存策略的存储时长大于第二缓存策略的存储时长,或者第一缓存策略的存储时长大于0且第二缓存策略的存储时长等于0。
本申请实施例中,当确定第二功能模块中至少存在一个使用特征小于第四预设功能阈值的子功能模块时,可以对第二功能模块进行拆分。其中,第四预设功能阈值小于或者等于第一预设功能阈值。此时若第二功能模块为预装功能模块,可以将子功能模块配置为非预装功能模块,例如可以将子功能模块配置为预下载,或者配置为实时下载。若第二功能模块为具有第一缓存策略的非预装功能模块,将子功能模块配置为具有第二缓存策略的非预装功能模块。其中,第一缓存策略的存储时长大于第二缓存策略的存储时长,或者第一缓存策略的存储时长大于0且第二缓存策略的存储时长等于0,也就是第二缓存策略为不缓存。
本申请实施例中,还可以对功能模块进行合并。图11是本申请实施例提供的又一种应用管理方法的流程示意图。图11所示实施例中的步骤S1101至步骤S1105与图2所示实施例中的步骤S201至步骤S205基本相同,此处不再赘述。如图11所示,该方法还包括如下步骤:
在步骤S1106中,响应于确定多个第三功能模块满足合并条件,对多个第三功能模块进行合并,得到第四功能模块。
其中,合并条件包括多个第三功能模块的业务进行了合并。
在步骤S1107中,响应于多个第三功能模块均为预装功能模块,确定第四功能模块为预装功能模块。
在步骤S1108中,响应于多个第三功能模块均为非预装功能模块,确定第四功能模块为非预装功能模块。
在步骤S1109中,响应于多个第三功能模块中部分功能模块为预装功能模块,其余功能模块为非预装功能模块,在确定第四功能模块的预装包大小满足预设体积要求时,确定第四功能模块为预装功能模块,否则确定第四功能模块为非预装功能模块。
本申请实施例中,当确定多个第三功能模块的业务进行了合并时,可以对多个第三功能模块进行合并,得到第四功能模块。此时,若多个第三功能模块均为预装功能模块,可以确定第四功能模块为预装功能模块;若多个第三功能模块均为非预装功能模块,可以确定第四功能模块为非预装功能模块;若多个第三功能模块中部分功能模块为预装功能模块,其余功能模块为非预装功能模块,在确定第四功能模块的预装包大小满足预设体积要求时,可以确定第四功能模块为预装功能模块,否则确定第四功能模块为非预装功能模块。
也就是说,本申请实施例中,两个或多个功能模块因为业务调整合并后,其预装和缓存的策略应根据客户端具体应用场景予以调整,一般情况下,应满足优先级高的,因为核心功能不该被降级。其中,优先级自高到低包括:预装>非预装>非预装和缓存且缓存时间更长>非预装和做缓存且缓存时间短>非预装和不做缓存。
举例而言,若2个功能模块以前都是预装的,新的功能模块可以继续预装。若2个功能模块以前都是非预装的,缓存策略一致,新的功能模块可以继续保持这种缓存策略。若2个功能模块以前一个非预装一个预装,如果2个功能模块预装后,客户端包体积并未超过所规定的限制(例如50M),则通常情况下满足优先级高的为准,即对新的功能模块预装。若2个功能模块以前都是非预装的,缓存策略不一致,则满足优先级高的为准,即新的功能模块预装并使用之前优先级最高的策略。
本申请实施例中,应用管理对象还可以包括应用资源。对应用资源可以采用与应用功能不同的策略进行管理。
图12是本申请实施例提供的再一种应用管理方法的流程示意图。图12所示实施例中的步骤S1201至步骤S1205与图2所示实施例中的步骤S201至步骤S205基本相同,此处不再赘述。如图12所示,该方法还包括如下步骤:
在步骤S1206中,确定应用资源的资源使用量和资源体积。
在步骤S1207中,响应于确定应用资源的资源使用量大于或者等于第一资源阈值,且应用资源的资源体积大于或者等于第一资源体积阈值,将应用资源在应用中进行预装。
在步骤S1208中,响应于确定应用资源的资源使用量小于第一资源阈值且大于或者等于第二资源阈值,并且应用资源的资源体积小于第一资源体积阈值且大于或者等于第二资源体积阈值,将应用资源配置为在应用中不进行预装,且进行预下载。
在步骤S1209中,响应于确定应用资源的资源使用量小于第二资源阈值,且应用资源的资源体积小于第二资源体积阈值,将应用资源配置为在应用中不进行预装和预下载,且在使用时进行实时下载。
其中,第一资源阈值大于第二资源阈值,第一资源体积阈值大于第二资源体积阈值。
本申请实施例中,可以首先确定资源的资源使用量和资源体积。当资源的资源使用量大于或者等于第一资源阈值,且资源的资源体积大于或者等于第一资源体积阈值时,可以将资源在应用中进行预装。即将资源使用量较大或资源体积较大的资源进行预装。
当资源的资源使用量小于第一资源阈值且大于或者等于第二资源阈值,并且资源的资源体积小于第一资源体积阈值且大于或者等于第二资源体积阈值时,可以将资源配置为在应用中不进行预装,且进行预下载。即将资源使用量适中或资源体积适中的资源采用不预装+预下载的策略进行管理。
当资源的资源使用量小于第二资源阈值,且资源的资源体积小于第二资源体积阈值时,将资源配置为在应用中不进行预装和预下载,且在使用时进行实时下载。即将资源使用量较小或资源体积较小的资源采用不预装+实时下载的策略进行管理。
也就是说,对应用资源的管理策略可以包括预装、非预装且预下载以及非预装且实时下载。其中,使用量大+体积大的资源可以优先被预装,使用量较大+体积大的资源可以优先被预下载,使用量小+体积小的资源可以实时下载。各策略的优先级由高至低可以是:预装>非预装且预下载>非预装且实时下载。需要说明的是,第二管理策略所处理的资源都是将“业务需求要求的必须预装的那些资源”排除在外的其他资源。这和前面的功能模块的解释是一样的,比如游戏的开机界面,是必须预装的资源。
制定预装策略的依据为:在一次客户端程序生命周期内,100%会被用到的资源。根据客户端上报上的埋点数据,对于一个资源,服务器可以清晰的统计出:在一次客户端程序的生命周期内,资源被使用的次数,>=1 就标记为已使用。统计所有用户的客户端程序生命周期次数中,资源被使用所占百分比。客户端程序应设置一个预装包的大小阈值,如100M(这个阈值可以根据运营情况得出)。在阈值范围内,资源使用占比100%的资源都应是预装的。如果资源使用占比100%的资源合集使得客户端程序包大于阈值,首先调整阈值,当阈值不可调整时,对资源先按照体积从大到小排序(这是因为资源如果体积过大,下载速度必然很慢,这是客户所不能接受的),然后再分别***预装包,直到预装包达到阈值为止,将剩余没能预装的资源分区优先级较低的策略中。
制定非预装且预下载策略的依据为:设置一个阈值,如50%,将非预装的资源使用占比>=50%的资源标记为预下载。按照体积从大到小排序,设置预下载队列优先级。在客户端应用程序开始被启动时,开启线程,从服务器获取预下载资源队列名单,然后依次下载这些资源。如果在下载过程中,一个资源被用到,但是还没有被下载,主线程下载完成后,需在线程的队列中删除它。
制定非预装且实时下载策略的依据为:实时下载的资源一般在被调用时才去下载,可以开启线程异步下载,由于这类资源比较小,所以也可以在主线程上同步下载。对资源进行预下载的方法为:按照资源体积由大到小的顺序生成下载资源队列;基于下载资源队列对资源进行预下载;响应于应用开始使用第一资源且第一资源尚未执行下载操作,并且应用已经完成第一资源的下载,将第一资源从下载资源队列中删除。
其中,该预下载策略和实时下载策略的实现方法可以如图13所示,包括:客户端应用程序启动;开启线程;从服务器获取预下载名单;遍历队列;依次下载到客户端硬盘。当用户翻到了某页时,确定需要某资源,则主线程立即下载某资源,同时删除队列中的某资源。
通常情况下,应用能够进行预装的资源体积是有限的,当确定的进行预装的应用资源的资源体积大于该预设上限时,需要对应用资源的预装策略进行调整。
本申请实施例中,响应于确定资源的资源体积大于或者等于第三资源体积阈值,增加第三资源体积阈值,其中,第三资源体积阈值为应用能够预装的最大资源体积。一示例中,若应用能够预装的最大资源体积为100M,而资源体积为200M,此时可以增加该应用能够预装的最大资源体积即第三资源体积阈值,使其大于或者等于资源体积。
另一方面,响应于确定资源的资源体积大于或者等于第三资源体积阈值,将资源按照资源体积由大到小的顺序在应用中进行预装,直至达到第三资源体积阈值;将尚未进行预装的剩余资源进行预下载。仍然以上述应用能够预装的最大资源体积为100M,而资源体积为200M为例,此时可以将该200M资源中包含的各资源按照体积由大到小的顺序在应用中进行预装,直至达到100M。对剩余的100M资源,可以配置为预下载。进一步的,对应用资源进行管理的策略还可以包括预加载策略。预加载策略的实现方式可以是: 响应于应用启动,自服务器获取预制定的加载名单;判断加载名单中的资源是否已进行预装或者下载;响应于确定加载名单中的第二资源未进行预装或者下载,下载第二资源,并使用预先配置的全局单例对象将第二资源自加载名单中删除;或者响应于确定加载名单中的第二资源未进行预装或者下载,将第二资源标记为需加载;应用所在的客户端在下载第二资源后,读取标记,将第二资源加载至内存。
预加载和上述三个策略之间没有必然联系,因为不管是预装的,还是非预装的资源,都在客户端的硬盘上的,如果客户端程序需要使用,就需要把资源从硬盘预加载到内存中,这样程序才能使用到这个资源。所以,预装的资源可能没有预加载,实时下载的资源反而可能预加载了。能被预加载的资源不一定是很重要的资源,但一定体积较大,因为用户不能接受过长的等待时间。
在客户端,从硬盘加载到内存中的时间不是很长,一般情况下客户无明显感知,当然,体积特别大的资源除外,如游戏中的世界地图包。所以,预加载的资源,主要参考资源的体积和在一次应用的生命周期中的重复使用次数。其中,可以根据多个机型的实测结果,得出一个阈值,超过这个体积的,会让用户有明显感知,这种体积阈值以上的资源就一定要预加载。同时,资源使用次数越多,越应该预加载。
预加载的实现步骤包括:在App启动之初,开启一个线程,请求服务器预制定的加载名单,对名单上的资源进行预加载,在加载过程中,判断该资源是否真实存在于客户端的硬盘上,因为这个资源可能是预装的,那就一定存在;资源也可能不是预装而是预下载或实时下载的,此时可以将这种暂时不存在硬盘的资源加入待加载名单中,用一个全局单例对象进行管理,每当客户端新下载好一个资源后,客户端发送通知,通知全局单例对象处理名单,将名单中的这个资源预加载到内存中,再将资源从名单中删除。或者,将这种暂时不存在硬盘的资源打一个标记,标记为需加载到内存,每当客户端新下载好一个资源后,客户端程序读取这个资源的标记,如果是需加载到内存,就加载,否则就什么也不做。
图14示出预加载的一种实现方式,包括:客户端应用程序启动;开启线程;从服务器获取预下载名单;遍历队列;判断硬盘上是否存在,若是则加载到内存,若否则加入待加载名单。当用户翻到了某页时,确定需要某资源,则主线程立即下载某资源,同时发送通知,服务器在收到通知后将资源加载到内存。
图15示出预加载的另一种实现方式,包括:客户端应用程序启动;开启线程;从服务器获取预下载名单;遍历队列;判断硬盘上是否存在,若是则加载到内存,若否则对资源标记需加载到内存。当用户翻到了某页时,确定需要某资源,则主线程立即下载某资源,同时判断是否需要加载到内存;若接收到服务器的资源标记为需加载到内存,则将该资源加载到内存。
采用本申请实施例的技术方案,通过对应用的资源进行合理划分,并将划分后的资源分别配置不同的管理策略,包括预装、非预装且预下载、非预装且实时下载以及预加载,能够提高资源管理效率,减少用户等待时间,提升用户体验。
本申请实施例中,应用管理对象还可以包括应用窗口。对应用窗口可以采用与应用功能以及应用资源均不同的策略进行管理。
图16是本申请实施例提供的另外一种应用管理方法的流程示意图。图16所示实施例中的步骤S1601至步骤S1605与图2所示实施例中的步骤S201至步骤S205基本相同,此处不再赘述。如图16所示,该方法还包括如下步骤:
在步骤S1606中,获取应用窗口运行时的内存占用量。
在步骤S1607中,响应于应用窗口运行时的内存占用量大于预设内存占用量阈值,和/或应用窗口对应的应用的一个生命周期中应用窗口被引用次数大于预设引用次数阈值,将应用窗口隐藏且不销毁。
本申请实施例中,针对应用窗口的管理策略可以包括管理窗口是否需要假性关闭(即隐藏而不销毁)和窗口隐藏的时长的策略。其中,隐藏时长可以是一段绝对的时间长度(例如4分钟),也可以是占程序生命周期的一个百分比(如40%、100%)。通常情况下,用百分比时间好于用绝对长度,因为每个用户的***均长度。
其中,针对应用窗口的管理策略的制定依据可以包括:获取窗口运行时的内存占用量;响应于窗口运行时的内存占用量大于预设内存占用量阈值,和/或窗口对应的应用的一个生命周期中窗口被引用次数大于预设引用次数阈值,将窗口隐藏且不销毁。
具体的,针对应用窗口的管理策略的制定依据可以是,统计每个窗口运行时的内存占用量,按从大到小排序。设置阈值,取前k个窗口来制定策略,k为正整数。设置这k个窗口的策略为第一个策略,即假性关闭(隐藏而不销毁)。对这k个窗口的策略进一步处理,求出每个窗口运用第二个策略的具体的数值(缓存的时间长度)。对这k个窗口,对每个窗口统计其在一次App生命周期中,这个窗口的“总存活时间”所占“App生命周期的时间”的百分比。例如:在一次App生命周期中,总时长为10小时,第1个小时的时候,窗口a被打开第一次,存活1小时后关闭,第5个小时的时候,窗口a被打开,存活2小时后关闭,则窗口a的百分比为: (1 + 2) / 10=30%。然后再求将统计到的所有App生命周期中的百分比的平均值,即制定出了第二个策略即窗口隐藏的时长百分比。
进一步的,还可以确定窗口的存活时长,即确定窗口隐藏时长。确定窗口隐藏时长可以包括:获取运行时内存占用量最大的前M个窗口,M为正整数;计算M个窗口中各窗口在对应的应用的一个生命周期中的存活时间与生命周期的比值;确定M个窗口的比值的平均值为隐藏时长。
本申请实施例中,窗口运行特征同样可以通过埋点采集。客户端可以在一个窗口打开时进行埋点,记录窗口打开时的时间戳、窗口标识、用户信息和设备信息;客户端还可以在一个窗口关闭时进行埋点,记录窗口关闭(即销毁)时的时间戳、窗口标识、用户信息和设备信息。服务器通过埋点数据可以获知窗口的存在时长,窗口的使用次数,人均使用次数等。具体的,服务器可以根据埋点数据(包括设备信息和用户信息),计算得到该用户的使用***均生命周期。该计算方法可以包括:将通过埋点数据得到的该设备的所有应用生命周期长度,求平均值即可。或者该计算方法还可以包括:先利用过往数据为样本,设置特征值如开启的时间,结束的时间,利用分类算法如前面提及的KNN进行训练模型,再传入本次客户端程序开启的时间,通过模型得到可能的结束时间(求p个距离最近的点的平均结束时间,就是本次可能的结束时间,p为正整数),这个算法由于其智能性,准确率高于简单的算法,预测出的本次生命周期长度将更接近用户的习惯。预测出本次生命周期长度后,乘以该窗口的隐藏的时长百分比,就是这个窗口应该隐藏的绝对时间长度。在此期间内,窗口如果有关闭需求,一律只隐藏,不释放。直到超出这个时间,窗口关闭才会是真正的关闭(释放内存和资源)。
其中,k的取值可以采用如下方式计算:在不打开任何新窗口的前提下,应用刚启动时的预装窗口以及运行一段时间后的内存占用量,是已知的,这个变量可以记为initial;每个客户端设备都对单个应用运行时能占用的最大内存做了限制,因为客户端的埋点数据中是有设备信息的,所以服务器对这个信息也是已知的,这个变量记为maxPermitted。其中,maxPermitted可以在设备的官网或者百度查询到;因此,用maxPermitted减去initial,得到的就是所允许的“常驻内存窗口”的内存总和。遍历排序好的窗口,把每个窗口的内存占用量逐个相加,直到加上某个窗口为止(其位置索引为k)。当这个窗口被加上时,和还是小于等于内存总和的,但是再加上其后的一个窗口后,就大于内存总和了,则这个k就是想要得到的值。
图17示出求k值的方法。如图17所示,若某设备包括窗口a、b、c、d、e、f和g,各窗口排序分别为1、2、3、4、5、6和7,设备最大允许1024M内存占用,且不开新窗口时的常用内存为220MHz,即剩余可用内存为1024-220=804MHz。当打开a、b、c、d、e五个窗口时,内存占用为700MHz,小于804MHz,当打开a、b、c、d、e、f六个窗口时,内存占用为890MHz,大于804MHz,因此可以确定k为窗口e的序号5。
采用本申请实施例的技术方案,通过对应用窗口进行合理分类,并对不同类别的窗口采用不同的隐藏策略进行管理,能够减少窗口切换时间,进而减少用户等待时间,提升用户体验。
采用本申请实施例的技术方案,通过客户端上报埋点数据,由服务器经过排序统计和分类算法的计算,制定出合理的针对客户端的策略并下发;策略分别针对客户端的功能模块,资源,窗口三大类型数据进行管理,实现可以动态调整这三项数据的细节变化,并减少客户端预装包体积的效果;可减少预装包体积,合理管理资源,通过预加载减少用户等待时间;可减少窗口切换时用户的等待时间,提升用户体验。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图18是本申请实施例提供的一种应用管理装置的示意图。如图18所示,该应用管理装置包括:
确定模块1801,被配置为确定应用管理对象,应用管理对象至少包括应用功能;
功能划分模块1802,被配置为被配置为将应用功能划分为N个独立的功能模块,各功能模块的跳转关系通过中介模块管理,N为正整数。
功能划分模块还被配置为基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块。
管理模块1803,被配置为将预装功能模块加入应用的预装包,将非预装功能模块配置为在使用时实时下载。
其中,各功能模块的跳转关系通过中介模块管理,包括:响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转。
根据本申请实施例提供的技术方案,通过将应用的功能划分为N个独立的功能模块,该N个独立的功能模块的跳转关系通过中介模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑管理,并针对该N个独立的功能模块,基于自服务器获取的埋点数据统计结果,将各功能模块划分为预装功能模块和非预装功能模块,对预装功能模块和非预装功能模块分别采用不同的策略进行管理,相比现有技术中无法将应用的功能划分为多个独立的功能模块,进而导致对功能进行管理时常常出现重复管理、遗漏管理的情况,提供了对应用的功能基于多个独立的功能模块的管理方法,不再会出现重复管理、遗漏管理的情况,提高了对应用功能的管理效率,同时通过合理划分应用的功能模块,能够相应制定合理的应用功能预装策略,优化应用的预装包体积,提升了用户体验。
本申请实施例中,各功能模块的跳转关系通过中介模块管理,包括:中介管理模块接收应用发送的页面跳转请求,页面跳转请求至少包括跳转前的第一页面和跳转后的第二页面;响应于第二页面包括唯一页面,且第一页面与第二页面具有相同的数据格式和数据类型,中介管理模块基于页面跳转关系映射表将应用的页面自第一页面转换至第二页面;响应于第二页面包括唯一页面,且第一页面与第二页面具有不同的数据格式和数据类型,中介管理模块使用页面跳转数据封装逻辑将第一页面需要传输至第二页面的数据进行封装,并基于页面跳转关系映射表将应用的页面自第一页面转换至第二页面;响应于第二页面包括多个页面,中介管理模块使用页面跳转业务逻辑自第二页面中确定第三页面为跳转后的页面,基于页面跳转关系映射表和/或页面跳转数据封装逻辑将应用的页面自第一页面转换至第三页面。
本申请实施例中,中介管理模块还包括各功能模块的信息表,信息表至少包括各功能模块是否存在记录和各功能模块对应的缓存是否过期记录;中介管理模块在接收到页面跳转请求后,基于信息表中的记录确定第二页面或者第三页面所属目标功能模块是否存在,和/或缓存是否过期;响应于目标功能模块存在且未过期,根据页面跳转请求实现页面转换;响应于目标功能模块不存在和/或目标功能模块的缓存已过期,下载目标功能模块,根据页面跳转请求实现页面转换。
本申请实施例中,使用特征包括以下中的至少一项:埋点数据统计结果至少包括各功能模块的使用特征,使用特征包括以下中的至少一项:功能模块的使用总次数、功能模块的使用总人数、功能模块的所有用户使用总次数、功能模块的人均使用次数、功能模块的停留总时长、功能模块的人均停留时长、功能模块的下载量。
本申请实施例中,基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块,包括:将使用特征中的一项或者多项大于或者等于第一预设功能阈值的功能模块设置为预装功能模块;将使用特征中的一项或者多项小于第一预设功能阈值的功能模块设置为非预装功能模块;其中,第一预设功能阈值为单一阈值,或者为阈值集合。
本申请实施例中,基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块,包括:获取各功能模块的历史使用特征和分类值,分类值包括预装和非预装;定时获取功能模块中第一功能模块的新增使用特征,第一功能模块为功能模块中的任一功能模块;计算新增使用特征与历史使用特征之间的距离,得到与新增使用特征距离最近的K个历史功能模块,K为正整数;计算K个历史功能模块的分类值占比,分类值占比为分类值为预装的历史功能模块数与分类值为非预装的历史功能模块数的比值;响应于分类值占比大于1,确定第一功能模块为预装功能模块;响应于分类值占比小于1,确定第一功能模块为预装功能模块。
本申请实施例中,基于自服务器获取的埋点数据统计结果,将N个独立的功能模块划分为预装功能模块和非预装功能模块包括:以使用特征中的多个使用特征分别作为统计维度,对各功能模块进行统计排序,得到多个统计排序结果;将每个统计排序结果的前L个排序结果中都包含的功能模块确定为预装功能模块,其他功能模块确定为非预装功能模块,L为正整数;以预设频率统计预装功能模块中的使用特征,响应于使用特征中的至少一个使用特征小于第二预设功能阈值,将预装功能模块调整为非预装功能模块;和/或以预设频率统计非预装功能模块中的使用特征,响应于使用特征中的至少一个使用特征大于或者等于第三预设功能阈值,将非预装功能模块调整为预装功能模块;其中,第二预设功能阈值和第三预设功能阈值为单一阈值,或者为阈值集合。
本申请实施例中,本申请实施例中,还包括:响应于确定第二功能模块满足拆分条件,对第二功能模块进行拆分,拆分条件包括第二功能模块中至少存在一个使用特征小于第四预设功能阈值的子功能模块,第四预设功能阈值小于或者等于第一预设功能阈值;响应于第二功能模块为预装功能模块,将子功能模块配置为非预装功能模块;响应于第二功能模块为具有第一缓存策略的非预装功能模块,将子功能模块配置为具有第二缓存策略的非预装功能模块,第一缓存策略的存储时长大于第二缓存策略的存储时长,或者第一缓存策略的存储时长大于0且第二缓存策略的存储时长等于0。
本申请实施例中,还包括:响应于确定多个第三功能模块满足合并条件,对多个第三功能模块进行合并,得到第四功能模块,合并条件包括多个第三功能模块的业务进行了合并;响应于多个第三功能模块均为预装功能模块,确定第四功能模块为预装功能模块;响应于多个第三功能模块均为非预装功能模块,确定第四功能模块为非预装功能模块;响应于多个第三功能模块中部分功能模块为预装功能模块,其余功能模块为非预装功能模块,在确定第四功能模块的预装包大小满足预设体积要求时,确定第四功能模块为预装功能模块,否则确定第四功能模块为非预装功能模块。
本申请实施例中,应用管理对象还包括应用资源;装置还包括确定应用资源的资源使用量和资源体积;响应于确定应用资源的资源使用量大于或者等于第一资源阈值,且应用资源的资源体积大于或者等于第一资源体积阈值,将应用资源在应用中进行预装;响应于确定应用资源的资源使用量小于第一资源阈值且大于或者等于第二资源阈值,并且应用资源的资源体积小于第一资源体积阈值且大于或者等于第二资源体积阈值,将应用资源配置为在应用中不进行预装,且进行预下载;响应于确定应用资源的资源使用量小于第二资源阈值,且应用资源的资源体积小于第二资源体积阈值,将应用资源配置为在应用中不进行预装和预下载,且在使用时进行实时下载;其中,第一资源阈值大于第二资源阈值,第一资源体积阈值大于第二资源体积阈值。
本申请实施例中,还包括:响应于确定应用资源的资源体积大于或者等于第三资源体积阈值,增加第三资源体积阈值,其中,第三资源体积阈值为应用能够预装的最大资源体积;或者响应于确定应用资源的资源体积大于或者等于第三资源体积阈值,将应用资源按照资源体积由大到小的顺序在应用中进行预装,直至达到第三资源体积阈值;将尚未进行预装的剩余资源进行预下载。
本申请实施例中,对应用资源进行预下载包括:按照资源体积由大到小的顺序生成下载资源队列;基于下载资源队列对资源进行预下载;响应于应用开始使用第一资源且第一资源尚未执行下载操作,并且应用已经完成第一资源的下载,将第一资源从下载资源队列中删除。
本申请实施例中,还包括:响应于应用启动,自服务器获取预制定的加载名单;判断加载名单中的资源是否已进行预装或者下载;响应于确定加载名单中的第二资源未进行预装或者下载,下载第二资源,并使用预先配置的全局单例对象将第二资源自加载名单中删除;或者响应于确定加载名单中的第二资源未进行预装或者下载,将第二资源标记为需加载;应用所在的客户端在下载第二资源后,读取标记,将第二资源加载至内存。
本申请实施例中,应用管理对象还包括应用窗口;装置还包括:应用窗口特征获取模块,被配置为获取应用窗口运行时的内存占用量;管理模块还被配置为响应于应用窗口运行时的内存占用量大于预设内存占用量阈值,和/或应用窗口对应的应用的一个生命周期中应用窗口被引用次数大于预设引用次数阈值,将应用窗口隐藏且不销毁。
本申请实施例中,窗口的隐藏时长采用如下方式确定:获取运行时内存占用量最大的前M个窗口,M为正整数;计算M个窗口中各窗口在对应的应用的一个生命周期中的存活时间与生命周期的比值;确定M个窗口的比值的平均值为隐藏时长。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图19是本申请实施例提供的电子设备的示意图。如图19所示,该实施例的电子设备19包括:处理器1901、存储器1902以及存储在该存储器1902中并且可在处理器1901上运行的计算机程序1903。处理器1901执行计算机程序1903时实现上述各个方法实施例中的步骤。或者,处理器1901执行计算机程序1903时实现上述各装置实施例中各模块/单元的功能。
电子设备19可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备19可以包括但不仅限于处理器1901和存储器1902。本领域技术人员可以理解,图19仅仅是电子设备19的示例,并不构成对电子设备19的限定,可以包括比图示更多或更少的部件,或者不同的部件。
处理器1901可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
存储器1902可以是电子设备19的内部存储单元,例如,电子设备19的硬盘或内存。存储器1902也可以是电子设备19的外部存储设备,例如,电子设备19上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。存储器1902还可以既包括电子设备19的内部存储单元也包括外部存储设备。存储器1902用于存储计算机程序以及电子设备所需的其它程序和数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (20)
1.一种应用管理方法,其特征在于,包括:
确定应用管理对象,所述应用管理对象至少包括应用功能;
将所述应用功能划分为N个独立的功能模块,各功能模块的跳转关系通过中介模块管理,N为正整数;
基于自服务器获取的埋点数据统计结果,将所述N个独立的功能模块划分为预装功能模块和非预装功能模块;
将所述预装功能模块加入所述应用的预装包,将所述非预装功能模块配置为在使用时实时下载;
其中,所述各功能模块的跳转关系通过中介模块管理,包括:
响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转;
其中,所述中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转,包括:
所述中介管理模块接收所述应用发送的页面跳转请求,所述页面跳转请求至少包括跳转前的第一页面和跳转后的第二页面;
响应于所述第二页面包括唯一页面,且所述第一页面与第二页面具有相同的数据格式和数据类型,所述中介管理模块基于所述页面跳转关系映射表将所述应用的页面自所述第一页面转换至所述第二页面;
响应于所述第二页面包括唯一页面,且所述第一页面与第二页面具有不同的数据格式和数据类型,所述中介管理模块使用所述页面跳转数据封装逻辑将所述第一页面需要传输至第二页面的数据进行封装,并基于所述页面跳转关系映射表将所述应用的页面自所述第一页面转换至所述第二页面;
响应于所述第二页面包括多个页面,所述中介管理模块使用所述页面跳转业务逻辑自所述第二页面中确定第三页面为跳转后的页面,基于所述页面跳转关系映射表和/或所述页面跳转数据封装逻辑将所述应用的页面自所述第一页面转换至所述第三页面。
2.根据权利要求1所述的方法,其特征在于,所述中介管理模块还包括各功能模块的信息表,所述信息表至少包括各功能模块是否存在记录和各功能模块对应的缓存是否过期记录;
所述中介管理模块在接收到页面跳转请求后,基于所述信息表中的记录确定所述第二页面或者第三页面所属目标功能模块是否存在,和/或缓存是否过期;
响应于所述目标功能模块存在且未过期,根据所述页面跳转请求实现页面转换;
响应于所述目标功能模块不存在和/或所述目标功能模块的缓存已过期,下载所述目标功能模块,根据所述页面跳转请求实现页面转换。
3.根据权利要求1所述的方法,其特征在于,所述埋点数据统计结果至少包括各功能模块的使用特征,所述使用特征包括以下中的至少一项:功能模块的使用总次数、功能模块的使用总人数、功能模块的所有用户使用总次数、功能模块的人均使用次数、功能模块的停留总时长、功能模块的人均停留时长、功能模块的下载量。
4.根据权利要求3所述的方法,其特征在于,所述基于自服务器获取的埋点数据统计结果,将所述N个独立的功能模块划分为预装功能模块和非预装功能模块,包括:
将所述使用特征中的一项或者多项大于或者等于第一预设功能阈值的功能模块设置为预装功能模块;
将所述使用特征中的一项或者多项小于所述第一预设功能阈值的功能模块设置为非预装功能模块;
其中,所述第一预设功能阈值为单一阈值,或者为阈值集合。
5.根据权利要求3所述的方法,其特征在于,所述基于自服务器获取的埋点数据统计结果,将所述N个独立的功能模块划分为预装功能模块和非预装功能模块,包括:
获取各功能模块的历史使用特征和分类值,所述分类值包括预装和非预装;
定时获取所述功能模块中第一功能模块的新增使用特征,所述第一功能模块为所述功能模块中的任一功能模块;
计算所述新增使用特征与所述历史使用特征之间的距离,得到与所述新增使用特征距离最近的K个历史功能模块,K为正整数;
计算所述K个历史功能模块的分类值占比,所述分类值占比为分类值为预装的历史功能模块数与分类值为非预装的历史功能模块数的比值;
响应于所述分类值占比大于1,确定所述第一功能模块为预装功能模块;
响应于所述分类值占比小于1,确定所述第一功能模块为预装功能模块。
6.根据权利要求4至5中任意一项所述的方法,其特征在于,所述基于自服务器获取的埋点数据统计结果,将所述N个独立的功能模块划分为预装功能模块和非预装功能模块,包括:
以所述使用特征中的多个使用特征分别作为统计维度,对各功能模块进行统计排序,得到多个统计排序结果;
将每个统计排序结果的前L个排序结果中都包含的功能模块确定为预装功能模块,其他功能模块确定为非预装功能模块,L为正整数;
以预设频率统计所述预装功能模块中的使用特征,响应于所述使用特征中的至少一个使用特征小于第二预设功能阈值,将所述预装功能模块调整为非预装功能模块;和/或
以预设频率统计所述非预装功能模块中的使用特征,响应于所述使用特征中的至少一个使用特征大于或者等于第三预设功能阈值,将所述非预装功能模块调整为预装功能模块;
其中,所述第二预设功能阈值和第三预设功能阈值为单一阈值,或者为阈值集合。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
使用如权利要求4所述的方法确定特定功能模块的第一分类值,使用如权利要求5所述的方法确定所述特定功能模块的第二分类值,所述第一分类值与第二分类值为预装或者非预装;
响应于所述第一分类值与所述第二分类值不同,更新权利要求5所述的方法中的各功能模块的历史使用特征和分类值,重新确定所述特定功能模块的第二分类值,直至所述第一分类值与所述第二分类值相同。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于确定第二功能模块满足拆分条件,对所述第二功能模块进行拆分,所述拆分条件包括所述第二功能模块中至少存在一个使用特征小于第四预设功能阈值的子功能模块,其中,第四预设功能阈值小于或者等于第一预设功能阈值;
响应于所述第二功能模块为预装功能模块,将所述子功能模块配置为非预装功能模块;
响应于所述第二功能模块为具有第一缓存策略的非预装功能模块,将所述子功能模块配置为具有第二缓存策略的非预装功能模块,所述第一缓存策略的存储时长大于所述第二缓存策略的存储时长,或者所述第一缓存策略的存储时长大于0且所述第二缓存策略的存储时长等于0。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于确定多个第三功能模块满足合并条件,对所述多个第三功能模块进行合并,得到第四功能模块,所述合并条件包括所述多个第三功能模块的业务进行了合并;
响应于所述多个第三功能模块均为预装功能模块,确定所述第四功能模块为预装功能模块;
响应于所述多个第三功能模块均为非预装功能模块,确定所述第四功能模块为非预装功能模块;
响应于所述多个第三功能模块中部分功能模块为预装功能模块,其余功能模块为非预装功能模块,在确定第四功能模块的预装包大小满足预设体积要求时,确定所述第四功能模块为预装功能模块,否则确定所述第四功能模块为非预装功能模块。
10.根据权利要求1所述的方法,其特征在于,所述应用管理对象还包括应用资源;
确定所述应用资源的资源使用量和资源体积;
响应于确定所述应用资源的资源使用量大于或者等于第一资源阈值,且所述应用资源的资源体积大于或者等于第一资源体积阈值,将所述应用资源在所述应用中进行预装;
响应于确定所述应用资源的资源使用量小于所述第一资源阈值且大于或者等于第二资源阈值,并且所述应用资源的资源体积小于所述第一资源体积阈值且大于或者等于第二资源体积阈值,将所述应用资源配置为在所述应用中不进行预装,且进行预下载;
响应于确定所述应用资源的资源使用量小于所述第二资源阈值,且所述应用资源的资源体积小于所述第二资源体积阈值,将所述应用资源配置为在所述应用中不进行预装和预下载,且在使用时进行实时下载;
其中,所述第一资源阈值大于所述第二资源阈值,所述第一资源体积阈值大于所述第二资源体积阈值。
11. 根据权利要求10所述的方法,其特征在于,所述方法还包括:
响应于确定所述应用资源的资源体积大于或者等于第三资源体积阈值,增加所述第三资源体积阈值,其中,所述第三资源体积阈值为应用能够预装的最大资源体积;或者
响应于确定所述应用资源的资源体积大于或者等于所述第三资源体积阈值,将所述应用资源按照资源体积由大到小的顺序在所述应用中进行预装,直至达到所述第三资源体积阈值;
将尚未进行预装的剩余资源进行预下载。
12.根据权利要求10所述的方法,其特征在于,对资源进行预下载包括:
按照资源体积由大到小的顺序生成下载资源队列;
基于下载资源队列对资源进行预下载;
响应于应用开始使用第一资源且所述第一资源尚未执行下载操作,并且所述应用已经完成所述第一资源的下载,将所述第一资源从所述下载资源队列中删除。
13.根据权利要求10所述的方法,其特征在于,所述方法还包括:
响应于应用启动,自服务器获取预制定的加载名单;
判断所述加载名单中的资源是否已进行预装或者下载;
响应于确定所述加载名单中的第二资源未进行预装或者下载,下载所述第二资源,并使用预先配置的全局单例对象将所述第二资源自所述加载名单中删除;或者
响应于确定所述加载名单中的第二资源未进行预装或者下载,将所述第二资源标记为需加载;
应用所在的客户端在下载所述第二资源后,读取所述标记,将所述第二资源加载至内存。
14.根据权利要求1所述的方法,其特征在于,所述应用管理对象还包括应用窗口;
获取所述应用窗口运行时的内存占用量;
响应于所述应用窗口运行时的内存占用量大于预设内存占用量阈值,和/或所述应用窗口对应的应用的一个生命周期中窗口被引用次数大于预设引用次数阈值,将所述应用窗口隐藏且不销毁。
15.根据权利要求14所述的方法,其特征在于,所述应用窗口的隐藏时长采用如下方式确定:
获取运行时内存占用量最大的前M个窗口,M为正整数;
计算所述M个窗口中各窗口在对应的应用的一个生命周期中的存活时间与所述生命周期的比值;
确定所述M个窗口的比值的平均值为所述隐藏时长。
16.一种应用管理装置,其特征在于,包括:
确定模块,被配置为确定应用管理对象,所述应用管理对象至少包括应用功能;
功能划分模块,被配置为将所述应用功能划分为N个独立的功能模块,各功能模块的跳转关系通过中介模块管理,N为正整数;
所述功能划分模块还被配置为基于自服务器获取的埋点数据统计结果,将所述N个独立的功能模块划分为预装功能模块和非预装功能模块;
管理模块,被配置为将所述预装功能模块加入所述应用的预装包,将所述非预装功能模块配置为在使用时实时下载;
其中,所述各功能模块的跳转关系通过中介模块管理,包括:
响应于页面跳转请求,中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转;
所述中介管理模块基于其存储的页面跳转关系映射表、页面跳转数据封装逻辑和页面跳转业务逻辑执行对应的页面跳转,包括:
所述中介管理模块接收所述应用发送的页面跳转请求,所述页面跳转请求至少包括跳转前的第一页面和跳转后的第二页面;
响应于所述第二页面包括唯一页面,且所述第一页面与第二页面具有相同的数据格式和数据类型,所述中介管理模块基于所述页面跳转关系映射表将所述应用的页面自所述第一页面转换至所述第二页面;
响应于所述第二页面包括唯一页面,且所述第一页面与第二页面具有不同的数据格式和数据类型,所述中介管理模块使用所述页面跳转数据封装逻辑将所述第一页面需要传输至第二页面的数据进行封装,并基于所述页面跳转关系映射表将所述应用的页面自所述第一页面转换至所述第二页面;
响应于所述第二页面包括多个页面,所述中介管理模块使用所述页面跳转业务逻辑自所述第二页面中确定第三页面为跳转后的页面,基于所述页面跳转关系映射表和/或所述页面跳转数据封装逻辑将所述应用的页面自所述第一页面转换至所述第三页面。
17.根据权利要求16所述的装置,其特征在于,所述应用管理对象还包括应用资源;所述装置还包括:
资源特征确定模块,被配置为确定所述应用资源的资源使用量和资源体积;
所述管理模块还被配置为响应于确定所述应用资源的资源使用量大于或者等于第一资源阈值,且所述应用资源的资源体积大于或者等于第一资源体积阈值,将所述应用资源在所述应用中进行预装;
所述管理模块还被配置为响应于确定所述应用资源的资源使用量小于所述第一资源阈值且大于或者等于第二资源阈值,并且所述应用资源的资源体积小于所述第一资源体积阈值且大于或者等于第二资源体积阈值,将所述应用资源配置为在所述应用中不进行预装,且进行预下载;
所述管理模块还被配置为响应于确定所述应用资源的资源使用量小于所述第二资源阈值,且所述应用资源的资源体积小于所述第二资源体积阈值,将所述应用资源配置为在所述应用中不进行预装和预下载,且在使用时进行实时下载;
其中,所述第一资源阈值大于所述第二资源阈值,所述第一资源体积阈值大于所述第二资源体积阈值。
18.根据权利要求16所述的装置,其特征在于,所述应用管理对象还包括应用窗口;所述装置还包括:
窗口特征获取模块,被配置为获取所述应用窗口运行时的内存占用量;
所述管理模块还被配置为响应于所述应用窗口运行时的内存占用量大于预设内存占用量阈值,和/或所述应用窗口对应的应用的一个生命周期中窗口被引用次数大于预设引用次数阈值,将所述应用窗口隐藏且不销毁。
19.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至15中任一项所述方法的步骤。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至15中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311370475.5A CN117130692B (zh) | 2023-10-23 | 2023-10-23 | 应用管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311370475.5A CN117130692B (zh) | 2023-10-23 | 2023-10-23 | 应用管理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117130692A CN117130692A (zh) | 2023-11-28 |
CN117130692B true CN117130692B (zh) | 2024-01-23 |
Family
ID=88860306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311370475.5A Active CN117130692B (zh) | 2023-10-23 | 2023-10-23 | 应用管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117130692B (zh) |
Citations (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345533A (zh) * | 2013-07-26 | 2013-10-09 | 北京中电普华信息技术有限公司 | 一种数据存储方法及装置 |
CN104200252A (zh) * | 2014-08-25 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 一种基于条码数据的功能逻辑跳转方法、客户端及*** |
CN106528657A (zh) * | 2016-10-19 | 2017-03-22 | 广东欧珀移动通信有限公司 | 浏览器跳转至应用程序的控制方法及装置 |
CN106777184A (zh) * | 2016-12-22 | 2017-05-31 | 北京猎豹移动科技有限公司 | 一种页面加载方法、装置及电子设备 |
CN107526598A (zh) * | 2017-08-31 | 2017-12-29 | 武汉斗鱼网络科技有限公司 | 一种网络页面跳转控制方法及*** |
CN107678745A (zh) * | 2017-09-25 | 2018-02-09 | 南京中新赛克科技有限责任公司 | 基于页面组件化的***和方法 |
CN107704499A (zh) * | 2017-08-28 | 2018-02-16 | 深圳市华傲数据技术有限公司 | 一种应用程序的页面跳转控制方法及装置 |
CN107729014A (zh) * | 2017-09-06 | 2018-02-23 | 北京五八到家信息技术有限公司 | 一种基于Android的页面跳转方法及结构 |
CN108153768A (zh) * | 2016-12-05 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 页面跳转方法、数据处理方法、装置及页面跳转控制*** |
CN108446116A (zh) * | 2018-02-26 | 2018-08-24 | 平安普惠企业管理有限公司 | 应用程序页面的生成方法、装置、计算机设备和存储介质 |
CN108563668A (zh) * | 2018-01-08 | 2018-09-21 | 武汉斗鱼网络科技有限公司 | Hybrid页面跳转H5页面的方法、装置及终端设备 |
CN108681509A (zh) * | 2018-04-20 | 2018-10-19 | 江苏华存电子科技有限公司 | 一种快速建立闪存映射表的方法 |
CN108733793A (zh) * | 2018-05-14 | 2018-11-02 | 北京大学 | 一种面向关系数据库的本体模型构造方法及*** |
CN108763930A (zh) * | 2018-04-11 | 2018-11-06 | 哈尔滨工程大学 | 基于最小缓存模型的web页面流式解析方法 |
CN108804120A (zh) * | 2018-05-23 | 2018-11-13 | 北京五八信息技术有限公司 | 一种页面构建方法、装置、设备及存储介质 |
CN108958855A (zh) * | 2017-05-26 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 页面跳转的方法、装置及*** |
CN108984641A (zh) * | 2018-06-22 | 2018-12-11 | 福建南威软件有限公司 | 一种基于web端的页面跳转方法 |
CN109063082A (zh) * | 2018-07-25 | 2018-12-21 | 珠海格力电器股份有限公司 | 一种页面跳转方法及终端设备 |
CN109144620A (zh) * | 2017-06-15 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | 一种悬浮窗权限设置界面的跳转方法及装置 |
CN110020325A (zh) * | 2018-08-17 | 2019-07-16 | 深圳壹账通智能科技有限公司 | 页面加载方法、装置、设备及可读存储介质 |
CN110083790A (zh) * | 2019-04-30 | 2019-08-02 | 珠海随变科技有限公司 | 页面编辑方法、页面输出方法、装置、计算机设备及介质 |
CN110347942A (zh) * | 2019-05-31 | 2019-10-18 | 深圳壹账通智能科技有限公司 | 页面跳转方法、装置、存储介质及计算机设备 |
CN110442343A (zh) * | 2018-05-04 | 2019-11-12 | 阿里巴巴集团控股有限公司 | 一种页面转换方法及页面转换装置 |
CN110442822A (zh) * | 2019-08-02 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 一种小程序内容展示方法、装置、设备及存储介质 |
CN110543266A (zh) * | 2019-08-21 | 2019-12-06 | 珠海格力电器股份有限公司 | 一种界面显示方法及终端设备 |
CN110555038A (zh) * | 2018-03-28 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 一种数据处理***、方法及装置 |
CN110737780A (zh) * | 2019-09-29 | 2020-01-31 | 北京明略软件***有限公司 | 发送数据的方法及装置、接收数据的方法及装置 |
CN111046310A (zh) * | 2019-12-12 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 页面处理方法、装置、服务器及计算机可读存储介质 |
CN111124410A (zh) * | 2019-12-28 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种页面加载方法、装置、设备及可读存储介质 |
CN111143723A (zh) * | 2019-12-26 | 2020-05-12 | 五八同城信息技术有限公司 | 页面跳转方法、装置、电子设备及存储介质 |
CN111177027A (zh) * | 2019-11-15 | 2020-05-19 | 深圳宏芯宇电子股份有限公司 | 动态随机存取存储器、内存管理方法、***及存储介质 |
CN111208932A (zh) * | 2018-11-21 | 2020-05-29 | 群联电子股份有限公司 | 映射表更新方法、存储器控制电路单元与存储器存储装置 |
CN111309796A (zh) * | 2020-02-07 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置以及计算机可读存储介质 |
CN111753226A (zh) * | 2019-03-26 | 2020-10-09 | 京东数字科技控股有限公司 | 一种页面加载方法和装置 |
CN111988656A (zh) * | 2020-07-28 | 2020-11-24 | 烽火通信科技股份有限公司 | 一种流媒体视频用户触摸信息传递的方法及*** |
CN112000911A (zh) * | 2020-07-08 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 页面管理方法、装置、电子设备以及存储介质 |
CN112040013A (zh) * | 2020-11-05 | 2020-12-04 | 南京研利科技有限公司 | 用于页面路由的方法、计算设备和计算机存储介质 |
CN112114789A (zh) * | 2019-06-20 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 一种业务开发方法及设备 |
CN112256356A (zh) * | 2020-10-09 | 2021-01-22 | 北京达佳互联信息技术有限公司 | 一种页面数据获取方法和装置 |
CN112379976A (zh) * | 2020-11-16 | 2021-02-19 | 上海瑞家信息技术有限公司 | 一种事件处理方法、装置、移动终端及存储介质 |
CN112559086A (zh) * | 2020-12-25 | 2021-03-26 | 北京百度网讯科技有限公司 | 小程序页面渲染方法、装置、电子设备及可读存储介质 |
CN112861060A (zh) * | 2021-03-23 | 2021-05-28 | 金岭教育科技(北京)有限公司 | 页面创建方法、装置、计算机设备和存储介质 |
CN112905183A (zh) * | 2019-12-04 | 2021-06-04 | 广州凡科互联网科技股份有限公司 | 一种流程表单外部数据转换映射方法 |
CN113127130A (zh) * | 2021-05-08 | 2021-07-16 | 广州酷狗计算机科技有限公司 | 页面跳转方法、装置及存储介质 |
CN113221048A (zh) * | 2021-04-20 | 2021-08-06 | 武汉联影医疗科技有限公司 | 页面跳转方法、装置、计算机设备和存储介质 |
CN113298586A (zh) * | 2020-05-25 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 订单信息处理方法及装置 |
CN114048401A (zh) * | 2021-11-22 | 2022-02-15 | 山石网科通信技术股份有限公司 | 一种页面跳转方法及装置、电子设备、存储介质 |
CN115220630A (zh) * | 2022-06-22 | 2022-10-21 | 科大讯飞股份有限公司 | 电子设备控制方法、装置、设备、扫描笔及存储介质 |
CN115357834A (zh) * | 2022-09-06 | 2022-11-18 | 平安科技(深圳)有限公司 | 页面跳转方法、装置、设备以及存储介质 |
CN116233217A (zh) * | 2023-05-08 | 2023-06-06 | 成都赛力斯科技有限公司 | 基于路由的页面跳转方法、装置、电子设备及存储介质 |
CN116225567A (zh) * | 2023-02-09 | 2023-06-06 | 平安付科技服务有限公司 | 页面加载方法、装置、存储介质及计算机设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3836109B2 (ja) * | 2004-02-19 | 2006-10-18 | 東京エレクトロン株式会社 | プログラマブル論理回路制御装置、プログラマブル論理回路制御方法及びプログラム |
US8140768B2 (en) * | 2008-02-01 | 2012-03-20 | International Business Machines Corporation | Jump starting prefetch streams across page boundaries |
TW200949840A (en) * | 2008-05-30 | 2009-12-01 | Ite Tech Inc | Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory |
US8402071B2 (en) * | 2009-06-19 | 2013-03-19 | Aptare, Inc. | Catalog that stores file system metadata in an optimized manner |
US9547668B2 (en) * | 2012-10-29 | 2017-01-17 | Dropbox, Inc. | Event-based content item view |
US10185664B1 (en) * | 2017-06-30 | 2019-01-22 | Vmware, Inc. | Method for switching address spaces via an intermediate address space |
US11790028B2 (en) * | 2020-12-10 | 2023-10-17 | International Business Machines Corporation | Dynamic user interface enhancement based on user interactions |
-
2023
- 2023-10-23 CN CN202311370475.5A patent/CN117130692B/zh active Active
Patent Citations (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345533A (zh) * | 2013-07-26 | 2013-10-09 | 北京中电普华信息技术有限公司 | 一种数据存储方法及装置 |
CN104200252A (zh) * | 2014-08-25 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 一种基于条码数据的功能逻辑跳转方法、客户端及*** |
CN106528657A (zh) * | 2016-10-19 | 2017-03-22 | 广东欧珀移动通信有限公司 | 浏览器跳转至应用程序的控制方法及装置 |
CN108153768A (zh) * | 2016-12-05 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 页面跳转方法、数据处理方法、装置及页面跳转控制*** |
CN106777184A (zh) * | 2016-12-22 | 2017-05-31 | 北京猎豹移动科技有限公司 | 一种页面加载方法、装置及电子设备 |
CN108958855A (zh) * | 2017-05-26 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 页面跳转的方法、装置及*** |
CN109144620A (zh) * | 2017-06-15 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | 一种悬浮窗权限设置界面的跳转方法及装置 |
CN107704499A (zh) * | 2017-08-28 | 2018-02-16 | 深圳市华傲数据技术有限公司 | 一种应用程序的页面跳转控制方法及装置 |
CN107526598A (zh) * | 2017-08-31 | 2017-12-29 | 武汉斗鱼网络科技有限公司 | 一种网络页面跳转控制方法及*** |
CN107729014A (zh) * | 2017-09-06 | 2018-02-23 | 北京五八到家信息技术有限公司 | 一种基于Android的页面跳转方法及结构 |
CN107678745A (zh) * | 2017-09-25 | 2018-02-09 | 南京中新赛克科技有限责任公司 | 基于页面组件化的***和方法 |
CN108563668A (zh) * | 2018-01-08 | 2018-09-21 | 武汉斗鱼网络科技有限公司 | Hybrid页面跳转H5页面的方法、装置及终端设备 |
CN108446116A (zh) * | 2018-02-26 | 2018-08-24 | 平安普惠企业管理有限公司 | 应用程序页面的生成方法、装置、计算机设备和存储介质 |
CN110555038A (zh) * | 2018-03-28 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 一种数据处理***、方法及装置 |
CN108763930A (zh) * | 2018-04-11 | 2018-11-06 | 哈尔滨工程大学 | 基于最小缓存模型的web页面流式解析方法 |
CN108681509A (zh) * | 2018-04-20 | 2018-10-19 | 江苏华存电子科技有限公司 | 一种快速建立闪存映射表的方法 |
CN110442343A (zh) * | 2018-05-04 | 2019-11-12 | 阿里巴巴集团控股有限公司 | 一种页面转换方法及页面转换装置 |
CN108733793A (zh) * | 2018-05-14 | 2018-11-02 | 北京大学 | 一种面向关系数据库的本体模型构造方法及*** |
CN108804120A (zh) * | 2018-05-23 | 2018-11-13 | 北京五八信息技术有限公司 | 一种页面构建方法、装置、设备及存储介质 |
CN108984641A (zh) * | 2018-06-22 | 2018-12-11 | 福建南威软件有限公司 | 一种基于web端的页面跳转方法 |
CN109063082A (zh) * | 2018-07-25 | 2018-12-21 | 珠海格力电器股份有限公司 | 一种页面跳转方法及终端设备 |
CN110020325A (zh) * | 2018-08-17 | 2019-07-16 | 深圳壹账通智能科技有限公司 | 页面加载方法、装置、设备及可读存储介质 |
CN111208932A (zh) * | 2018-11-21 | 2020-05-29 | 群联电子股份有限公司 | 映射表更新方法、存储器控制电路单元与存储器存储装置 |
CN111753226A (zh) * | 2019-03-26 | 2020-10-09 | 京东数字科技控股有限公司 | 一种页面加载方法和装置 |
CN110083790A (zh) * | 2019-04-30 | 2019-08-02 | 珠海随变科技有限公司 | 页面编辑方法、页面输出方法、装置、计算机设备及介质 |
CN110347942A (zh) * | 2019-05-31 | 2019-10-18 | 深圳壹账通智能科技有限公司 | 页面跳转方法、装置、存储介质及计算机设备 |
CN112114789A (zh) * | 2019-06-20 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 一种业务开发方法及设备 |
CN110442822A (zh) * | 2019-08-02 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 一种小程序内容展示方法、装置、设备及存储介质 |
CN110543266A (zh) * | 2019-08-21 | 2019-12-06 | 珠海格力电器股份有限公司 | 一种界面显示方法及终端设备 |
CN110737780A (zh) * | 2019-09-29 | 2020-01-31 | 北京明略软件***有限公司 | 发送数据的方法及装置、接收数据的方法及装置 |
CN111177027A (zh) * | 2019-11-15 | 2020-05-19 | 深圳宏芯宇电子股份有限公司 | 动态随机存取存储器、内存管理方法、***及存储介质 |
CN112905183A (zh) * | 2019-12-04 | 2021-06-04 | 广州凡科互联网科技股份有限公司 | 一种流程表单外部数据转换映射方法 |
CN111046310A (zh) * | 2019-12-12 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 页面处理方法、装置、服务器及计算机可读存储介质 |
CN111143723A (zh) * | 2019-12-26 | 2020-05-12 | 五八同城信息技术有限公司 | 页面跳转方法、装置、电子设备及存储介质 |
CN111124410A (zh) * | 2019-12-28 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种页面加载方法、装置、设备及可读存储介质 |
CN111309796A (zh) * | 2020-02-07 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置以及计算机可读存储介质 |
CN113298586A (zh) * | 2020-05-25 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 订单信息处理方法及装置 |
CN112000911A (zh) * | 2020-07-08 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 页面管理方法、装置、电子设备以及存储介质 |
CN111988656A (zh) * | 2020-07-28 | 2020-11-24 | 烽火通信科技股份有限公司 | 一种流媒体视频用户触摸信息传递的方法及*** |
CN112256356A (zh) * | 2020-10-09 | 2021-01-22 | 北京达佳互联信息技术有限公司 | 一种页面数据获取方法和装置 |
CN112040013A (zh) * | 2020-11-05 | 2020-12-04 | 南京研利科技有限公司 | 用于页面路由的方法、计算设备和计算机存储介质 |
CN112379976A (zh) * | 2020-11-16 | 2021-02-19 | 上海瑞家信息技术有限公司 | 一种事件处理方法、装置、移动终端及存储介质 |
CN112559086A (zh) * | 2020-12-25 | 2021-03-26 | 北京百度网讯科技有限公司 | 小程序页面渲染方法、装置、电子设备及可读存储介质 |
CN112861060A (zh) * | 2021-03-23 | 2021-05-28 | 金岭教育科技(北京)有限公司 | 页面创建方法、装置、计算机设备和存储介质 |
CN113221048A (zh) * | 2021-04-20 | 2021-08-06 | 武汉联影医疗科技有限公司 | 页面跳转方法、装置、计算机设备和存储介质 |
CN113127130A (zh) * | 2021-05-08 | 2021-07-16 | 广州酷狗计算机科技有限公司 | 页面跳转方法、装置及存储介质 |
CN114048401A (zh) * | 2021-11-22 | 2022-02-15 | 山石网科通信技术股份有限公司 | 一种页面跳转方法及装置、电子设备、存储介质 |
CN115220630A (zh) * | 2022-06-22 | 2022-10-21 | 科大讯飞股份有限公司 | 电子设备控制方法、装置、设备、扫描笔及存储介质 |
CN115357834A (zh) * | 2022-09-06 | 2022-11-18 | 平安科技(深圳)有限公司 | 页面跳转方法、装置、设备以及存储介质 |
CN116225567A (zh) * | 2023-02-09 | 2023-06-06 | 平安付科技服务有限公司 | 页面加载方法、装置、存储介质及计算机设备 |
CN116233217A (zh) * | 2023-05-08 | 2023-06-06 | 成都赛力斯科技有限公司 | 基于路由的页面跳转方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117130692A (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210360079A1 (en) | Unified end user notification platform | |
US7912949B2 (en) | Systems and methods for recording changes to a data store and propagating changes to a client application | |
CN106878445B (zh) | 资源文件更新方法及装置 | |
US10897641B2 (en) | Notifications on mobile devices | |
CN111277848B (zh) | 直播间互动消息的处理方法、装置、电子设备及存储介质 | |
KR20060120256A (ko) | 무선 통신 장치의 애플리케이션들 및 미디어 컨텐츠를관리하기 위한 시스템 및 방법 | |
WO2017167121A1 (zh) | 确定及运用应用程序之间的关系关联的方法及装置 | |
CN104427519A (zh) | Ip地址归属地管理方法及装置 | |
CN110660466A (zh) | 结合区块链的物联网的个人健康数据上链方法及*** | |
WO2023179161A1 (zh) | 一种视频帧率控制方法、装置、电子设备及存储介质 | |
CN113626624B (zh) | 一种资源识别方法和相关装置 | |
KR101991609B1 (ko) | 사용자 모바일 네트워크 및 데이터 플랜에 기초한 콘텐츠의 필터링 | |
US10951593B2 (en) | Programmatic control channel for automated data distribution | |
CN112950294B (zh) | 信息分享方法、装置、电子设备及存储介质 | |
CN117130692B (zh) | 应用管理方法、装置、电子设备及存储介质 | |
CN112364186A (zh) | 媒体推荐信息的呈现方法、装置、设备及存储介质 | |
WO2023273922A1 (zh) | 一种账号管理方法、***和计算机可读存储介质 | |
CN114172964B (zh) | 内容分发网络的调度方法、装置、通信设备及存储介质 | |
WO2020173345A1 (zh) | 多终端设备之间服务决策分发的方法及*** | |
CN114428589A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN114281859A (zh) | 数据处理方法、设备及存储介质 | |
CN114969493A (zh) | 一种内容推荐方法和相关装置 | |
US10922349B1 (en) | Filtering remote access monitoring data | |
CN114979757B (zh) | 视频发布方法、装置、设备及存储介质 | |
CN111159507B (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 |