CN121116560B - 一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法 - Google Patents
一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法Info
- Publication number
- CN121116560B CN121116560B CN202511657372.6A CN202511657372A CN121116560B CN 121116560 B CN121116560 B CN 121116560B CN 202511657372 A CN202511657372 A CN 202511657372A CN 121116560 B CN121116560 B CN 121116560B
- Authority
- CN
- China
- Prior art keywords
- container
- application
- task
- switching
- thumbnail
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,在宿主机中分配DRM容器内存供容器应用和任务切换器共享,以存储缩略图纹理,启动容器管理模块管理容器应用元数据,在容器内启动应用监测器监测纹理变化,通过容器管理模块、任务切换器及容器间的交互实现容器应用在启动、切换、退出时以原生应用的方式进行任务切换,通过容器管理模块、任务切换器及应用监测器的交互实现对容器应用变化的主动响应。
Description
技术领域
本发明属于计算机图形处理技术领域,具体涉及一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法。
背景技术
随着鸿蒙系统生态的扩展,通过容器技术运行安卓或Linux应用已成为提升系统兼容性的核心方案。然而,现有任务切换器在集成容器应用时存在诸多技术瓶颈,具体表现为:性能瓶颈显著,在现有方案中容器应用缩略图需经容器显存到CPU内存再到鸿蒙显存的多轮拷贝,单张1080P缩略图传输耗时可达30-50ms,当容器内运行5个以上应用时,任务切换器启动延迟超过200ms,远超用户可接受的100ms阈值;硬件适配不足,不同OpenHarmony设备的GPU能力差异可达10倍以上,固定分辨率和渲染参数会导致低端设备卡顿、高端设备资源浪费;缓存策略简单,现有缓存仅依赖内存临时存储,未结合用户行为预测,导致高频切换应用仍需重新加载缩略图的问题,重复渲染耗时占总切换时间的40%以上;资源调度粗放,未考虑GPU负载和内存压力动态调整策略,在多任务场景下易出现渲染阻塞或内存溢出;动画连贯性差,动画与渲染不同步,切换过程中易出现掉帧和视觉撕裂,破坏用户操作的流畅感知。
综上所述,如何通过硬件感知适配、智能资源管理、底层渲染优化等方式,实现容器应用缩略图在任务切换器中的高性能、高流畅度展示已成为迫切需要解决的技术问题。
发明内容
有鉴于此,本发明提供了一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,实现了对容器应用与原生应用的统一、高性能任务管理。
本发明提供的一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,具体包括以下步骤:
宿主机分配DRM容器内存,建立容器管理模块管理容器应用的元数据,包括容器PID、容器应用ID及缩略图FD;
容器应用启动时容器根据容器PID及容器应用ID生成第一全局ID,创建缩略图FD构建元数据,向容器管理模块发送容器应用注册事件,将缩略图写入DRM容器内存;容器管理模块将缩略图FD转换为第一全局FD,在全局任务列表中添加容器任务项,将实例发送至任务切换器;任务切换器在启动完成后采用第一全局FD从DRM容器内存获取缩略图,更新最近使用应用列表渲染列表条目;
任务切换器捕获容器应用选择事件,获取第一全局ID及状态标识,向容器管理模块发送切换前台请求;容器管理模块完成状态转换更新全局任务列表,向任务切换器发送切换完成事件;任务切换器获取缩略图,置顶列表条目;
任务切换器捕获容器应用退出事件,获取第一全局ID及状态标识,向容器管理模块发送第一退出请求;容器管理模块根据第一全局ID向容器发送第二退出请求,将状态标识设为冻结;容器结束容器应用进程,向容器管理模块发送容器应用注销请求;容器管理模块更新全局任务列表,向任务切换器发送退出完成事件;任务切换器更新列表条目及最近使用应用列表,调整列表条目顺序。
进一步地,在容器中启动应用监测器监测容器应用的纹理变化,当监测到容器应用的纹理发生变化时,通过DRM容器内存的控制信号量向任务切换器发送包含第一全局ID的容器应用更新事件;任务切换器捕获容器应用更新事件,从最近使用应用列表中获取容器应用的状态标识,若状态标识为前台运行则根据第一全局FD从DRM容器内存获取容器应用的缩略图,渲染对应的列表条目完成更新;若状态标识为后台挂起则忽略该事件。
进一步地,所述元数据还包括容器类型。
进一步地,任务切换器为容器应用渲染生成列表条目时,根据容器应用所在容器的容器类型,为从DRM容器内存获取的缩略图添加视觉区分标识。
进一步地,任务切换器为容器应用渲染生成列表条目时,根据容器应用所在容器的容器类型,实现相同容器类型的容器应用分组展示。
进一步地,任务切换器记录容器应用切换前的显示位置,执行缩小淡出动画,动画结束后再执行到目标应用的切换,切换完成后执行放大淡入动画。
进一步地,宿主机启动阶段通过内核层GPU驱动接口采集核心规格、特性支持及性能指标的硬件参数,据此将硬件划分为不同级别,基于硬件级别动态调整缩略图的核心参数;其中,核心规格包括型号、核心数量及频率,特性支持包括纹理压缩格式、最大纹理尺寸及过滤支持,性能指标包括像素填充率及纹理处理能力,缩略图的核心参数包括分辨率、压缩格式、Mipmap等级及更新频率。
进一步地,宿主机运行时实时监测GPU负载,当负载持续过高时触发缩略图降级机制,负载降低后恢复原配置。
进一步地,在DRM容器内存中加入多层权限控制,在鸿蒙系统的SELinux策略中增加容器图形资源访问规则,在DRM管理器中增加每次纹理访问的权限验证。
进一步地,构建GPU纹理缓存、CPU内存缓存到磁盘持久化缓存的三级缓存架构,GPU纹理缓存直接供渲染管线渲染缩略图使用,采用淘汰策略且优先级最高;CPU内存缓存存储压缩后的缩略图像素数据,作为中间层;磁盘持久化缓存存储长期有效缩略图,采用基于访问频率和时间的淘汰策略。
有益效果
本发明在宿主机中分配DRM容器内存供容器应用和任务切换器共享,以存储缩略图纹理,启动容器管理模块管理容器应用元数据,在容器内启动应用监测器监测纹理变化,通过容器管理模块、任务切换器及容器间的交互实现容器应用在启动、切换、退出时以原生应用的方式进行任务切换,通过容器管理模块、任务切换器及应用监测器的交互实现对容器应用变化的主动响应。
附图说明
图1为本发明提供的一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法的流程示意图。
具体实施方式
下面结合附图列举实施例,对本发明进行详细描述。
鸿蒙系统中,Ability管理服务(Ability Manager Service,AMS)是应用管理过程中最核心的系统服务。它负责Ability的启动、切换、暂停、恢复、终止,管理Ability的生命周期,记录Ability的启动顺序和层级关系,处理进程的创建、调度和回收。与任务切换器(Recent Tasks)交互,提供运行中任务的列表和快照。本发明通过对Ability管理服务及任务切换器进行修改,实现容器应用原生方式的切换。
本发明提供的一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,其核心思想是:在宿主机中分配DRM容器内存供容器应用和任务切换器共享,以存储缩略图纹理,启动容器管理模块管理容器应用元数据,在容器内启动应用监测器监测纹理变化,通过容器管理模块、任务切换器及容器间的交互实现容器应用在启动、切换、退出时以原生应用的方式进行任务切换,通过容器管理模块、任务切换器及应用监测器的交互实现对容器应用变化的主动响应。
本发明提供的一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,流程如图1所示,具体包括以下步骤:
步骤1、在宿主机端,分配用于存储容器应用缩略图纹理的DRM容器内存,DRM容器内存与主机进程共享内存物理地址,DRM容器内存仅允许容器应用及任务切换器访问;在AMS中建立容器管理模块,用于采集、同步和查询容器应用的元数据,元数据包括容器PID、容器名称、容器类型、容器应用ID、缩略图纹理FD、纹理宽度及高度、窗口层级等。其中,容器管理模块,可通过扩展或修改AMS实现。
在容器中,启动应用监测器,用于监测容器应用纹理的变化情况。
步骤2、当容器应用启动时,容器根据容器PID及容器应用ID为容器应用生成全局唯一的标识,记为第一全局ID,为容器应用创建缩略图纹理FD,构建容器应用的元数据,再向容器管理模块发送容器应用注册事件,容器应用注册事件包含容器应用的第一全局ID及元数据,将缩略图纹理写入DRM容器内存;
当容器管理模块接收到容器应用注册事件后,解析容器应用的第一全局ID及元数据,将元数据中的缩略图纹理FD转换为第一全局FD后,在全局任务列表中添加容器任务项,容器任务项包含第一全局ID、容器PID、容器名称、容器类型、容器应用ID、第一全局FD、纹理宽度及高度、窗口层级及状态标识等信息,将状态标识设置为前台运行,创建容器应用实例,再将容器应用实例发送至任务切换器,其中,状态标识包括前台运行、后台挂起、冻结、已终止等;
任务切换器接收到容器应用实例,在容器应用启动完成后,采用第一全局FD从DRM容器内存获取容器应用的缩略图纹理,将该容器应用添加到最近使用应用列表的最前端,最近使用应用列表包含第一全局ID、容器类型、图标、名称、初始状态、缩略图纹理及状态标识等信息,再触发当前前台应用转入后台的视觉处理,使容器应用成为新的前台应用,并渲染生成容器应用对应的列表条目,该列表条目即为用户切换应用时使用的应用缩略图。
当任务切换器捕获到容器应用选择事件时,获取被选中容器应用列表条目的第一全局ID及状态标识,记录当前前台应用的信息,向容器管理模块发送切换前台请求,切换前台请求包括容器应用标识、当前前台应用标识及切换原因;容器管理模块接收到切换前台请求,完成状态转换并更新全局任务列表后,向任务切换器发送切换完成事件;任务切换器接收到切换完成事件后,根据被选中容器应用及当前前台应用的第一全局FD从DRM容器内存获取容器应用的缩略图纹理,将被选中容器应用的列表条目置顶,完成被选中容器应用的界面渲染。
当任务切换器捕获到容器应用退出事件时,获取容器应用列表条目的第一全局ID及状态标识,向容器管理模块发送第一退出请求,退出请求包括容器应用标识及退出原因;容器管理模块接收到第一退出请求后,根据第一全局ID向容器应用所在容器发送第二退出请求,将容器应用的状态标识设置为冻结;容器接收到第二退出请求后,结束容器应用进程,并向容器管理模块发送容器应用注销请求;容器管理模块接收到容器应用注销请求后,将容器应用从全局任务列表中删除,并向任务切换器发送退出完成事件;任务切换器捕获到退出完成事件时,根据第一全局ID将容器应用从列表条目及最近使用应用列表中删除,并调整列表条目的顺序。
当应用监测器监测到容器应用的纹理发生变化时,通过DRM容器内存的控制信号量向任务切换器发送包含第一全局ID的容器应用更新事件;当任务切换器捕获到容器应用更新事件时,从最近使用应用列表中获取容器应用的状态标识,若状态标识为前台运行则根据第一全局FD从DRM容器内存获取容器应用的缩略图纹理,渲染对应的列表条目完成更新;若状态标识为后台挂起则忽略该事件。
为了进一步地提升用户体验,在任务切换器为容器应用渲染生成列表条目时,根据容器应用所在容器的容器类型,为从DRM容器内存获取容器应用的缩略图纹理添加视觉区分标识,例如,视觉区分标识为容器标识边框,通过不同颜色的边框区分不同容器。
此外,在任务切换器为容器应用渲染生成列表条目时,还可根据容器应用所在容器的容器类型,实现同类容器类型的容器应用分组展示,即将容器类型相同的容器应用合并为一个分组条目,通过折叠图标或线条关联的方式分组,用户点击即可展开所有实例,以增强用户识别度。
进一步地,为使用户对容器应用与主机应用有一致的体验,本发明在容器应用切换时增加了与主机应用相同的过渡动画,具体为:任务切换器记录容器应用切换前的显示位置,执行缩小淡出动画,动画结束后再执行到目标应用的切换,切换完成后执行放大淡入动画。
进一步地,为避免频繁查询系统服务,在任务模型(TaskModel)中增加了数据缓存和更新监听机制,具体为:若数据缓存超时,则重新获取容器应用的元数据;注册任务变化监听,在容器应用变化时,重新获取容器应用的元数据。通过限时缓存减少系统服务查询次数,结合事件监听确保数据实时性,有效提升了查询效率。
进一步地,为防止容器应用崩溃导致的元数据残留,本发明采用心跳机制检测容器应用的运行状态,周期性地检查容器进程的存活状态,并清除已崩溃容器应用的元数据。通过进程存活检测和元数据自动清理,能够避免容器应用崩溃导致的资源泄露。
进一步地,为防止容器应用越权访问鸿蒙系统的图形资源,本发明在DRM容器内存中加入多层权限控制:在鸿蒙系统的SELinux策略中新增容器图形资源访问规则,在DRM管理器中增加每次纹理访问的权限验证。
此外,为了解决不同硬件平台下容器应用缩略图的性能与画质失衡问题,本发明实现了基于硬件分级的自适应图形资源管理,通过动态适配GPU能力实现差异化优化,具体为:
系统启动阶段通过内核层GPU驱动接口采集核心规格(如型号、核心数量、频率等)、特性支持(如纹理压缩格式、最大纹理尺寸、过滤支持等)、性能指标(如像素填充率、纹理处理能力)等硬件参数,据此将硬件划分为不同级别;并基于硬件级别动态调整缩略图的核心参数(包括分辨率、压缩格式、Mipmap等级、更新频率等),在画质可接受范围内平衡资源占用与性能。同时,运行时通过性能监测模块实时监测GPU负载,当负载持续过高时触发降级机制(如降低分辨率、关闭Mipmap、简化压缩格式),负载降低后自动恢复原配置,实现资源利用与性能需求的动态平衡。
为了解决缩略图重复加载耗时问题,进一步降低缩略图获取延迟,本发明构建了GPU纹理缓存、CPU内存缓存、磁盘持久化缓存的三级缓存架构:GPU纹理缓存直接供渲染管线使用,采用特定淘汰策略且优先级最高;CPU内存缓存存储压缩后的像素数据,作为中间层;磁盘持久化缓存存储长期有效缩略图,采用基于访问频率和时间的淘汰策略。
实施例
本实施例以OpenHarmony为例,采用本发明提供的一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,通过修改OpenHarmony原生组件实现容器应用缩略图在任务切换器中的高效集成与展示,涉及OpenHarmony操作系统的应用管理、图形渲染优化、跨系统资源调度及用户交互体验增强,尤其针对容器应用在OpenHarmony任务切换器中的高效展示与流畅切换场景,实现了OpenHarmony上进行任务切换时可无缝融合容器内运行的应用,具体过程包括:
S1、建立容器与OpenHarmony与容器的图形资源共享通道。
OpenHarmony的图形系统底层基于DRM(Direct Rendering Manager)架构,原生仅支持系统内进程间的纹理共享。为实现容器(如安卓容器、Linux容器)与OpenHarmony的图形资源共享,需对图形子系统进行深度扩展,构建安全、高效的跨容器纹理共享机制。扩展原生DRM:直接修改OpenHarmony的DRM驱动层,而非新增用户态代理,性能损耗降低至5%以内。
S1.1、扩展DRM驱动的容器共享内存支持:OpenHarmony的DRM管理器(继承自Linux)负责管理显卡资源和内存分配。原生DRM仅允许同一系统内的进程通过文件描述符(FD)共享缓冲区,需修改其支持跨容器的共享权限:
S1.1.1、新增容器共享内存区域类型:在DRM内存分配接口中增加DRM_MEMORY_CONTAINER类型,用于容器应用的纹理存储。该区域与系统进程共享内存物理地址,通过MMU页表隔离实现权限控制。
S1.1.2、实现跨容器FD传递机制:容器进程运行在独立的PID命名空间,无法直接使用OpenHarmony的进程间FD传递机制。修改ipc_skeleton模块,增加容器FD转换接口,跨命名空间的FD转换机制,突破Linux PID命名空间限制,实现容器与OpenHarmony的纹理句柄共享,相比传统Socket传输减少3次数据拷贝。
S1.2、设计双向纹理更新通知机制。
容器应用的UI实时变化,需建立缩略图更新的实时通知机制,避免任务切换器显示过时内容:
S1.2.1、注册容器纹理回调接口,在图形调度器(GraphicScheduler)中增加容器纹理更新回调注册。
S1.2.2、容器端更新触发机制,容器运行时(如ohos_container进程)在缩略图变化时(如每16ms或UI重绘后),通过共享内存中的控制块发送信号。
S1.2.3、OpenHarmony侧事件监听:任务切换器通过PollFd监听容器事件,收到通知后调用注册的回调函数更新纹理。
S1.3、实现安全的权限隔离机制,为防止容器应用越权访问OpenHarmony的图形资源,需在共享通道中加入多层权限控制,多层次安全隔离结合SELinux策略、动态权限验证,确保容器无法访问未授权的图形资源,符合OpenHarmony的安全架构:
S1.3.1、基于SELinux的访问控制:在OpenHarmony的SELinux策略(system/security/selinux/policy/ohos.te)中新增容器图形资源访问规则。
S1.3.2、动态权限验证:在DRM管理器中增加每次纹理访问的权限验证。
S2、实现容器应用的元数据管理服务。
OpenHarmony的应用元数据由ability_manager_service统一管理,但原生服务仅支持OpenHarmony应用。需扩展该服务,增加容器应用元数据的采集、同步和查询能力,为任务切换器提供统一的数据接口。
S2.1、扩展ability_manager_service的容器应用管理模块建立容器管理模块:在ability_manager_service中新增ContainerAppManager子模块,负责容器应用信息的全生命周期管理。原生服务扩展:直接在ability_manager_service中新增容器管理模块,而非独立服务,确保与原生应用管理的一致性和数据访问效率:
S2.1.1、容器应用元数据结构设计:定义包含容器特有信息的数据结构,与原生应用元数据保持兼容。统一数据模型:继承原生AppInfo结构,确保任务切换器可无缝处理容器应用和原生应用数据。
S2.1.2、容器应用注册与注销机制。
S2.1.2.1、容器启动应用时,通过RegisterContainerApp接口向ability_manager_service注册元数据。
S2.1.2.2、当容器应用退出时,通过UnregisterContainerApp注销。
S2.2、容器应用状态同步,容器应用的状态(如焦点变化、窗口大小调整)需实时同步至ability_manager_service,确保任务切换器显示准确:
S2.3、状态更新接口:提供细粒度的状态更新接口,避免全量元数据传输。
S2.4、心跳检测机制:为防止容器崩溃导致的元数据残留,实现周期性心跳检测,心跳检测与自动清理:通过进程存活检测和元数据自动清理,避免容器崩溃导致的资源泄露,符合OpenHarmony的稳定性要求。
S2.5、面向任务切换器的元数据查询接口:任务切换器需要高效查询容器应用元数据,需实现批量查询和过滤能力:
S2.5.1、批量查询接口:支持按容器类型、活跃状态等条件过滤查询。
S2.5.2、缩略图纹理句柄获取接口:提供安全的纹理FD获取接口,内部进行权限验证。
S3、扩展任务切换器的应用数据获取逻辑。
OpenHarmony的任务切换器原生仅从ability_manager_service获取OpenHarmony应用数据。需修改其数据获取逻辑,整合容器应用数据,并在UI层实现统一展示。
S3.1、修改任务切换器的数据提供者:任务切换器的数据提供者TaskModel负责从系统服务获取应用数据,需扩展其支持容器应用:
S3.1.1、整合原生与容器应用数据:在TaskModel中新增容器应用数据获取逻辑,并与原生应用数据合并,数据模型统一,将容器应用数据转换为与原生应用一致的TaskInfo结构,使任务切换器的大部分逻辑无需修改,兼容性提升。
S3.1.2、实现数据缓存与更新机制:为避免频繁查询系统服务,在TaskModel中增加数据缓存和更新监听,缓存与监听结合,通过限时缓存减少系统服务查询次数,结合事件监听确保数据实时性,提升查询效率。
S3.2、修改任务切换器的UI渲染逻辑:任务切换器的UI组件TaskSwitcherComponent需支持容器应用缩略图的渲染,并添加视觉区分标识,视觉区分与分组:通过边框颜色、徽章和分组展示,清晰区分应用来源。
S3.2.1、扩展缩略图渲染组件:修改ThumbnailComponent以支持从纹理FD渲染容器应用缩略图。
S3.2.2、实现容器应用分组展示:在任务列表中按容器类型分组展示,增强用户识别度。
S3.3、实现容器应用的切换交互逻辑:任务切换器需支持容器应用的选择与切换,需扩展交互处理逻辑,统一交互体验:容器应用与原生应用采用相同的切换动画和交互逻辑:
S3.3.1、容器应用选择处理:修改任务点击事件处理,支持激活容器应用。
S3.3.2、平滑过渡动画:为容器应用切换添加与原生应用一致的过渡动画,确保体验统一。
S4、基于硬件分级的自适应图形资源管理。
本步骤旨在解决不同硬件平台下容器应用缩略图的性能与画质失衡问题,通过动态适配GPU能力,实现低端设备保流畅、高端设备保画质的差异化优化。
S4.1、GPU硬件能力分级机制。
系统启动阶段,通过内核层的GPU驱动接口(如Vulkan的vkGetPhysicalDeviceProperties)采集硬件参数,包括:
核心规格:GPU型号(如Mali-G52、Adreno619)、核心数量、频率范围;
特性支持:是否支持ASTC/ETC2等纹理压缩格式、最大纹理尺寸、是否支持anisotropic过滤;
性能指标:像素填充率(PPS)、纹理处理能力(TAPS)。
基于上述参数,将硬件划分为三级:
旗舰级(Tier3):支持ASTC4x4压缩、最大纹理尺寸≥8192、像素填充率≥1000MP/s(如搭载Mali-G710的设备);
进阶级(Tier2):支持ASTC12x12压缩、最大纹理尺寸≥4096、像素填充率500-1000MP/s(如搭载Mali-G57的设备);
基础级(Tier1):仅支持ETC2压缩、最大纹理尺寸≤4096、像素填充率<500MP/s(如嵌入式设备的Mali-470)。
S4.2、动态缩略图参数配置:根据硬件分级,自动调整缩略图的核心参数,具体规则如下:
分辨率:旗舰级采用640×360(16:9),进阶级480×270,基础级320×180,确保不同设备的单张缩略图显存占用控制在500KB-2MB区间;
压缩格式:旗舰级优先使用ASTC12x12(压缩比8:1),进阶级使用ASTC16x16(压缩比10:1),基础级使用ETC2(压缩比4:1),在画质损失可接受范围内(PSNR≥30dB)降低显存占用;
Mipmap等级:旗舰级生成3级mipmap(原尺寸、1/2、1/4),进阶级2级,基础级1级,平衡缩放渲染时的性能与画质;
更新频率:旗舰级支持60fps实时更新,进阶级30fps,基础级15fps,匹配设备GPU处理能力。
S4.3、运行时动态调整策略:系统运行中,通过GpuLoadMonitor模块实时监测GPU负载(采样周期100ms),当负载持续500ms超过80%时,触发降级机制:
临时降低当前硬件级别的分辨率(如旗舰级降至480×270);
关闭mipmap生成;
降低压缩格式复杂度(如ASTC切换为ETC2)。
当负载低于30%并持续1s时,自动恢复原配置,确保资源利用与性能需求的动态平衡。
S4.4、多级缓存与智能预加载机制:本步骤通过构建三级缓存+用户行为预测的协同架构,解决容器应用缩略图的重复加载耗时问题,将缩略图获取延迟从100ms降至10ms以内。
三级缓存架构设计:采用GPU纹理缓存→CPU内存缓存→磁盘持久化缓存的三级存储策略,针对OpenHarmony内存受限特点设计的三级缓存容量配比(GPU:CPU:磁盘=1:2:10),平衡速度与容量,各层级特性如下:
GPU纹理缓存:存储VulkanImage对象,直接供渲染管线使用,容量限制为GPU总显存的5%(避免影响应用渲染),采用最近最少使用(LRU)淘汰策略,优先级最高(访问延迟<1ms);
CPU内存缓存:存储压缩后的像素数据(如ASTC编码的字节流),容量为设备内存的2%,作为GPU缓存与磁盘缓存的中间层,访问延迟约10ms;
磁盘持久化缓存:存储长期有效的缩略图(如用户高频使用的容器应用),路径为/data/service/el1/public/container_thumbnails/,容量限制为100MB,采用访问频率+时间衰减淘汰策略,访问延迟约50ms。
三级缓存的协同步骤如下:
读取时:优先查GPU缓存→未命中则查CPU缓存→未命中则查磁盘缓存→最终从容器共享显存加载;
更新时:同步更新GPU缓存和CPU缓存,异步写入磁盘缓存(避免阻塞UI线程)。
S4.5、用户行为预测:基于用户历史切换数据(存储最近300条记录,包含应用ID、切换时间、场景标签),构建马尔可夫链预测模型,结合用户行为的预测式预加载,将按需加载升级为预判加载有效提升命中率,核心逻辑如下:
状态定义:将当前前台应用作为状态S,下一个可能切换的应用作为状态S';
转移概率计算:统计历史数据中S→S'的出现次数,计算概率P(S→S')=次数(S→S')/总次数(S);
预测输出:对当前前台应用S,输出概率最高的前3个候选应用{S'1,S'2,S'3}。
预测模型的触发时机包括:
系统空闲时(CPU负载<20%);
用户完成一次切换后(如从应用A切换到应用B,立即预测B之后可能切换的应用);
屏幕点亮时(如用户解锁设备后)。
S4.6、智能预加载策略。根据预测结果,在后台线程(非UI线程)执行预加载,基于交互状态的预加载时机控制,避免预加载与用户操作的资源竞争,规则如下:
优先级:P(S→S')≥30%的应用优先加载,确保预加载资源的有效利用率(被实际使用的预加载资源占比)≥70%;
资源限制:预加载线程的CPU占用≤10%,网络带宽(如需远程拉取图标)≤500KB/s;
时机控制:避免在用户操作(如滑动、点击)时执行,通过InputMonitor模块检测用户交互状态,交互期间暂停预加载。
基于Vulkan的硬件加速合成渲染,本步骤通过全链路Vulkan加速和批量渲染优化,解决容器应用缩略图绘制效率低、同步性差的问题,将10个缩略图的渲染耗时从30ms降至5ms以内。
S4.7、全链路Vulkan渲染管道:构建从容器共享纹理→任务切换器渲染的端到端Vulkan管道,避免中间环节的CPU干预,端到端Vulkan管道实现容器纹理"零拷贝"接入,数据传输耗时降低90%,关键步骤如下:
S4.7.1、共享纹理接入:通过DRM句柄直接将容器显存中的纹理映射为VulkanImage(vkCreateImageFromDrm),省去传统方案中的glReadPixels或CPU内存拷贝;
S4.7.2、纹理视图适配:为容器纹理创建适配任务切换器渲染格式的ImageView(如将容器的RGBA8转换为ASTC压缩格式),通过Vulkan的vkCreateImageView实现GPU端格式转换;
S4.7.3、渲染管线配置:针对缩略图渲染特点定制图形管线:
顶点shader:处理缩放、旋转等几何变换;
片段shader:叠加容器应用标识(如角落的"安卓图标"水印);
混合模式:支持半透明叠加(如选中状态的高亮效果)。
S4.8、实例化渲染:采用Vulkan的实例化渲染vkCmdDrawIndexedInstanced,通过单次绘制调用渲染多个缩略图,实例化渲染将绘制调用次数减少90%,CPU-GPU交互开销降低60%,核心步骤如下:
S4.8.1、实例化数据结构:定义每个缩略图的独立参数(位置、大小、旋转角、纹理索引、透明度),存储在统一的实例缓冲区中;
S4.8.2、批量绑定:将所有缩略图的纹理通过DescriptorSet数组批量绑定,避免多次vkCmdBindDescriptorSets调用;
S4.8.3、单次绘制:通过vkCmdDrawIndexedInstanced指定实例数量(如10个缩略图),GPU自动为每个实例应用独立参数,绘制调用次数从N次降至1次。
S4.9、时间线同步机制:通过Vulkan时间线信号量(TimelineSemaphore)实现渲染与显示的精确同步,避免掉帧和撕裂,时间线信号量实现微秒级同步精度,帧率波动控制在1fps以内,关键步骤如下:
S4.9.1、信号量初始化:创建时间线信号量timelineSemaphore,初始值为0;
S4.9.2、渲染提交:每次渲染完成后,将信号量值递增(如从n→n+1),并提交至呈现队列;
S4.9.3、显示同步:显示控制器等待信号量值达到预期(如n+1)后再进行屏幕刷新,确保渲染完成的帧才会被显示;
S4.9.4、帧率控制:根据屏幕刷新率(如60Hz)计算目标帧时间(16.6ms),通过vkWaitSemaphores控制渲染节奏,避免GPU过度渲染。
动态资源调度与负载均衡,本步骤通过实时监测GPU负载和内存压力,动态调整渲染任务优先级和资源分配,解决高负载卡顿和内存溢出问题,确保系统在各种场景下的稳定性。
S4.10、GPU任务优先级调度:将任务切换器的渲染任务划分为三级优先级,并动态调整执行策略,基于任务可见性的优先级划分,确保用户关注内容优先获得资源:
最高优先级(P0):当前可见区域的缩略图渲染(用户正在查看的内容),必须在当前帧完成;
中优先级(P1):即将进入可见区域的缩略图(如滑动过程中),延迟1帧完成可接受;
低优先级(P2):不可见区域的缩略图更新(如后台预加载),可延迟多帧。
调度机制通过GpuTaskScheduler实现,具体步骤如下:
任务入队:新任务按优先级加入对应队列(P0/P1/P2);
负载监测:每10ms采样一次GPU负载(通过vkGetQueryPoolResults获取渲染耗时);
动态执行:
低负载(<50%):同时执行P0+P1+P2任务;
中负载(50%-80%):只执行P0+P1,P2任务延迟;
高负载(>80%):仅执行P0,P1/P2任务缓存至下一帧。
S4.11、渲染质量动态降级,渐进式质量降级策略,在性能与体验间实现平滑过渡:
当GPU负载持续高企(>80%达500ms),自动触发质量降级策略,按以下顺序调整参数(每级降低10-15%的GPU负载):
1.关闭抗锯齿(MSAA从4x降至1x);
2.降低缩略图分辨率(如从640×360降至480×270);
3.简化片段shader(移除容器标识水印、阴影等效果);
4.减少同时渲染的缩略图数量(仅渲染可见区域的前5个)。
当负载降至50%以下并持续1s,按相反顺序恢复质量。
S4.12、内存压力响应机制:通过OpenHarmony的`memmgrservice`接口监测系统内存压力(分级:正常、中等、高、紧急),并触发对应策略,结合OpenHarmony内存管理框架的多级压力响应,避免系统因缩略图缓存导致的内存溢出:
正常(<60%内存占用):维持三级缓存正常容量;
中等(60%-75%):清理P2任务关联的缓存,CPU缓存容量缩减30%;
高(75%-90%):进一步清理P1任务缓存,GPU缓存容量缩减50%,暂停磁盘缓存写入;
紧急(>90%):仅保留当前可见缩略图的GPU缓存,其他缓存全部清空,临时关闭预加载。
S4.13、多级LOD(细节层次)系统:根据缩略图在屏幕上的大小和距离,动态调整渲染细节,基于占屏比的LOD切换,在视觉质量可接受范围内显著降低渲染负载:
LOD等级划分:
LOD0(最高):原分辨率渲染,应用阴影、圆角等效果(适用于占屏比>50%的缩略图);
LOD1(中等):1/2分辨率渲染,简化阴影效果(适用于占屏比20%-50%);
LOD2(最低):1/4分辨率渲染,无附加效果(适用于占屏比<20%或边缘区域);
切换触发:当缩略图占屏比变化超过10%时,自动切换LOD等级,避免频繁波动。
动画与交互的流畅性优化,该步骤通过物理动画、帧预算管理和输入预测,解决任务切换过程中的掉帧和延迟感问题,确保动画帧率稳定在60fps,操作反馈延迟<100ms。
S4.14、基于物理的动画系统优化:采用弹簧-阻尼物理模型模拟缩略图切换动画(如滑动、缩放、淡入淡出),确保运动轨迹自然流畅,物理动画模型确保不同设备上的动画曲线一致,用户感知统一:
S4.14.1、核心参数构建:
刚度(Stiffness):控制动画的弹性,切换动画设为300(较硬,响应快);
阻尼(Damping):控制动画的减速效果,设为30(避免过度震荡);
质量(Mass):控制动画的惯性,设为1.0(均衡响应速度与平滑度);
S4.14.2、实时计算:每帧(16.6ms)通过以下公式更新位置:
acceleration=(targetPosition-currentPosition)*stiffness-velocity*damping
velocity+=acceleration*deltaTime
currentPosition+=velocity*deltaTime
S4.14.3、终止条件:当位置误差<0.5像素且速度<1像素/帧时,强制结束动画,避免微小震荡。
S4.15、帧预算管理机制:将每帧(16.6ms)的时间划分为布局计算→动画更新→渲染→剩余四个部分,严格控制各环节耗时,帧预算的精细化分配,将95%以上的帧耗时控制在16.6ms内:
预算分配:
布局计算:≤3ms(处理缩略图位置排列);
动画更新:≤2ms(计算物理动画参数);
渲染:≤10ms(Vulkan绘制操作);
剩余:≥1.6ms(应对突发耗时);
动态调整,通过FrameProfiler实时监测各环节耗时,当某环节超支时:
布局计算超支:简化布局逻辑(如固定列数);
渲染超支:临时降低LOD等级或减少同时渲染的缩略图数量;
紧急策略:若总耗时预计将超过16.6ms,优先保证当前可见区域的渲染,延迟其他操作至下一帧。
S4.16、输入预测与预渲染:通过预测用户输入轨迹,提前1-2帧执行渲染,减少操作→反馈延迟,输入预测技术将操作反馈延迟从100ms降至60ms以下,接近人眼感知阈值:
输入采样:以10ms为间隔采集用户滑动手势的位置、速度、加速度;
轨迹预测:基于二次函数拟合(position(t)=at²+bt+c)预测未来20ms的滑动位置;
预渲染:根据预测位置提前计算缩略图布局并提交渲染命令,当实际输入与预测偏差<5像素时,直接使用预渲染结果;偏差过大时,快速修正并重新渲染。
通过实验验证,本实施例相比现有技术,具有以下显著优势:
1、性能指标提升,缩略图加载延迟:从平均150ms降至15ms(降低90%);任务切换总耗时:从200ms以上降至50ms以内;渲染效率:单帧渲染10个缩略图的耗时从30ms降至5ms(提升83%);帧率稳定性:95%场景下维持60fps,帧率波动≤1fps。
2、资源利用优化,显存占用:通过压缩和LOD,单张缩略图显存降低60%(从2MB降至0.8MB);数据传输:增量更新使容器与OpenHarmony间的数据传输量减少70%;功耗:GPU平均负载从60%降至30%,任务切换相关功耗降低40%。
3、用户体验增强,流畅性:动画过渡自然,无掉帧或撕裂;响应速度:用户滑动操作到视觉反馈的延迟<60ms;一致性:容器应用与原生应用的切换体验完全统一;适应性:在低端设备(如嵌入式终端)和高端设备(如平板)上均能提供适配的优化效果。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法,其特征在于,具体包括以下步骤:
宿主机分配DRM容器内存,建立容器管理模块管理容器应用的元数据,包括容器PID、容器应用ID及缩略图FD;
容器应用启动时容器根据容器PID及容器应用ID生成第一全局ID,创建缩略图FD构建元数据,向容器管理模块发送容器应用注册事件,将缩略图写入DRM容器内存;容器管理模块将缩略图FD转换为第一全局FD,在全局任务列表中添加容器任务项,将实例发送至任务切换器;任务切换器在启动完成后采用第一全局FD从DRM容器内存获取缩略图,更新最近使用应用列表渲染列表条目;
任务切换器捕获容器应用选择事件,获取第一全局ID及状态标识,向容器管理模块发送切换前台请求;容器管理模块完成状态转换更新全局任务列表,向任务切换器发送切换完成事件;任务切换器获取缩略图,置顶列表条目;
任务切换器捕获容器应用退出事件,获取第一全局ID及状态标识,向容器管理模块发送第一退出请求;容器管理模块根据第一全局ID向容器发送第二退出请求,将状态标识设为冻结;容器结束容器应用进程,向容器管理模块发送容器应用注销请求;容器管理模块更新全局任务列表,向任务切换器发送退出完成事件;任务切换器更新列表条目及最近使用应用列表,调整列表条目顺序。
2.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,在容器中启动应用监测器监测容器应用的纹理变化,当监测到容器应用的纹理发生变化时,通过DRM容器内存的控制信号量向任务切换器发送包含第一全局ID的容器应用更新事件;任务切换器捕获容器应用更新事件,从最近使用应用列表中获取容器应用的状态标识,若状态标识为前台运行则根据第一全局FD从DRM容器内存获取容器应用的缩略图,渲染对应的列表条目完成更新;若状态标识为后台挂起则忽略该事件。
3.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,所述元数据还包括容器类型。
4.根据权利要求3所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,任务切换器为容器应用渲染生成列表条目时,根据容器应用所在容器的容器类型,为从DRM容器内存获取的缩略图添加视觉区分标识。
5.根据权利要求3所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,任务切换器为容器应用渲染生成列表条目时,根据容器应用所在容器的容器类型,实现相同容器类型的容器应用分组展示。
6.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,任务切换器记录容器应用切换前的显示位置,执行缩小淡出动画,动画结束后再执行到目标应用的切换,切换完成后执行放大淡入动画。
7.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,宿主机启动阶段通过内核层GPU驱动接口采集核心规格、特性支持及性能指标的硬件参数,据此将硬件划分为不同级别,基于硬件级别动态调整缩略图的核心参数;其中,核心规格包括型号、核心数量及频率,特性支持包括纹理压缩格式、最大纹理尺寸及过滤支持,性能指标包括像素填充率及纹理处理能力,缩略图的核心参数包括分辨率、压缩格式、Mipmap等级及更新频率。
8.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,宿主机运行时实时监测GPU负载,当负载持续过高时触发缩略图降级机制,负载降低后恢复原配置。
9.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,在DRM容器内存中加入多层权限控制,在鸿蒙系统的SELinux策略中增加容器图形资源访问规则,在DRM管理器中增加每次纹理访问的权限验证。
10.根据权利要求1所述的鸿蒙系统跨运行环境任务切换方法,其特征在于,构建GPU纹理缓存、CPU内存缓存到磁盘持久化缓存的三级缓存架构,GPU纹理缓存直接供渲染管线渲染缩略图使用,采用淘汰策略且优先级最高;CPU内存缓存存储压缩后的缩略图像素数据,作为中间层;磁盘持久化缓存存储长期有效缩略图,采用基于访问频率和时间的淘汰策略。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511657372.6A CN121116560B (zh) | 2025-11-13 | 2025-11-13 | 一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511657372.6A CN121116560B (zh) | 2025-11-13 | 2025-11-13 | 一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN121116560A CN121116560A (zh) | 2025-12-12 |
| CN121116560B true CN121116560B (zh) | 2026-01-23 |
Family
ID=97934950
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202511657372.6A Active CN121116560B (zh) | 2025-11-13 | 2025-11-13 | 一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN121116560B (zh) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101266637A (zh) * | 2001-07-06 | 2008-09-17 | 诺基亚有限公司 | 移动通信环境中的数字权利管理 |
| CN104869452A (zh) * | 2014-02-26 | 2015-08-26 | Lg电子株式会社 | 数字设备及其处理屏幕保护程序的方法 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7480382B2 (en) * | 2003-09-30 | 2009-01-20 | Microsoft Corporation | Image file container |
| CN1820451B (zh) * | 2003-10-23 | 2010-09-08 | 微软公司 | 虚拟文件夹和项目共享系统和方法 |
| US8239682B2 (en) * | 2005-09-28 | 2012-08-07 | Nl Systems, Llc | Method and system for digital rights management of documents |
| CN120872510B (zh) * | 2025-09-26 | 2026-01-02 | 西南石油大学 | 实验室协作环境的用户与数据全生命周期服务器管理系统 |
-
2025
- 2025-11-13 CN CN202511657372.6A patent/CN121116560B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101266637A (zh) * | 2001-07-06 | 2008-09-17 | 诺基亚有限公司 | 移动通信环境中的数字权利管理 |
| CN104869452A (zh) * | 2014-02-26 | 2015-08-26 | Lg电子株式会社 | 数字设备及其处理屏幕保护程序的方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN121116560A (zh) | 2025-12-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1756702B1 (en) | Systems and methods for tracking screen updates | |
| US7423653B2 (en) | Displaying graphical textures | |
| US8094161B2 (en) | Virtualization of graphics resources | |
| US7234144B2 (en) | Methods and system for managing computational resources of a coprocessor in a computing system | |
| US7164427B2 (en) | Apparatus, method and system with a graphics-rendering engine having a time allocator | |
| US8089488B2 (en) | Virtualization of graphics resources | |
| CN105190701A (zh) | 基于原语的合成 | |
| WO2024016798A1 (zh) | 图像显示方法和相关装置 | |
| CN102402414A (zh) | 适用于大屏幕的采集卡缓冲区同步图像刷新系统及方法 | |
| US9324299B2 (en) | Atlasing and virtual surfaces | |
| US20020154133A1 (en) | Rendering animated image data | |
| US7940276B2 (en) | Virtualization of graphics resources | |
| CN121116560B (zh) | 一种基于扩展元数据的鸿蒙系统跨运行环境任务切换方法 | |
| WO2005122096A1 (en) | Displaying graphical textures | |
| CN115114019B (zh) | 应用的业务功能使用方法、装置、终端、存储介质及产品 | |
| CN117687932B (zh) | 一种内存分配的方法及装置 | |
| WO2024078121A1 (zh) | 图像处理方法和电子设备 | |
| CN121008865B (zh) | 一种基于硬件图形接口的跨运行环境缩略图高效获取方法 | |
| EP4603970A1 (en) | Window animation processing method and electronic device | |
| WO2025199952A1 (zh) | 一种相机应用启动方法及电子设备 | |
| CN121548806A (zh) | 一种相机应用启动方法及电子设备 | |
| CN120335906A (zh) | 帧合成方法、电子设备及计算机可读存储介质 | |
| CN121349389A (zh) | 基于虚拟跳板的显示模式切换方法、装置、设备和介质 | |
| CN120475217A (zh) | 帧率的控制方法、装置、设备、存储介质及车辆 | |
| CN121353055A (zh) | 一种适用于移动端的ArcGIS图形引擎加速与交互方法及系统 |
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 |