CN111414265B - 一种调用系统资源的服务框架及方法 - Google Patents
一种调用系统资源的服务框架及方法 Download PDFInfo
- Publication number
- CN111414265B CN111414265B CN202010206560.8A CN202010206560A CN111414265B CN 111414265 B CN111414265 B CN 111414265B CN 202010206560 A CN202010206560 A CN 202010206560A CN 111414265 B CN111414265 B CN 111414265B
- Authority
- CN
- China
- Prior art keywords
- service layer
- application
- app
- service
- resource
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013507 mapping Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 15
- 239000010410 layer Substances 0.000 description 178
- 230000006854 communication Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 17
- 230000001133 acceleration Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 239000012792 core layer Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 239000011230 binding agent Substances 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 239000000470 constituent Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 241000256836 Apis Species 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
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
本发明提供一种调用系统资源的服务框架及方法,该服务框架包括:应用框架核心服务层,用于收到应用程序APP的调度请求时,确定应用场景类型,根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源,根据调用系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,将调用结果返回到APP;分别与应用框架核心服务层连接的系统服务层和Native服务层,用于根据应用框架核心服务层的指示启动资源引擎调用系统资源,并将调用结果发送到应用框架核心服务层。本发明提供的调用系统资源的服务框架及方法,解决了现有调用系统资源的方法存在的调用过程复杂,导致系统性能低的问题。
Description
技术领域
本发明涉及移动终端软件领域,特别涉及一种调用系统资源的服务框架及方法。
背景技术
安卓(Android)系统是一种基于Linux的自由及开放源代码的操作系统。主要应用于移动终端设备。目前Android应用需求的资源与日俱增,而当前的硬件平台即移动终端设备的类型众多,如何在各个硬件平台上,特别是性能较差的硬件平台上,获得相对良好的使用体验一直是值得重视的问题。
Android作为一个开放性平台,兼容各式硬件平台的同时,也提供了深度定制的自由,在这种情况下,Android原生提供的应用程序接口(Application ProgrammingInterface,API)并不能完全覆盖开发者所能提供给应用的系统能力。并且,Android原生的API包含的性能相关的接口很少,且大多都分布在不同的服务内。调用性能相关的接口时,需要实例化各个服务,应用必须要获取各个服务的对象,通过调用服务的接口配置系统参数,获取系统资源,因此,调用过程十分复杂。
目前,不同开发者对Android进行深度定制后,会提供一些接口,以简化调用接口的过程,但是这些接口只能应用于当前硬件平台,在应用到其他硬件平台时都需要重新进行适配。因此需要提出一个提供给应用层的可扩展、可移植,同时兼顾速度,能拓展系统性能又不破坏Andorid原生架构稳定性的统一调度服务框架。
发明内容
本发明提供了一种调用系统资源的服务框架及方法,用以解决现有调用系统资源的方法存在的调用过程复杂,导致系统性能低的问题。
根据本发明实施例的第一方面,提供一种服务框架,该服务框架包括:
应用框架核心服务层,用于收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源,根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP;
分别与所述应用框架核心服务层连接的系统服务层和Native服务层,用于根据所述应用框架核心服务层的指示启动资源引擎调用系统资源,并将调用结果发送到所述应用框架核心服务层。
可选地,所述应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,包括:
应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者
应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。
可选地,所述应用框架核心服务层收到APP的调度请求时,所述根据调度请求确定所述APP的应用场景类型,包括:
根据预设的不同关键字与应用场景类型的映射关系,及根据调度请求确定的APP包名或界面名,通过关键字匹配确定APP对应的应用场景类型;或者
根据调度请求确定APP包名,根据预设的不同APP的包名与应用场景类型的映射关系,确定所述APP对应的应用场景类型。
可选地,所述应用框架核心服务层,还用于确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或Native服务层启动对应的资源引擎调用系统资源。
可选地,所述应用框架核心服务层用于通过应用程序API接口,接收APP的调度请求及将调用结果返回到所述APP。
可选地,所述应用框架核心服务层还用于接收APP通过软件开发工具包SDK中的API接口发送的调度请求;或者
所述应用框架核心服务层还用于接收APP通过所述服务框架提供的应用程序API接口发送的调度请求。
根据本发明实施例的第二方面,提供一种调用系统资源的方法,包括:
通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源;
根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP。
可选地,所述通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,包括:
通过应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者
通过应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。
可选地,还包括:
通过应用框架核心服务层确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或Native服务层启动对应的资源引擎调用系统资源。
根据本发明实施例的第三方面,提供一种服务框架,包括:
系统资源确定模块,用于通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源;
系统资源调用模块,用于根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP。
可选地,所述系统资源确定模块通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,包括:
通过应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者
通过应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。
可选地,所述系统资源调用模块还用于:
通过应用框架核心服务层确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或Native服务层启动对应的资源引擎调用系统资源。
根据本发明实施例的第四方面,提供一种芯片,所述芯片与用户设备中的存储器耦合,使得所述芯片在运行时调用所述存储器中存储的程序指令,实现本申请实施例上述各个方面以及各个方面涉及的任一可能设计的方法。
根据本发明实施例的第五方面,提供一种计算机可读存储介质,该计算机存储介质存储有程序指令,当其在终端设备上运行时,使得终端设备执行本发明实施例上述各个方面以及各个方面涉及的任一可能设计的方法。
根据本发明实施例的第六方面,提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本申请实施例上述各个方面以及各个方面涉及的任一可能设计的方法。
利用本发明提供的调用系统资源的服务框架及方法,具有以下有益效果:
本发明提供的调用系统资源的服务框架及方法,通过应用框架核心服务层,接收应用程序APP的调度请求,确定APP当前应用场景对应的应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源,再根据调用系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到APP,解决了现有调用系统资源的方法存在的调用过程复杂,导致系统性能低的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为目前应用程序APP调用系统资源的方法示意图;
图2为本发明实施例中提供的一种调用系统资源的服务框架的示意图;
图3为本发明实施例中提供的一种调用系统资源的系统架构示意图;
图4为本发明实施例中提供的一种调用系统资源的方法示意图;
图5为本发明实施例中提供的一种利用服务框架调用系统资源的方法示意图;
图6为本发明实施例中提供的一种调用系统资源的服务框架的示意图;
图7为本发明实施例中提供的一种调用系统资源的服务框架应用的终端设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了方便理解,下面对本发明实施例中涉及的名词进行解释:
1)API(Application Programming Interface,应用程序接口):是一组定义、程序及协议的集合,可以是一些预先定义的函数,或软件系统不同组成部分衔接的约定;API接口是操作系统提供给应用程序APP的调用接口,APP通过调用操作系统的API而使操作系统去执行APP的命令,提供APP及其开发者基于某软件或硬件访问一组例程的能力,而又无需访问原码或理解内部工作机制的细节,从而为各种不同平台提供数据共享;API接口可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。
目前Android原生系统可分为应用层、应用框架层、系统服务层、硬件抽象层(HAL)和核心层共五个层次。其中,应用层包括系统应用程序,以及针对某种软件或应用在功能上的不足,由非软件开发方的其他开发者开发的第三方应用程序。应用层中的应用程序的各种操作都是在系统服务支持下完成的,应用框架层由多个系统服务和组件组成,提供了应用程序可能用到的应用程序接口API,用于支持应用层中应用程序的运行,应用程序通过接口实现相应的功能。系统服务层通过应用框架层为应用程序提供服务。硬件抽象层是Android定义的一套接口标准,为应用框架层提供接口支持。核心层提供了进程管理、文件网络管理、系统安全权限管理、以及系统与硬件设备通讯基础等。
参照图1,为目前应用程序APP调用系统资源的方法示意图。由于Android原生系统的API很少有涉及性能的接口,极少的又分布在不同的服务内,调用时需要实例化各个服务,即,应用程序APP必须获取各个服务的对象,通过调用这些服务的接口配置系统参数,从而调用系统资源。如图1所示,以第三方应用程序为例,若某第三方应用程序需要调用系统资源1和系统资源2以实现系统加速,则需要该应用程序首先获取可提供系统资源1的系统服务1,向该系统服务1发送系统加速指令1,通过该系统服务1获取系统资源1代理,进行系统资源1参数配置,并将配置后的系统资源1作为加速结果返回至该第三方应用程序,第三方应用程序接收到加速结果后完成对系统资源1的调用,然后采用相同流程调用系统资源2,从而完成多个系统资源的调用。
上述调用方法中,第三方应用程序调用系统资源时,需分别调用各系统资源对应的系统服务,通过系统服务的接口获取系统资源,且各系统资源的获取均需该第三方应用程序参与执行,造成系统资源调用流程繁琐且十分复杂,导致系统性能降低。
鉴于此,本发明实施例提供一种调用系统资源的服务框架及方法,应用于Android系统的终端设备中。该服务框架在Android原生系统的基础上,添加了相对独立的一套服务接口,提供给应用层的应用程序。应用层无需关心底层资源调用和加速功能的具体实现以及与原生系统的资源分配,能够极大提高应用层开发的自由度和便捷性。同时该服务框架采用分层思想搭建,可以快速地在不同硬件平台进行迁移适配,极大地降低了移植的复杂度。
实施例1
本发明实施例提供一种调用系统资源的服务框架,如图2所示,该服务框架包括:
应用框架核心服务层201,用于收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源,根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP;
分别与所述应用框架核心服务层连接的系统服务层202和Native服务层203,用于根据所述应用框架核心服务层的指示启动资源引擎调用系统资源,并将调用结果发送到所述应用框架核心服务层。
应用框架核心服务层提供的服务名为com.android.turbo,该服务对外给应用程序APP提供API接口,对内连接Native层服务和系统层服务,通过整合接口和功能调用逻辑,处理多应用调用的并发兼容和资源协调分配,对应用场景和系统状态进行监控和回馈调整,维护系统的稳定性。
应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者,应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。具体的,上述系统指示的APP的应用场景类型,为系统通过应用场景识别确定的,应用框架核心层根据系统的指示确定APP的应用场景类型,或者,服务框架例如服务框架中的应用框架核心层,根据调度请求对APP进行应用场景识别,确定对应的应用场景类型,或者,上述APP自身确定应用场景的应用场景类型,并通过调度请求发送到应用框架核心层,以使应用框架核心层根据调度请求确定APP的应用场景类型。
系统或服务框架确定应用场景类型时,根据预设的不同关键字与应用场景类型的映射关系,及根据调度请求确定的APP包名或界面名,通过关键字匹配确定APP对应的应用场景类型;或者,根据预设的不同APP的包名与应用场景类型的映射关系,确定APP对应的应用场景类型。
所述应用框架核心服务层还用于通过应用程序API接口,接收APP的调度请求及将调用结果返回到所述APP。具体的,所述应用框架核心服务层接收APP通过所述服务框架提供的应用程序API接口发送的调度请求,或者,所述应用框架核心服务层接收APP通过软件开发工具包SDK中的API接口发送的调度请求。应用框架核心服务层根据APP的调度请求调用相应的系统资源后,通过API接口将调用结果返回到所述APP。
服务框架提供两个接口库,分别为应用层使用的Jar包和Native层使用的SO库。应用层使用的Jar包对应的服务名为android.turbo.jar,Native层使用的SO库对应的服务名为android.hardware.turbo@1.0.so。上述接口库为应用程序APP提供调用接口。
所述应用框架核心服务层,还用于确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或Native服务层启动对应的资源引擎调用系统资源。
系统服务层提供的服务注册到服务管理器ServiceManager,提供的服务名为com.android.server.turboSupport.TurboSupportManagerService,该服务主要与引擎核心服务框架交互,实现软件相关的功能控制,例如实现系统动效控制和界面异步切换等功能。
Native服务层提供的服务名为android.hardware.turbo@1.0-service,采用HAL接口定义语言(HIDL),系统在初始化进程启动时,会启动该服务。该服务实现硬件相关的功能控制,主要负责初始化各硬件功能,如中央处理器CPU核心调动、Linux进程调度、文件IO(输入/输出)加速等。通过HIDL服务管理中心hwServiceManager可以获取该服务的Binder接口,接口定义在接口库android.hardware.turbo@1.0.so内。
系统服务层或Native服务层根据应用框架核心服务层的指示启动资源引擎调用系统资源,并将调用结果发送到应用框架核心服务层,或者,根据应用框架核心服务层的指示,与原生服务框架中的原生系统服务层或Native服务层对接,启动对应的资源引擎调用系统资源。
参照图3,为本发明实施例提供的一种调用系统资源的系统架构示意图。应用程序APP(图中未示出)在调用系统资源进行性能加速时,需要在对应的应用场景调用或启动合适的引擎,对各个资源做最适合当前应用场景的配置。如图所示,调用资源时,系统通过场景识别和适配引擎、卡顿识别引擎、日志引擎等引擎对应用场景进行识别确定应用场景类型,或者确定需要对系统资源进行配置或对性能进行提升时,将识别的应用场景类型发送到服务框架,服务框架通过应用框架核心服务层,根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源及调用系统资源的引擎,根据调用系统资源的资源引擎所属的服务层,通过应用框架核心服务层或系统服务层或本地Native服务层启动对应的资源引擎调用系统资源,并将调用结果返回到APP。
系统根据包名和用户行为必经路径添加调度的引擎,如游戏、APP启动、数据拷贝、界面切换等。上述调用系统资源的引擎包括中央处理器CPU引擎(频率、核心数、运行在大核或小核、提降频率参数、周期、调度策略等),图形处理器GPU引擎(频率、核心数等),内存引擎,分辨率引擎,IO引擎,输入Input引擎(报点速度、计算时间等),进程调度引擎(优先级、调度策略、时间片等),多媒体卡MMC引擎(频率、驱动参数等),应用程序无响应ANR引擎(超时策略),优先级Binder引擎,网页视图Webview引擎(提前加载和版本选择等),广播引擎(优先级插队、并行队列等),网络引擎(多态网络切换等),人工智能AI适配引擎(神经网络驱动、加速处理器APU、嵌入式神经网络处理器NPU等)等。上述引擎及图3中所示的引擎仅作为示例说明,实际服务框架中还可增加其他引擎或减少部分引擎。
服务框架将上述各引擎功能整合,形成普遍适用的场景加速接口即资源调用接口,能将需要配置的固定操作都抽象成一个接口完成,由应用框架核心层服务统一各引擎服务的对象,无需APP重复获取。APP只需调用API接口,应用框架核心层服务代替APP实现原本需要通过一系列操作才能获得的效果。服务框架完成调用资源的相应过程后,通过回调的方式返回调用结果至APP,因而不占用APP自身的时间。
本发明实施例提供的上述服务框架,通过应用框架核心服务层,接收应用程序APP的调度请求,确定APP当前应用场景对应的应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源,再根据调用系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到APP,解决了现有调用系统资源的方法存在的调用过程复杂,导致系统性能低的问题。
实施例2
参照图4,为本发明实施例提供的一种调用系统资源的方法示意图。如图所示,该方法包括:
步骤S401,通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源;
应用程序APP确定需要调用系统资源时,向服务框架的应用框架核心服务层发送调度请求,应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型。
作为一种可选的实施方式,应用框架核心服务层收到应用程序APP的调度请求时,接收系统指示的所述APP的应用场景类型。具体的,系统对APP的应用场景进行自动检测,确定其对应的应用场景类型并指示给应用框架核心服务层,应用框架核心服务层根据系统的指示确定应用场景类型。
系统对APP的应用场景进行自动检测,确定其对应的应用场景类型,可采用如下任一方式:
1)根据预设的不同关键字与应用场景类型的映射关系,及根据调度请求确定的APP包名或界面名,通过关键字匹配确定APP对应的应用场景类型。
系统预先设置不同关键字与应用场景类型的映射关系,其中不同关键字可以从预先搜集的不同应用场景包名或界面名中提取。系统根据APP发送的调度请求或者根据前台活跃APP的包名或界面名称,通过关键字匹配,确定与APP的包名或界面名相匹配的关键词,进而确定对应的应用场景类型。例如,某APP当前应用场景对应的包名为XX地图(com.XX.XXMap)时,通过关键字匹配确定该包名对应的关键字Map,进而根据预设的关键字与应用场景类型的对应关系,确定与关键字Map对应的导航场景为该APP当前应用场景对应的应用场景类型。
2)根据预设的不同APP的包名与应用场景类型的映射关系,确定APP对应的应用场景类型。
系统预先设置不同APP的包名与应用场景类型的映射关系。进行场景类型识别时,根据APP发送的调度请求或者根据前台活跃APP的包名,及上述映射关系,确定对应的应用场景类型。具体实施时,还可以建立一个白名单,将预先搜集的APP的包名对应到不同的应用场景类型,添加到该白名单中。当APP启动时,通过自动检测APP对应的包名是否在白名单中,就能确定对应的应用场景类型。
作为另一种可选的实施方式,应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。具体的,APP可以通过自身对应用场景对应的应用场景类型进行识别判断等,并将自身确定的应用场景类型携带在调度请求中发送到服务框架。应用框架核心服务层确定收到的APP的调度请求中携带的应用场景类型为该APP的应用场景对应的应用场景类型。其中,APP发送调度请求时,可以通过服务框架提供的API接口进行发送,或者通过APP中的软件开发工具包SDK中的API接口进行发送。上述APP中的SDK中包括预定义的API接口。
上述应用框架核心服务层通过应用程序API接口,接收APP的调度请求及将调用结果返回到所述APP。具体的,应用框架核心服务层可以接收APP通过软件开发工具包SDK中的API接口发送的调度请求,或者,接收APP通过服务框架提供的应用程序API接口发送的调度请求。
步骤S402,根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP。
应用框架核心服务层通过上述步骤确定应用场景类型后,根据预设的应用场景类型与系统资源的对应关系、系统资源与资源引擎的对应关系,确定应用场景类型对应的调用系统资源的资源引擎。
根据调用系统资源的资源引擎所属的服务层,通过自身或系统服务层或Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP。具体的,应用框架核心服务层确定调用系统资源的资源引擎所属的服务层为自身时,通过自身启动资源引擎调用系统资源,确定调用系统资源的资源引擎所属的服务层为系统服务层或Native服务层时,指示系统服务层或Native服务层启动资源引擎调用系统资源,系统服务层或Native服务层根据应用框架核心服务层的指示启动对应的资源引擎调用对应的系统资源,并将调用结果返回到应用框架核心服务层。
应用框架核心服务层确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或Native服务层启动对应的资源引擎调用系统资源。还可以分别通过系统服务层指示原生服务框架中的原生系统服务层,通过Native服务层指示原生服务框架中的原生Native服务层启动对应的资源引擎调用系统资源。
应用框架核心服务层接收各服务层返回的调用结果,并在需要调用的系统资源全部调用完成后,将调用结果返回给APP。
参照图5,为本发明实施例提供的利用服务框架调用系统资源的方法示意图。服务框架采用接口隔离思想,将各引擎功能整合,形成普遍使用的调用接口,对外提供的接口都是统一的,不同的硬件平台都通过预先定义的接口进行兼容。移植的时候只需要完成系统层和硬件层的功能接口实现即可。如图所示,以第三方应用程序为例,应用程序调用系统资源1和系统资源2对应用场景进行加速时,仅需向服务框架发送一个场景加速指令作为调用请求,以使服务框架根据该场景加速指令进行系统资源的调用。服务框架根据确定的应用场景类型,确定需调用的系统资源1和系统资源2,并获取系统资源1代理和系统资源2代理,启动资源引擎调用系统资源1和系统资源2,对系统资源1和系统资源2的参数进行配置,并将系统资源1和系统资源2的调用结果作为加速结果返回给APP,从而完成多个系统资源的调用。
具体实施时,服务框架采用上述提供的方法进行系统资源1和系统资源2的调度,这里不再赘述。
本发明实施例提供调用系统资源的服务框架通过三个服务层的服务,分别与应用层、系统服务层和系统硬件层进行交互,完成系统资源的调度,并采用原生的Binder机制进行通信,能保证通信速度和通信的稳定性。调用系统资源时,接口调用和业务逻辑都在服务框架的应用框架核心服务层整合,从而形成可选的多场景的系统资源调用方案,将多引擎场景化的API接口提供到应用层,应用层无需关心调用逻辑和资源分配,因此降低了应用程序开发的难度,提升了系统的稳定性。
根据本发明实施例提供的上述调用系统资源的方法,通过构建独立于原生服务框架的调用系统资源的服务框架,并基于原生服务框架进行系统资源的调用,通过服务框架的应用框架核心服务层接收APP的调度请求,并确定调用的系统资源,根据调用系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并回调结果至APP,从而完成APP对系统资源的调用。解决了现有调用系统资源的方法存在的调用过程复杂,导致系统性能低的问题。
实施例3
以上对本发明中一种调用系统资源的方法进行说明,以下对调用系统资源的服务框架进行说明。
请参阅图6,本发明实施例提供一种调用系统资源的服务框架,包括:
系统资源确定模块601,用于通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源;
系统资源调用模块602,用于根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到所述APP。
可选地,所述系统资源确定模块通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,包括:
通过应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者
通过应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。
可选地,所述系统资源调用模块还用于:
通过应用框架核心服务层确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或Native服务层启动对应的资源引擎调用系统资源。
本申请实施例中提供的调用系统资源的服务框架可集成至Android系统的终端设备中,请参阅图7,本申请实施例中提供的服务框架应用的Android系统的终端设备的一个实施例包括:射频(Radio Frequency,RF)电路710、电源720、处理器730、存储器740、输入单元750、显示单元760、摄像头770、通信接口780、以及无线保真(Wireless Fidelity,WiFi)模块790等部件。
本领域技术人员可以理解,图7中示出的终端的结构并不构成对终端的限定,本申请实施例提供的终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对移动终端设备700的各个构成部件进行具体的介绍:
所述RF电路710可用于通信或通话过程中,数据的接收和发送。特别地,所述RF电路710在接收到基站的下行数据后,发送给所述处理器730处理;另外,将待发送的上行数据发送给基站。通常,所述RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。所述RF电路710可以包括上述实施例中图3中所示的部分或全部结构。
此外,RF电路710还可以通过无线通信与网络和其他终端通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobilecommunication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code DivisionMultiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
WiFi技术属于短距离无线传输技术,所述移动终端设备700通过WiFi模块790可以连接的接入点(Access Point,AP),从而实现数据网络的访问。所述WiFi模块790可用于通信过程中,数据的接收和发送。
所述移动终端设备700可以通过所述通信接口780与其他终端实现物理连接。可选的,所述通信接口780与所述其他终端的通信接口通过电缆连接,实现所述移动终端设备700和其他终端之间的数据传输。
由于在本申请实施例中,所述移动终端设备700能够实现通信业务,向其他联系人发送信息,因此所述移动终端设备700需要具有数据传输功能,即所述移动终端设备700内部需要包含通信模块。虽然图7示出了所述RF电路710、所述WiFi模块790、和所述通信接口780等通信模块,但是可以理解的是,所述移动终端设备700中存在上述部件中的至少一个或者其他用于实现通信的通信模块(如蓝牙模块),以进行数据传输。
例如,当所述移动终端设备700为手机时,所述移动终端设备700可以包含所述RF电路710,还可以包含所述WiFi模块790。
所述存储器740可用于存储软件程序以及模块。所述处理器730通过运行存储在所述存储器740的软件程序以及模块,从而执行所述移动终端设备700的各种功能应用以及数据处理,并且当处理器730执行存储器740中的程序代码后,可以实现本发明实施例图4中的部分或全部过程。
可选的,所述存储器740可以主要包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、各种应用程序(比如通信应用)以及进行WLAN连接的各个模块等;存储数据区可存储根据所述终端的使用所创建的数据等。
此外,所述存储器740可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述输入单元750可用于接收用户输入的数字或字符信息,以及产生与所述移动终端设备700的用户设置以及功能控制有关的键信号输入。
可选的,输入单元750可包括触控面板751以及其他输入终端752。
其中,所述触控面板751,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在所述触控面板751上或在所述触控面板751附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,所述触控面板751可以包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给所述处理器730,并能接收所述处理器730发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现所述触控面板751。
可选的,所述其他输入终端752可以包括但不限于功能键(比如音量控制按键、开关按键等)、轨迹球、操作杆等中的一种或多种。
所述显示单元760可用于显示由用户输入的信息或提供给用户的信息以及所述移动终端设备700的各种菜单。所述显示单元760即为所述移动终端设备700的显示系统,用于呈现界面,实现人机交互。
所述显示单元760可以包括显示面板761。可选的,所述显示面板761可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-EmittingDiode,OLED)等形式来配置。
进一步的,所述触控面板751可覆盖所述显示面板761,当所述触控面板751检测到在其上或附近的触摸操作后,传送给所述处理器730以确定触摸事件的类型,随后所述处理器730根据触摸事件的类型在所述显示面板761上提供相应的视觉输出。
虽然在图7中,所述触控面板751与所述显示面板761是作为两个独立的部件来实现所述移动终端设备700的输入和输入功能,但是在某些实施例中,可以将所述触控面板751与所述显示面板761集成而实现所述移动终端设备700的输入和输出功能。
所述处理器730是所述智能终端设备700的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在所述存储器740内的软件程序和/或模块,以及调用存储在所述存储器740内的数据,执行所述移动终端设备700的各种功能和处理数据,从而实现基于所述终端的多种业务。所述处理器730可以为上述实施例中的主控芯片,也可以为其他形式。
可选的,所述处理器730可包括一个或多个处理单元。可选的,所述处理器730可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到所述处理器730中。
所述摄像头770,用于实现所述移动终端设备700的拍摄功能,拍摄图片或视频。
所述移动终端设备700还包括用于给各个部件供电的电源720(比如电池)。可选的,所述电源720可以通过电源管理系统与所述处理器730逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
尽管未示出,所述移动终端设备700还可以包括至少一种传感器、音频电路等,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,包括指令,当其在终端设备上运行时,使得终端设备执行上述实施例提供的调用系统资源的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
以上对本申请所提供的技术方案进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种调用系统资源的服务框架,所述服务框架中包括应用框架核心服务层、系统服务层和本地Native服务层;其特征在于,包括:
所述应用框架核心服务层,用于收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源,根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源;确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或原生Native服务层启动对应的资源引擎调用系统资源;或者,确定资源引擎所属的服务层属于原生服务框架中的服务层时,通过系统服务层指示原生服务框架中的原生系统服务层,通过本地Native服务层指示原生服务框架中的原生Native服务层启动对应的资源引擎调用系统资源;将系统服务层或本地Native服务层返回的调用结果返回到所述APP;
分别与所述应用框架核心服务层连接的系统服务层和本地Native服务层,用于根据所述应用框架核心服务层的指示启动资源引擎调用系统资源,并将调用结果发送到所述应用框架核心服务层。
2.根据权利要求1所述的服务框架,其特征在于,所述应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,包括:
应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者
应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。
3.根据权利要求2所述的服务框架,其特征在于,所述应用框架核心服务层收到APP的调度请求时,所述根据调度请求确定所述APP的应用场景类型,包括:
根据预设的不同关键字与应用场景类型的映射关系,及根据调度请求确定的APP包名或界面名,通过关键字匹配确定APP对应的应用场景类型;或者
根据调度请求确定APP包名,根据预设的不同APP的包名与应用场景类型的映射关系,确定所述APP对应的应用场景类型。
4.根据权利要求1所述的服务框架,其特征在于,
所述应用框架核心服务层用于通过应用程序API接口,接收APP的调度请求及将调用结果返回到所述APP。
5.根据权利要求4所述的服务框架,其特征在于,
所述应用框架核心服务层还用于接收APP通过软件开发工具包SDK中的API接口发送的调度请求;或者
所述应用框架核心服务层还用于接收APP通过所述服务框架提供的应用程序API接口发送的调度请求。
6.一种调用系统资源的方法,其特征在于,包括:
通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,并根据不同应用场景类型与系统资源的对应关系,确定调用的系统资源;
根据调用所述系统资源的资源引擎所属的服务层,通过自身或系统服务层或本地Native服务层启动资源引擎调用系统资源,并将调用结果返回到应用框架核心服务层;其中,所述应用框架核心服务层,所述系统服务层和所述本地Native服务层包含于服务框架;
通过应用框架核心服务层确定资源引擎所属的服务层属于原生服务框架中的服务层时,指示原生服务框架中的原生系统服务层或原生Native服务层启动对应的资源引擎调用系统资源;或者
通过应用框架核心服务层确定资源引擎所属的服务层属于原生服务框架中的服务层时,通过系统服务层指示原生服务框架中的原生系统服务层,通过本地Native服务层指示原生服务框架中的原生Native服务层启动对应的资源引擎调用系统资源;
通过应用框架核心服务层将系统服务层或本地Native服务层返回的调用结果返回给所述APP。
7.根据权利要求6所述的方法,其特征在于,所述通过应用框架核心服务层收到应用程序APP的调度请求时,确定应用场景类型,包括:
通过应用框架核心服务层收到应用程序APP的调度请求时,接收系统根据调度请求确定并指示的所述APP的应用场景类型;或者
通过应用框架核心服务层收到应用程序APP的调度请求时,根据调度请求确定所述APP的应用场景类型。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求6~7任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010206560.8A CN111414265B (zh) | 2020-03-23 | 2020-03-23 | 一种调用系统资源的服务框架及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010206560.8A CN111414265B (zh) | 2020-03-23 | 2020-03-23 | 一种调用系统资源的服务框架及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414265A CN111414265A (zh) | 2020-07-14 |
CN111414265B true CN111414265B (zh) | 2024-03-19 |
Family
ID=71491274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010206560.8A Active CN111414265B (zh) | 2020-03-23 | 2020-03-23 | 一种调用系统资源的服务框架及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414265B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113378166B (zh) * | 2021-06-25 | 2024-05-31 | 北京百度网讯科技有限公司 | 调用操作系统的应用程序接口api的方法和装置 |
CN113316259B (zh) * | 2021-06-29 | 2022-04-01 | 北京科技大学 | 一种支持ai引擎的下行无线资源调度方法及装置 |
CN115599513B (zh) * | 2022-04-07 | 2023-11-03 | 荣耀终端有限公司 | 资源调度方法及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833465A (zh) * | 2010-04-23 | 2010-09-15 | 中国科学院声学研究所 | 一种支持应用程序动态加载运行的嵌入式系统 |
CN103430151A (zh) * | 2012-07-06 | 2013-12-04 | 华为终端有限公司 | 一种资源配置方法及装置 |
CN107479972A (zh) * | 2017-07-31 | 2017-12-15 | 广东欧珀移动通信有限公司 | 资源配置方法及相关产品 |
CN107547744A (zh) * | 2017-08-31 | 2018-01-05 | 广东欧珀移动通信有限公司 | 资源配置方法及相关产品 |
CN108304168A (zh) * | 2018-02-27 | 2018-07-20 | 苏州商合仕物联科技有限公司 | 一种边缘计算机操作系统 |
CN109615081A (zh) * | 2018-09-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种模型预测系统及方法 |
-
2020
- 2020-03-23 CN CN202010206560.8A patent/CN111414265B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833465A (zh) * | 2010-04-23 | 2010-09-15 | 中国科学院声学研究所 | 一种支持应用程序动态加载运行的嵌入式系统 |
CN103430151A (zh) * | 2012-07-06 | 2013-12-04 | 华为终端有限公司 | 一种资源配置方法及装置 |
CN107479972A (zh) * | 2017-07-31 | 2017-12-15 | 广东欧珀移动通信有限公司 | 资源配置方法及相关产品 |
CN107547744A (zh) * | 2017-08-31 | 2018-01-05 | 广东欧珀移动通信有限公司 | 资源配置方法及相关产品 |
CN108304168A (zh) * | 2018-02-27 | 2018-07-20 | 苏州商合仕物联科技有限公司 | 一种边缘计算机操作系统 |
CN109615081A (zh) * | 2018-09-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种模型预测系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111414265A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582472B (zh) | 一种微服务处理方法及设备 | |
US11025963B2 (en) | Data processing method, apparatus, and system for live streaming page | |
CN111414265B (zh) | 一种调用系统资源的服务框架及方法 | |
WO2021052437A1 (zh) | 一种应用启动方法及电子设备 | |
CN111684778B (zh) | 应用功能的实现方法及电子设备 | |
CN102939579B (zh) | 绑定用户接口元素和粒度反映处理的方法和装置 | |
US20090234953A1 (en) | Apparatus and methods for integration of third party virtual private network solutions | |
CN110032512A (zh) | 一种小程序的调试方法、相关设备及终端 | |
CN111095199B (zh) | 一种加载应用的方法及终端设备 | |
CN114741008B (zh) | 分布式跨设备协同方法、电子设备及通信系统 | |
CN112130866A (zh) | 一种应用部署方法和相关装置 | |
CN108874554B (zh) | 信息通信方法及装置 | |
CN111078316B (zh) | 布局文件加载方法、装置、存储介质及电子设备 | |
CN111135581B (zh) | 游戏更新的方法与装置 | |
CN108958807B (zh) | 一种终端系统启动方法及终端 | |
CN114327087A (zh) | 输入事件处理方法、装置、电子设备和存储介质 | |
CN107463395B (zh) | 组件调用方法及装置 | |
CN107463524A (zh) | 一种访问数据的方法及相关设备 | |
CN111104281A (zh) | 一种游戏性能监控方法、装置、系统及存储介质 | |
CN111897726B (zh) | 异常定位方法、装置、存储介质及移动终端 | |
CN111176708B (zh) | 一种sdk文件处理方法、装置、电子设备及存储介质 | |
CN114564700A (zh) | 管理不可信应用程序通信的方法及相关装置 | |
CN112891933B (zh) | 一种游戏服务启动方法和相关装置 | |
CN113760540B (zh) | 一种任务处理方法和相关装置 | |
WO2023109607A1 (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 |