CN116048833B - 一种线程处理方法、终端设备及芯片系统 - Google Patents
一种线程处理方法、终端设备及芯片系统 Download PDFInfo
- Publication number
- CN116048833B CN116048833B CN202211055916.8A CN202211055916A CN116048833B CN 116048833 B CN116048833 B CN 116048833B CN 202211055916 A CN202211055916 A CN 202211055916A CN 116048833 B CN116048833 B CN 116048833B
- Authority
- CN
- China
- Prior art keywords
- thread
- priority
- release
- target
- buffer
- 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
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/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/544—Buffers; Shared memory; Pipes
-
- 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/546—Message passing systems or structures, e.g. queues
-
- 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/548—Queue
-
- 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)
- Multimedia (AREA)
- Image Processing (AREA)
Abstract
本申请实施例公开了一种线程处理方法、终端设备及芯片系统,适用于计算机技术领域,终端设备内包含图像合成线程、缓存释放线程和线程驱动,方法包括:在通过图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧后,指示图像合成线程通知线程驱动;在线程驱动接收到图像合成线程的通知后,指示线程驱动通知缓存释放线程,并提升缓存释放线程的优先级;在缓存释放线程接收到线程驱动的通知后,指示缓存释放线程基于提升后的优先级释放缓冲单元内缓存的显示内容数据。本申请实施例可以有效改善丢帧情况,降低丢帧概率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种线程处理方法、终端设备及芯片系统。
背景技术
在启动应用程序、桌面滑动以及解锁屏幕等存在屏幕画面更新的场景中,终端设备可以播放对应的动效,以提高显示效果。
为了实现动效播放,需要终端设备快速生成动效所需的图像帧并进行刷新显示。实际应用中发现,当终端设备处于较高负载的情况时,经常会出现丢失图像帧(以下简称为丢帧)的情况。例如终端设备每秒合成的图像帧数量,不足终端设备屏幕刷新频率所需的图像帧数量时属于丢帧情况。
丢帧会导致终端设备屏幕的画面流畅度和终端设备的操作流畅度等降低,从而导致屏幕显示的视觉效果降低,用户操作时终端设备响应的灵敏度下降等问题出现。严重影响用户正常使用终端设备。
发明内容
有鉴于此,本申请实施例提供了线程处理方法、终端设备及芯片系统,可以改善终端设备丢帧的问题。
本申请实施例的第一方面提供了一种线程处理方法,应用于终端设备,终端设备内包含图像合成线程、缓存释放线程和线程驱动,方法包括:
在通过图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧后,先指示图像合成线程通知线程驱动。在线程驱动接收到图像合成线程的通知后,再指示线程驱动通知缓存释放线程,并提升缓存释放线程的优先级。在缓存释放线程接收到线程驱动的通知后,则指示缓存释放线程基于提升后的优先级释放缓冲单元内缓存的显示内容数据。
通过在生成单张图像帧的期间,主动提高缓存释放线程的优先级,使得本申请实施例中的缓存释放线程可以以更高优先级去抢占处理器资源,执行对缓冲单元的释放任务。使得本申请实施例有效的减少了缓存释放线程等待时长,缩短缓存释放线程释放缓冲单元的耗时。使得对每张图像帧的生成耗时大大缩减,从而使得终端设备在单位时间内可以生成更多数量的图像帧。因此本申请实施例可以极大地改善终端设备丢帧的情况,降低丢帧的概率。
在第一方面的一种可能的实现方式中,提升缓存释放线程的优先级,包括:
将缓存释放线程加入至优先级为期望优先级的期望线程队列,以使得缓存释放线程具有期望优先级,其中期望优先级高于缓存释放线程的优先级。
通过将缓存释放线程加入期望线程队列的方式,使得缓存释放线程具有期望线程队列的优先级,可以实现对缓存释放线程优先级快速有效的调整。
在第一方面的第一种可能的实现方式中,在提升缓存释放线程的优先级操作中,提升后的优先级属于具有实时抢占终端设备处理器资源能力的优先级范围。
将缓存释放线程提升至具有实时抢占终端设备处理器资源能力的优先级,可以使得缓存释放线程尽可能地减少排队耗时,甚至避免排队耗时。因此可以极大地缩短缓存释放线程释放缓冲单元的耗时。
在第一方面的第二种可能的实现方式中,在缓存释放线程释放完缓冲单元内缓存的显示内容数据后,指示线程驱动降低缓存释放线程的优先级。
其中,降低缓存释放线程的优先级,可以是将缓存释放线程的优先级降低至任意值。例如可以将缓存释放线程的优先级恢复至原本的优先级。
本申请实施例通过在释放完缓冲单元时,第一时间释放缓存释放线程的高优先级,可以实现对缓存释放线程在最小单张图像帧生成级别的优先级精细管控。可以有效防止缓存释放线程长时间高优先级导致对终端设备性能的影响,实现改善丢帧与对终端设备性能影响之间高精细度的平衡管控。在改善动效期间丢帧情况的同时,做到最大限度地降低缓存释放线程优先级提升对终端设备性能的影响。
在第一方面的第三种可能的实现方式中,在通过图像合成线程将缓冲单元内缓存的显示内容数据合成为图像帧之前,还包括:
当检测到目标动效开始时,调整图像合成线程的至期望优先级。期望优先级高于缓存释放线程的优先级。
相应的,通过图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧,包括:
在目标动效播放期间,指示图像合成线程基于期望优先级,将缓冲单元内缓存的显示内容数据合成为图像帧。
同时,提升缓存释放线程的优先级,包括:将图像合成线程的期望优先级赋予缓存释放线程,以使得缓存释放线程的优先级提升至期望优先级。
本申请实施例通过将调整图像合成线程优先级,并在需要缓存释放线程释放缓冲单元时,将图像合成线程的高优先级传递给缓存释放线程的方式。可以在需要使用缓存释放线程时,迅速有效的实现对缓存释放线程的优先级提升,实现对缓存释放线程优先级精细灵活的提升。
作为本申请的一个实施例,期望优先级可以属于具有实时抢占终端设备处理器资源能力的优先级范围,以缩短缓存释放线程释放缓冲单元的耗时。
在第一方面的第三种可能的实现方式基础上,作为第一方面的第四种可能的实现方式,调整图像合成线程的优先级至期望优先级,包括:
将图像合成线程的加入至优先级为期望优先级的目标线程队列,以使得图像合成线程具有期望优先级。
通过将图像合成线程加入目标线程队列的方式,使得图像合成线程具有目标线程队列的优先级,可以实现对图像合成线程优先级快速有效的调整。
在第一方面的第三种可能的实现方式基础上,作为第一方面的第五种可能的实现方式,将期望优先级赋予至缓存释放线程,包括:
利用目标线程队列关联的优先级传递接口,将图像合成线程的期望优先级赋予缓存释放线程。
通过调用目标线程队列对应的优先级传递接口的方式,可以实现对图像合成线程优先级的有效传递,使得缓存释放线程可以获得图像合成线程的优先级。
在第一方面的第六种可能的实现方式中,期望优先级高于图像合成线程的优先级。
通过在生成单张图像帧的期间,主动提高图像合成线程的优先级,使得本申请实施例中的图像合成线程可以以更高优先级去抢占处理器资源,执行对图像帧合成的任务。因此可以缩短图像帧合成时间,减少对每张图像帧的生成耗时。因此本申请实施例可以改善终端设备丢帧的情况,降低丢帧的概率。
在第一方面的第七种可能的实现方式中,在缓存释放线程基于提升后的优先级释放缓冲单元内缓存的显示内容数据之后,还包括:
当检测到目标动效结束时,降低图像合成线程的优先级。
其中,降低图像合成线程的优先级,可以是将图像合成线程的优先级降低至任意值。例如可以将图像合成线程的优先级恢复至原本的优先级。
本申请实施例通过在动效结束时,第一时间释放图像合成线程的高优先级,可以防止图像合成线程长时间高优先级导致对终端设备性能的影响。
同时在结合以加入目标线程队列提升图像合成线程优先级,并使用优先级传递提升缓存释放线程优先级的方案时。本申请实施例可以有效控制在动效期间之外的情况,优先级传递导致缓存释放线程或其他线程优先级被影响的情况。避免动效期间的操作,对终端设备性能造成持续的影响。
通过在释放完缓冲单元时及时释放缓存释放线程的高优先级,同时在动效结束时及时释放图像合成线程的高优先级。使得本申请实施例可以实现在改善动效期间丢帧情况的同时,做到最大限度地降低动效期间线程优先级调整对终端设备内其他线程任务执行的影响,从而最大限度地降低对终端设备性能的影响。实现了动效期间改善丢帧与对终端设备性能影响之间高精细度的平衡管控。
在第一方面的第四种可能的实现方式基础上,作为第一方面的第八种可能的实现方式,期望优先级高于图像合成线程原本的优先级。
在缓存释放线程基于提升后的优先级释放缓冲单元内缓存的显示内容数据之后,还包括:
当检测到目标动效结束时,将图像合成线程移除目标线程队列。
通过加入和移除目标线程队列的方式,可以快速有效地管理图像合成线程的优先级。
在第一方面的第三种可能的实现方式基础上,作为第一方面的第九种可能的实现方式,对目标动效开始的检测操作,包括:
当检测到目标动效对应的开始事件时,检测当前运行中的应用程序是否为播放目标动效的应用程序。
当前运行中的应用程序为播放目标动效的应用程序时,判定目标动效开始。
在第一方面的第十种可能的实现方式中,对目标动效结束的检测操作,包括:
当检测到目标动效对应的结束事件时,检测当前运行中的应用程序是否播放目标动效的应用程序。
当前运行中的应用程序为播放目标动效的应用程序时,判定目标动效结束。
通过特定事件检测加运行应用程序是否为播放目标动效的应用程序的校验,可以准确地识别出当前目标动效是否开始或结束,从而实现对目标动效开始和结束的精准识别。
在第一方面的第十种可能的实现方式中,图像合成线程为表面抛射器(SurfaceFlinger)线程,缓存释放线程为粘合(binder)线程,缓冲单元为buffer。线程驱动为kernel。
本申请实施例的第二方面提供了一种线程处理装置,线程处理装置内包含图像合成线程、缓存释放线程和线程驱动,该装置包括:
异步通信模块,用于在通过图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧后,指示图像合成线程通知线程驱动。
驱动指示模块,用于在线程驱动接收到图像合成线程的通知后,指示线程驱动通知缓存释放线程,并提升缓存释放线程的优先级。
释放指示模块,用于在缓存释放线程接收到线程驱动的通知后,指示缓存释放线程基于提升后的优先级释放缓冲单元内缓存的显示内容数据。
第三方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述第一方面任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面任一项的方法。
第五方面,本申请实施例提供一种芯片系统,该芯片系统包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现如上述第一方面任一项所述的方法。该芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
第六方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面任一项所述的方法。
可以理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的缓存单元的示意图;
图2A为本申请实施例提供的图像合成线程与缓存释放线程之间的通信时序示意图;
图2B为本申请实施例提供的生成单张图像帧的时序图;
图3为本申请实施例提供的线程处理方法的一个流程示意图;
图4为本申请实施例提供的线程处理方法的另一个流程示意图;
图5为本申请实施例提供的对线程进行处理的一个时序图;
图6为本申请实施例提供的对线程进行处理的另一个时序图;
图7为本申请实施例提供的线程交互的时序图;
图8为本申请实施例提供的线程处理装置的结构示意图;
图9为本申请实施例提供的手机的结构示意图;
图10为本申请实施例提供的终端设备的一个软件结构框图;
图11为本申请实施例提供的终端设备的另一个软件结构框图;
图12为本申请实施例提供的软件系统内部功能实现示意图;
图13为本申请实施例提供的终端设备硬件结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
以下对本申请实施例中可能涉及到的一些概念进行说明:
动效:动效是指画面动态变化的效果,亦可称为动态效果或动画效果等。动效的实质是图像帧更新带来的画面变化效果。因此,任意由于图像帧更新带来的画面变化效果,均属于本申请实施例的动效范围。基于此,本申请实施例不对动效具体的类型做过多限定。
图像合成线程、缓存释放线程和缓冲单元:在本申请实施例中,缓冲单元是终端设备缓冲区内的存储单元。参考图1,其中n为任意自然数,在本申请实施例中,缓冲区内可以包含一个或多个缓冲单元。缓冲单元用于缓存绘制好的图像帧显示内容数据。图像合成线程是负责使用绘制好的图像帧显示内容数据合成图像帧的线程。缓存释放线程则是指负责释放缓冲单元内图像帧显示内容数据的线程,为了方便说明,在本申请实施例中将“释放缓冲单元内的图像帧显示内容数据”简称为“释放缓冲单元”。其中图像合成线程是终端设备的系统线程,而缓存释放线程则是播放动效的应用程序内部线程。例如,当是由桌面播放动效时,缓存释放线程为桌面内的线程,而当是由视频播放器播放动效时,缓存释放线程则为视频播放器内的线程。
应当理解地,实际应用中,图像合成线程、缓存释放线程和缓冲单元,在承担本申请实施例中的任务外,还可以承担终端设备内的其他任务。例如对于缓存释放线程,除了可以负责缓冲单元内图像帧内容数据,还可以负责应用程序内的其他服务。而缓冲单元除了可以缓存绘制好的图像帧显示内容数据之外,也可以缓冲其他数据。
在本申请实施例中,图像合成线程与缓存释放线程之间属于非同步通信(亦可称为异步通信)。即是由图像合成线程告知缓存释放线程需要释放缓冲单元,再由缓存释放线程负责释放缓冲单元内的图像帧内容数据。可以参考图2A,是本申请实施例提供的,图像合成线程与缓存释放线程之间的一种可选的通信时序示意图。其中,线程驱动用于驱动缓存释放线程。图像合成线程在合成完图像帧之后,通知线程驱动。线程驱动在接收到通知之后,通知缓存释放线程。缓存释放线程在接收到通知之后,释放缓冲单元内图像帧内容数据。在这期间,图像合成线程可以不等待缓存释放线程的释放结果,继续执行其他任务。
以安装有安卓系统(Android)的终端设备为例,图像合成线程可以是表面抛射器(SurfaceFlinger)线程,缓存释放线程可以是粘合(binder)线程,缓冲单元可以是buffer。线程驱动可以是kernel。线程驱动亦可以称为binder驱动。此时释放缓冲单元内的图像帧显示内容数据,可以简称为释放buffer。
线程队列:在本申请实施例中,线程队列内包含一个或多个线程。同时在本申请实施例中,线程和线程队列均可以有优先级。其中对于线程队列而言,当线程队列具有一个优先级时,该线程队列内的所有线程均为该优先级。例如,假设将线程的优先级设定为1至10,其中1为最低优先级,10为最高优先级。同时假设线程队列A内包含线程1、线程2和线程3,且线程队列A的优先级为5。则该线程队列A内的线程1、线程2和线程3的优先级均为5。
在本申请实施例中,优先级是指线程被终端设备处理器处理顺序的优先级。对于单个线程而言,优先级越高其被处理器处理的顺序越靠前,即该线程抢占处理器资源的能力越强。对于优先级不同的两个线程,终端设备一般会先处理较高优先级的线程,再处理较低优先级的线程。因此即使较低优先级线程已排队时长较长,仍可能会出现被较高优先级线程“插队”的情况。即处理器先执行排队时长较短但较高优先级线程,再执行排队时长较长且较低优先级线程。
在本申请实施例中,具有实时抢占处理器资源能力的优先级,可称为实时优先级,实时优先级以外的优先级可称为非实时优先级。当有多个实时优先级时,这些实时优先级构成的范围可称为属于具有实时抢占处理器资源能力的优先级范围。其中,实时优先级的线程相较于非实时优先级的线程,其优先级更高,可以优于非实时优先级的线程执行任务。在执行任务时,实时优先级的线程理论上可以实时抢占处理器资源,从而避免排队。而当存在其他同样具有实时优先级的线程抢占处理器资源时,则可以根据实际优先级的顺序,从高到低排队抢占处理器资源执行任务。
以一实例进行说明,假设具有实时抢占处理器资源能力的优先级范围为1至100,优先级顺序依次降低。在此基础上,假设线程A、线程B和线程C的优先级分别为50、98和120。此时,线程A和线程B的优先级均为实时优先级,而线程C的优先级则为非实时优先级。其中线程A或线程B在执行任务时,理论上都可以实时抢占处理器资源,从而避免排队。但若线程A或线程B在执行任务时,有其他具有实时优先级的线程在执行任务,则可能会出现排队情况。例如假设线程A和线程B同时在执行任务,则此时由于线程A的优先级高于线程B,因此此时理论上需要排队等候线程A执行任务后,线程B再执行任务。由此可知,实时优先级相对非实时优先级而言,可以减少排队耗时,甚至避免排队耗时。
优先级传递(亦可称为传递优先级等):是指将一个线程的优先级赋予另一个线程,使得在后线程可以获得与在前线程相同的优先级。例如将线程A的优先级赋予另一个线程B,使得线程B可以获得与线程A相同的优先级。
动效应用:即播放动效的应用程序。
在有画面更新的动效场景中,如从桌面启动应用程序、退出应用程序、桌面滑动、解锁屏幕、应用程序内部的画面更新(如游戏界面变化)等场景,终端设备可以播放对应的动效,以提高显示效果。
为了实现动效播放,需要终端设备快速生成动效所需的图像帧并进行刷新显示。实际应用中发现,当终端设备处于较高负载的情况时,经常会出现丢帧的情况。例如当由于连续启动多个应用程序等原因,导致终端设备同时所需处理的任务数较多,使得终端设备处于高负载的情况。其中,丢帧亦可称为掉帧,即终端设备实际合成的图像帧数量,少于理论应当合成的图像帧数量。例如终端设备每秒合成的图像帧数量,不足终端设备屏幕刷新频率所需的图像帧数量。丢帧会导致终端设备屏幕的画面流畅度以及终端设备的操作流畅度等受到影响,如使得屏幕显示的视觉效果降低,用户操作时响应的灵敏度下降等。
实际应用中,在播放动效期间,为了生成所需更新的图像帧。可以参考图2B,是生成单张图像帧的时序图。终端设备首先会绘制图像帧的显示内容数据并缓存至缓冲区的缓冲单元中。再由终端设备内的图像合成线程使用缓冲单元内的显示内容数据去合成图像帧。图像帧合成完之后,由缓存释放线程负责释放缓冲单元(即释放缓冲单元内的图像帧显示内容数据),以此完成单张图像帧的生成操作(即释放完对应的缓冲单元,是本申请实施例中生成单张图像帧的标准)。由于缓冲单元被释放后处于空闲状态,因此终端设备可以将绘制好的下一图像帧显示内容数据缓存至缓冲单元,从而使得图像合成线程下次可以再使用被释放缓冲单元合成下一图像帧。以此循环操作,实现对动效所需的各个图像帧的生成。
实际应用中发现,由于缓存释放线程的优先级较低。因此在终端设备运行过程中,缓存释放线程释放缓冲单元的操作往往需要排队较久。而在终端设备高负载的情况下,往往会有大量优先级高于缓存释放线程的线程需要处理。从而导致实际应用中处理器可能会一直处理高优先级线程,即处理器一直被高优先级线程占用,使得缓存释放线程长时间处于无法处理的状态。进而导致已使用的缓冲单元长时间无法被释放。而缓冲单元长时间无法被释放,又会导致图像合成线程无法获取到新的图像帧内容数据,最终导致终端设备绘制单张图像帧的耗时加长数倍,单位时间内可生成的图像帧数量减少,出现丢帧情况。
以一实例进行举例说明,假设终端设备安装有安卓系统,其屏幕刷新频率为60赫兹(Hz),即要求终端设备每秒内需生成至少60张图像帧进行刷新显示。相应的,正常情况下,终端设备生成单张图像帧耗时需控制在16.6毫秒及以内。而在高负载情况下,binder线程需要等待很长时间才被处理,即长时间处于阻塞态(runnable)。假设此时导致终端设备实际花了约48毫秒才生成一张图像帧。此时实际情况中终端设备生成单张图像帧的耗时接近正常情况下要求的3倍耗时。从而导致终端设备在一秒内无法生成理论最少应当生成的60张图像帧,出现了丢帧的情况。
为了改善丢帧情况,本申请实施例在开始动效时,会同步提升图像合成线程的优先级至目标优先级。该目标优先级高于缓存释放线程默认的优先级。在图像合成线程利用缓冲单元内的图像帧内容数据,完成对图像帧的合成时。一方面会通知缓存释放线程开始释放缓冲单元,另一方面会同步提升缓存释放线程的优先级至目标优先级。再由缓存释放线程基于目标优先级来释放缓冲单元。由于目标优先级高于缓存释放线程默认的优先级,因此缓存释放线程可以以更高优先级去抢占处理器资源,执行对缓冲单元的释放任务。因此本申请实施例可以有效减少缓存释放线程等待的时长,缩短缓存释放线程释放缓冲单元的耗时。使得对每张图像帧的生成耗时大大缩减,从而使得终端设备在单位时间内可以生成更多数量的图像帧。因此本申请实施例可以极大地改善终端设备丢帧的情况,降低丢帧的概率。
以下对本申请适用的场景进行说明:本申请实施例适用于终端设备内任意有图像帧更新的动效场景中,包括但不限于如:用户从桌面点击启动应用程序、用户上划操作退出应用程序、用户控制桌面滑动、用户操作解锁屏幕以及应用程序内部的画面更新(如游戏界面变化、播放视频)等场景。
本申请实施例提供的线程处理方法可以应用于手机、平板电脑和可穿戴设备等具有显示能力终端设备上,此时终端设备即为本申请实施例提供的线程处理方法的执行主体,本申请实施例对终端设备的具体类型不作任何限制。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。在本申请实施例中,以图像合成线程为SurfaceFlinger线程,缓存释放线程为binder线程,缓冲单元为buffer,播放动效的应用程序为桌面为例进行说明。应当理解地,此处仅为示例而非限定。
图3示出了本申请实施例一提供的线程处理方法的实现流程图,详述如下:
S300,检测到目标动效开始时,终端设备提升SurfaceFlinger线程的优先级至第一目标优先级。
在本申请实施例中,目标动效可以包含任意动效,亦可以是包含由技术人员预先选定的一个或多个动效。具体可由技术人员根据需求设定。例如在一些可选实施例中,目标动效可以是桌面启动应用程序、退出应用程序、桌面滑动、解锁屏幕以及应用程序内部的画面更新等场景中播放的动效内任意动效。具体对目标动效的检测方式,此处不做过多限定。包括但不限于如检测用户的触发操作,或者检测用户操作时,终端设备内部生成的特定事件等。
以一实例进行举例说明,假设桌面启动应用程序的动效属于本申请实施例中的目标动效,同时假设应用程序启动时终端设备内会触发对应的ANIM_START事件,并开始播放对应的动效。相应的在本申请实施例中,终端设备在检测到ANIM_START事件被触发时,可以检测当前运行中的应用程序是否为桌面,以判断是否是从桌面打开的应用程序。若当前运行的应用程序为桌面,此时检测到ANIM_START事件被触发,说明检测到开始目标动效。
在检测到目标动效开始时,本申请实施例可以第一时间提升SurfaceFlinger线程的优先级。可以使得动效期间SurfaceFlinger线程具有更强抢占处理器资源的能力,更快的合成图像帧,缩短图像帧合成耗时。其中,本申请实施例不对SurfaceFlinger线程提升优先级方法,以及第一目标优先级的具体优先级做过多限定。
作为本申请实现对SurfaceFlinger线程优先级提升的一种具体实现方式。在本申请实施例中,可以将SurfaceFlinger线程加入优先级为第一目标优先级的目标线程队列中。使得SurfaceFlinger线程可以获得目标线程队列的优先级。此时S300可以被替换为:检测到目标动效开始时,终端设备将SurfaceFlinger线程加入优先级为第一目标优先级的目标线程队列。
作为本申请的一个可选实施例,目标线程队列可以包括但不限于:服务质量(Quality of Service,QOS)队列、实时群组(Real-time Group,RTG)队列以及贵宾(VeryImportant Person,VIP)分组队列。即在本申请实施例中,终端设备可以将SurfaceFlinger线程加入QOS队列、RTG队列以及VIP分组队列中的任一线程队列。此时所加入的线程队列即为目标线程队列,目标线程队列的优先级,即为本申请实施例中的第一目标优先级。
作为本申请的一个可选实施例,当选用QOS队列作为目标线程队列时,可以通过MTM服务的setSurfaceFlingerQOS接口,调用底层QOS接口设置SurfaceFlinger为QOS分组,从而将SurfaceFlinger线程加入QOS队列。
作为本申请的一个可选实施例,第一目标优先级可以属于具有实时抢占处理器资源能力的优先级范围内,从而使得SurfaceFlinger线程可以尽可能地减少排队耗时,甚至避免排队耗时。例如假设在安卓系统的终端设备中,优先级在100以内具有被实时处理可实时抢占处理器资源的特性。在这种情况下,可以设置第一目标优先级为100以内的优先级。对于以加入目标线程队列的方式提升SurfaceFlinger线程优先级的情况,则可以选取优先级在100以内的线程队列作为目标线程队列。其中,具有实时抢占处理器资源能力的优先级范围,具体需根据终端设备实际操作系统情况确定,此处不做过多限定。
作为本申请的一个可选实施例,在S300中,亦可以选择不提升SurfaceFlinger线程的优先级。此时S300在检测到目标动效开始时,可以正常使用SurfaceFlinger线程原本的优先级进行图像帧合成等操作。
S301,在目标动效播放期间,终端设备绘制图像帧的显示内容数据,并将绘制好的显示内容数据缓存至buffer。
目标动效开始后,终端设备开始播放对应的动效。其中播放动效需要终端设备不断合成动效所需图像帧,并持续刷新显示的图像帧。而图像帧合成需要使用到图像帧的显示内容数据等。因此,终端设备在合成单张图像帧之前会先绘制好该图像帧的显示内容,并将绘制好的显示内容数据缓存至buffer中,以供SurfaceFlinger线程使用。其中,本申请实施例不对图像帧显示内容绘制方法做过多限定,具体可根据实际情况确定。
此时若buffer内上一图像帧的显示内容数据未被清除,则会导致终端设备无法将新绘制的图像帧显示内容数据缓存至buffer内。
S302,终端设备控制SurfaceFlinger线程基于第一目标优先级,使用buffer中缓存的显示内容数据合成图像帧。
在绘制完成图像帧显示内容数据的基础上,SurfaceFlinger线程可以开始利用显示内容数据合成图像帧,即将buffer中缓存的显示内容数据合成为图像帧。由于SurfaceFlinger线程加入了目标线程队列,因此实际应用时SurfaceFlinger线程可以基于第一目标优先级来执行合成图像帧的任务。其中,本申请实施例不对具体合成图像帧的细节做过多限定。例如在一些实施例中,SurfaceFlinger线程可以获取图像帧的位置和大小等属性数据,再结合显示内容数据来合成实际所需的图像帧。
作为本申请的一个可选实施例,当选择不提升SurfaceFlinger线程的优先级时,SurfaceFlinger线程可以基于自身原本的优先级来进行图像帧合成。
S303,在图像帧合成完成后,终端设备控制SurfaceFlinger线程通知桌面的binder线程释放buffer,并将binder线程的优先级提升至第二目标优先级。
在完成单张图像帧合成之后,SurfaceFlinger线程可以发起异步binder通信,呼叫通信对端的binder线程,通知binder线程执行释放buffer的任务。例如可以SurfaceFlinger线程调用专用接口(如callRemoteAsyncWithResult等接口)等方式发起异步binder通信,通知桌面的binder线程释放buffer。
在通知binder线程释放buffer时,终端设备还可以将binder线程的优先级,从原本优先级提升至较高的第二目标优先级。从而使得动效期间binder线程具有更强抢占处理器资源的能力,能够更快的执行释放buffer的任务。其中,本申请实施例不对binder线程提升优先级方法,以及第二目标优先级的具体优先级做过多限定。同时,亦不对第一目标优先级和第二目标优先级的大小关系做过多限定。同时应当说明地,本申请实施例提升的是负责释放buffer的binder线程优先级。对于桌面内其他非释放buffer的binder线程,则可以无需提升优先级。在本申请实施例中,第二目标优先级亦可称为期望优先级。
作为本申请中提升binder线程优先级的一种可选实时方式,可以将binder线程加入一些较高优先级的线程队列。此时S303中的“将binder线程的优先级提升至第二目标优先级”可以被替换为“将binder线程加入优先级为第二目标优先级的期望线程队列”。本申请实施例不对所选的期望线程队列做过多限定,任意优先级高于binder线程默认优先级的线程队列均可作为本申请实施例中的期望线程队列。例如,期望线程队列可以为RTG队列或VIP分组队列。即在本申请实施例中,终端设备可以将binder线程加入RTG队列或VIP分组队列。此时所加入的线程队列即为期望线程队列,期望线程队列的优先级,即为本申请实施例中的第二目标优先级(即期望优先级)。
作为本申请的一个可选实施例,SurfaceFlinger线程可以通过先通知binder驱动,再由binder驱动通知binder线程的方式,发起异步binder通信的操作。以通知binder线程执行释放buffer的任务。此时:终端设备控制SurfaceFlinger线程通知桌面的binder线程释放buffer,可以被替换为:终端设备控制SurfaceFlinger线程通过binder驱动通知桌面的binder线程释放buffer。
作为本申请的一个可选实施例,可由binder驱动负责提升binder线程的优先级。例如在一些可选实施例中,binder驱动在检测到异步binder通信的标签为释放buffer任务对应的标签时,执行提升binder线程优先级的操作。即binder驱动在检测到binder线程需要执行的是释放buffer的任务时,将binder线程的优先级提升至第二目标优先级。从而实现在通知binder线程释放buffer时,同步提升binder线程优先级。
作为本申请的一个可选实施例,参考图4,S300可以被替换为:S400,检测到目标动效开始时,终端设备调整SurfaceFlinger线程的优先级至第二目标优先级。S302对应被替换为:S402,终端设备控制SurfaceFlinger线程基于第二目标优先级,使用buffer中缓存的显示内容数据合成图像帧。其中第二目标优先级可以高于、低于或等于SurfaceFlinger线程原本的优先级。考虑到实际情况中,动效期间丢帧重要原因是binder线程释放buffer耗时较长。因此在本申请实施例中,在提升binder线程优先级的基础上,SurfaceFlinger线程的优先级调整可以是提升、降低或保持优先级,同样可以有效地缩短图像帧生成耗时,改善丢帧情况。在此基础上,作为本申请中提升binder线程优先级的一种可选实现方式。在本申请实施例中,可以选择将SurfaceFlinger线程的第二目标优先级传递至binder线程。继续参考图4,此时的S303可以被替换为:S403,在图像帧合成完成后,终端设备控制SurfaceFlinger线程通知桌面的binder线程释放buffer,并将SurfaceFlinger线程的第二目标优先级传递至binder线程,以使得binder线程的优先级提升至第二目标优先级。
作为本申请的一个可选实施例,在图4所示实施例的基础上,可以采用将SurfaceFlinger线程加入线程队列的方式实现S400的操作。此时S400可以被替换为:检测到目标动效开始时,终端设备将SurfaceFlinger线程加入优先级为第二目标优先级的目标线程队列。此时,SurfaceFlinger线程可以获得目标线程队列的第二目标优先级。同时,在本申请实施例中,还可以利用目标线程队列的优先级传递能力,将SurfaceFlinger线程的第二目标优先级传递至binder线程。例如可以调用目标线程队列的优先级传递接口,实现将SurfaceFlinger线程的第二目标优先级传递至binder线程。
在本申请实施例中,不对所选的目标线程队列做过多限定,任意优先级高于binder线程默认优先级的线程队列均可作为本申请实施例中的目标线程队列。例如,目标线程队列可以包括但不限于:QOS队列、RTG队列以及VIP分组队列。即在本申请实施例中,终端设备可以将SurfaceFlinger线程加入QOS队列、RTG队列以及VIP分组队列中的任一线程队列。此时所加入的线程队列即为目标线程队列,目标线程队列的优先级,即为本申请实施例中的第二目标优先级。作为本申请的一个可选实施例,当选用QOS队列作为目标线程队列时,可以通过调用check_qos_low_to_critical接口,将SurfaceFlinger线程的第二目标优先级传递至binder线程。
作为本申请的一个可选实施例,第二目标优先级可以属于具有实时抢占处理器资源能力的优先级范围内,从而使得binder线程可以尽可能地减少排队耗时,甚至避免排队耗时。例如假设在安卓系统的终端设备中,优先级在100以内具有被实时处理可实时抢占处理器资源的特性。在这种情况下,可以设置第二目标优先级为100以内的优先级。对于以加入目标线程队列的方式提升SurfaceFlinger线程优先级,并进行优先级传递提升binder线程优先级的情况,则可以选取优先级在100以内的线程队列作为目标线程队列,如可以选择QOS队列为目标线程队列。其中,具有实时抢占处理器资源能力的优先级范围,具体需根据终端设备实际操作系统情况确定,此处不做过多限定。
作为本申请的一个可选实施例,当由binder驱动负责提升binder线程的优先级时,优先级传递工作则可以用binder驱动执行。即由binder驱动将SurfaceFlinger线程的第二目标优先级传递至binder线程。例如,在一些实施例中,可以由binder驱动通过调用check_qos_low_to_critical接口,将SurfaceFlinger线程的第二目标优先级传递至binder线程。
S304,终端设备控制binder线程在接收到释放buffer的通知后,基于第二目标优先级执行释放buffer的任务。
binder线程在接收到程释放buffer的通知之后,开始排队执行释放buffer的任务。由于此时binder线程已经具有了更高的第二目标优先级,因此,可以以第二目标优先级来排队抢占处理器资源,并在抢占到处理器资源时释放buffer,从提升释放buffer的速度。
在释放完buffer后,理论上完成了对单张图像帧的生成。此时终端设备可以将最新生成的这张图像帧在屏幕上刷新显示,从而实现对动效的画面更新播放。同时,由于当前动效尚未结束,终端设备需要继续合成动效所需的图像帧。因此在S304完成之后,终端设备可以同步返回执行S301的操作,实现动效播放期间对所需图像帧的多次生成。即在本申请实施例中S301至S304的操作是循环执行的,以实现动效期间对图像帧的不断生成和刷新。具体的循环执行次数,需根据所需生成的图像帧数量确定。
S305,binder线程在释放buffer的任务完成后,终端设备取消将binder线程的优先级提升至第二目标优先级的操作。
由于binder线程可用于执行桌面内的各种任务,释放buffer是其可执行的任务之一。因此在完成释放buffer的任务之后,binder线程可能会继续执行桌面内的其他任务。而在S303中,终端设备通过优先级传递等方式,提升了binder线程的优先级。此时若仍持续保持binder线程的高优先级,则会使得binder线程执行其他任务时仍可以优先抢占处理器资源。这可能导致终端设备的处理器资源被桌面内的binder线程长期占用,造成对处理器资源的浪费,对终端设备性能造成影响。
为了避免改善丢帧过程中,binder线程优先级提升对终端设备性能造成较大影响,实现改善丢帧与对终端设备性能影响之间的平衡。本申请实施例在binder线程释放buffer的任务完成后,可以第一时间取消binder线程的高优先级。即本申请可以实现在binder线程释放buffer期间赋予高优先级,实现对binder线程在最小单张图像帧生成级别的优先级精细管控。最大程度的降低对终端设备性能的影响。其中,取消高优先级的方式此处不做过多限定。包括但不限于如:降低binder线程的优先级(例如复原binder线程原本的优先级)。其中,对于以优先级传递的方式提升binder线程优先级的方式,则S305中的“取消将binder线程的优先级提升至第二目标优先级的操作”可以统一替换为“取消binder的第二目标优先级”。例如参考图4,此时S305可以被替换为S405、binder线程在释放buffer的任务完成后,终端设备取消binder线程的第二目标优先级。
作为本申请中实现S305的一种可选实现方式,可以由binder驱动负责取消binder线程的高优先级。此时S305可以被替换为:
binder线程在释放buffer的任务完成后,通知binder驱动任务完成。
binder驱动在接到binder线程的通知后,取消将binder线程的优先级提升至第二目标优先级的操作。
例如binder线程可以在释放完buffer时回复(reply)binder驱动释放任务完成,以通知binder驱动取消优先级。在本申请实施例中,由binder线程在释放完buffer后主动告知binder驱动,再由binder驱动负责取消binder线程的高优先级。从而使得本申请实施例可以在第一时间主动取消binder线程的高优先级,避免binder线程持续高优先级对终端设备性能造成影响。实现了在改善丢帧与对终端设备性能影响之间的平衡。
S306,在检测到目标动效结束时,终端设备取消提升SurfaceFlinger线程的优先级至第一目标优先级的操作。
与binder线程高优先级情况类似,对于SurfaceFlinger线程而言,长期高优先级也可能会造成对处理器资源的浪费,从而影响终端设备性能。因此本申请实施例可以在目标动效结束时,即动效播放完成时,及时取消SurfaceFlinger线程的高优先级。使得SurfaceFlinger线程恢复原本的优先级。
作为本申请的一个可选实施例,当采用图4所示实施例时调整SurfaceFlinger线程优先级时,S306可以被替换为:S406,在检测到目标动效结束时,终端设备取消调整SurfaceFlinger线程的优先级至第二目标优先级的操作。即在动效播放完成时,恢复SurfaceFlinger线程原本的优先级。从而避免影响终端设备性能,或者影响SurfaceFlinger线程继续执行其他的任务。
作为本申请中调整SurfaceFlinger线程优先级(包括取消SurfaceFlinger线程的高优先级)的一种可选实现方式,当采用将SurfaceFlinger线程加入目标线程队列,以调整SurfaceFlinger线程优先级至第一目标优先级或者第二目标优先级的情况。在本申请实施例,可以在目标动效结束时将SurfaceFlinger线程移除目标线程队列。作为本申请的一个实施例,终端设备内包含优先级管理模块,由优先级管理模块负责SurfaceFlinger线程优先级提升和恢复等操作。
此外,对于采用将SurfaceFlinger线程加入目标线程队列,并使用目标线程队列提供的接口进行优先级传递的方式提升binder线程优先级的情况。通过在动效结束时及时移除目标线程队列中的SurfaceFlinger线程,可以使得目标线程队列的优先级无法传递至binder线程或其他线程。从而可以有效控制在动效期间之外的情况,优先级传递导致binder线程或其他线程优先级被影响的情况。避免动效期间的操作,对终端设备性能造成持续的影响。从而实现对改善丢帧和对终端设备性能影响的平衡。
本申请实施例不对检测目标动效结束的方式做过多限定,具体可根据实际应用情况确定。以一实例进行举例说明,假设桌面启动应用程序播放的动效属于本申请实施例中的目标动效,同时假设动效播放完成时终端设备内会触发对应的ANIM_END事件。相应的在本申请实施例中,终端设备在检测到ANIM_END事件被触发时,可以检测当前运行中的应用程序是否为桌面,以判断是否是从桌面打开的应用程序。若当前运行的应用程序为桌面,此时检测到ANIM_END事件被触发,说明检测到目标动效结束。
作为本申请的一个可选实施例,在本申请实施例选择以加入目标线程队列的方式提升SurfaceFlinger线程优先级,并通过由binder驱动通过优先级传递的方式,将SurfaceFlinger线程的高优先级传递至binder线程。同时由binder驱动负责取消binder线程的高优先级。其中,目标线程队列为第二目标优先级,高于SurfaceFlinger线程和binder线程原本的优先级。由终端设备内的队列设置模块(即优先级管理模块)负责SurfaceFlinger线程的优先级设置。参考图5,是本申请实施例中动效期间对SurfaceFlinger线程和binder线程进行处理的时序图。具体包括:
S500,目标动效开始时,队列设置模块将SurfaceFlinger线程加入至优先级为第二目标优先级的目标线程队列。
在目标动效播放期间,终端设备绘制图像帧的显示内容数据,并将绘制好的显示内容数据缓存至缓冲单元。
S501,SurfaceFlinger线程基于第二目标优先级,使用buffer中缓存的显示内容数据合成图像帧。
S502,在图像帧合成完成后,SurfaceFlinger线程发起异步通信,通知binder驱动。
S503,binder驱动在接收到SurfaceFlinger线程的通知后,通知binder线程释放buffer,并将SurfaceFlinger线程的第二目标优先级传递至binder线程。
S504,binder线程在接到binder驱动通知后,基于第二目标优先级执行释放buffer的任务。
S505,binder线程在释放buffer的任务完成后,通知binder驱动任务完成。
S506,binder驱动在接到binder线程的通知后,取消binder线程的第二目标优先级。
在本申请实施例中,通过binder驱动统一管控binder线程的优先级调整任务。由binder线程在释放完buffer后主动告知binder驱动,在有binder驱动及时取消binder线程的高优先级。从而使得本申请实施例对binder线程的优先级管理更为精细且及时。
S507,目标动效结束时,队列设置模块将SurfaceFlinger线程移除目标线程队列。
其中,S501至S506会在目标动效播放期间循环多次,以完成目标动效所需的图像帧生成。具体的操作细节、原理及有益效果等,均可参考图3、图4以及其他相关实施例的说明,此处不予赘述。
作为本申请的一个具体实施例,在图5所示实施例的基础上,本申请实施例中终端设备内包含配置处理模块、队列设置模块以及优先级传递模块。播放动效的应用程序为桌面,binder驱动属于优先级传递模块,binder线程是桌面内的线程,桌面属于队列设置模块。参考图6,是本申请实施例中动效期间对SurfaceFlinger线程和binder线程进行处理的一种时序图。具体包括:
S600,终端设备开机初始化时,配置处理模块加载本地的配置数据,并将配置数据缓存到内存中。
其中,配置数据可以存于XML配置文件内。将配置数据缓存到内存中,可以减少读取配置文件的次数,从而减少终端设备运行过程中,配置功能所需消耗及耗时。配置数据中,包含使能丢帧优化的方案,使能上述图3至图5所示实施例中对线程优先级的处理操作。在本申请实施例中将对线程优先级的处理的开关称为特性开关,当特性开关使能时(即开启时),则终端设备可以使用图3至图5所示实施例中对线程优先级进行管理,以实现改善丢帧等目的。
S601,桌面(Launcher)启动,并获取特性开关配置并初始化特性开关值。
即从内存至的配置数据中确定出对特性开关的配置,当根据配置确定初始的特性开关值是开启还是关闭。
其中,特性开关配置的获取可以是桌面启动时执行,特可以是启动后延时执行。例如可以在启动时计时,并延时1分钟后通过SDK接口等获取特性开关配置。
S602,队列设置模块检测到桌面中目标动效对应的开始事件被触发时(即目标动效开始时),判断当前运行中的应用程序是否为桌面。
在本申请实施例中,可以通过判断当前进程是否是桌面进程等方式,确定当前运行中的应用程序是否为桌面。可以在将ANIM_START事件作为目标动效对应的开始事件。
S603,若当前运行中的应用程序为桌面,则队列设置模块获取SurfaceFlinger线程的线程号,以确定所需处理的SurfaceFlinger线程。并将SurfaceFlinger线程加入目标线程队列。
其中目标线程队列的优先级即为第二目标优先级,第二目标优先级高于binder线程原本的优先级。此时可以到kernel设置SurfaceFlinger线程,即设置SurfaceFlinger线程要加入的线程队列。当目标线程队列是QOS队列时,可以通过MTM服务的setSurfaceFlingerQOS接口调用底层QOS接口,设置SurfaceFlinger线程加入QOS队列。
此时,SurfaceFlinger线程可以利用buffer内的显示内容数据合成图像帧。
S604,在SurfaceFlinger线程完成单张图像帧的合成,发起对binder线程的异步通信,通知binder线程释放buffer时,优先级传递模块检测异步通信的标签是否为释放buffer任务对应的标签。若是,则优先级传递模块内的binder驱动将SurfaceFlinger线程的优先级传递至binder线程。
在本申请实施例中,释放buffer任务对应的标签可以是FLAG_ONEWAY_OPT。当目标线程队列为QOS队列时,可以调用check_qos_low_to_critical将SurfaceFlinger线程的优先级传递给桌面内负责释放buffer的binder线程。
S605,队列设置模块内的binder线程在释放完buffer时,向优先级传递模块内的binder驱动发送通知,以告知binder驱动buffer释放完成。
S606,在接收到buffer释放完成的通知时,优先级传递模块内的binder驱动恢复binder线程的原本优先级。
S607,队列设置模块检测到桌面中目标动效对应的结束事件被触发时(即目标动效结束时),判断当前运行中的应用程序是否为桌面。
在本申请实施例中,可以通过判断当前线程是否是桌面线程等方式,确定当前运行中的应用程序是否为桌面。可以将ANIM_END事件作为目标动效对应的结束事件。
S608,若当前运行中的应用程序是否为桌面,则队列设置模块获取SurfaceFlinger线程的线程号,以确定所需处理的SurfaceFlinger线程。并将SurfaceFlinger线程移除目标线程队列。
此时可以到kernel设置SurfaceFlinger线程,即设置SurfaceFlinger线程要移除的线程队列。当目标线程队列是QOS队列时,可以通过MTM服务的setSurfaceFlingerQOS接口调用底层QOS接口,设置将SurfaceFlinger线程从QOS队列中移除。
在图5或图6所示实施例的基础上,作为本申请中的动效期间binder驱动实现优先级传递以及恢复优先级的一个具体实施例,参考图7,是SurfaceFlinger线程、binder线程以及binder驱动的交互细节时序图,具体如下:
S701,委托方(Client)线程封装数据,设置标识(Flag)为IBinder::FLAG_ONEWAY|IBinder::FLAG_ONEWAY_OPT,并作为发起端发起对binder线程的异步通信。
在本申请实施例,Client线程即为SurfaceFlinger线程。
S702、Client线程将用户态的Flag转换成内核态的Flag。
S703、Client线程通过通信指令(command)BC_TRANSACTION,将数据封装成binder_transaction_data,写入mOut。
S704、Client线程将mOut中的数据继续封装成binder_write_read。
S705、Client线程通过指令BINDER_WRITE_READ来和kernel通信,等待kernel回复。
kernel即为binder驱动(线程驱动)。
S706、kernel将用户空间的数据拷贝到内核空间,读取到指令BINDER_TRANSACTION,记录下异步通信Client线程,以便后续异步binder线程优先级传递。
S707、kernel设置onewayOpt=!!(t->flags&TF_ONE_WAY_OPT)。
S708、kernel将数据拷贝到binder线程,并传递Client线程的优先级给binder线程。
S709、kernel向Client线程返回指令BR_TRANSACTION_COMPLETE,Client线程则停止等待。
S7010、kernel向binder线程发送指令BR_TRANSACTION,binder线程找到对应的方法执行,并返回结果状态值。
S7011、binder线程判断出(tr.flags&TF_ONE_WAY_OPT)!=0时,向kernel发送指令BC_REPLY。
S7012、kernel接收到指令BC_REPLY时,恢复binder线程原本优先级。
应当说明地,上述图3至图7所示实施例,均是以图像合成线程为SurfaceFlinger线程,缓存释放线程为binder线程,缓冲单元为buffer,线程驱动为kernel(亦称为binder驱动),播放动效的应用程序是桌面为例进行说明。实际应用中可以有更多的不同场景。例如在其他实施例中,图像合成线程和缓存释放线程亦可以是其他线程。缓冲单元可以是缓冲区内的任意存储单元。播放动效的应用程序,也可以是桌面以外的其他应用程序,如终端设备内置的其他应用程序,或者用户自行安装的第三方应用程序等。此处仅为示例而非限定。
此外,在不同的场景中,播放动效的应用程序、动效具体内容、动效对应的触发操作,以及对动效的开始和结束检测方式等均可能存在差异,此处不做过多的限定。例如一些可选实施例中,对于用户控制桌面滑动的场景,播放动效的应用程序为桌面,动效对应的触发操作为用户在桌面内的滑动操作,动效具体内容为桌面滑动的动画。其中,动效可以随着用户的开始滑动而开始的,动效可以随着用户停止滑动而结束,也可以设置一个滑动响应方案,并随着滑动响应方案结束而结束。又例如另一些可选实施例中,对于应用程序内部的画面更新的场景。例如游戏应用中游戏运行的场景,此时,播放动效的应用程序为游戏应用,动效对应的触发操作为用户在游戏应用内的控制操作,动效具体内容为游戏画面内容。其中,动效可以随着游戏的开始而开始的,动效可以随着游戏的结束而结束。
由于在各种场景下,本申请在动效播放及图像帧生成过程中,对图像合成线程和缓存释放线程的操作细节、操作原理以及有益效果等基本相同。因此此处不再对各个不同场景下的实施例进行赘述,具体可参考图3至图7以及其他相关实施例的说明。
本申请实施例可以通过将线程加入线程队列等方式,在动效开始时提升图像合成线程的优先级。在动效播放过程中,针对每张图像帧的生成,均可以通过优先级传递等方式提升缓存释放线程的优先级。并可以在每次生成完一张图像帧时,及时释放缓存释放线程的高优先级。在动效结束时,通过移除线程队列等方式及时释放图像合成线程的高优先级。相比于低优先级的缓存释放线程长期无法释放缓冲单元,导致终端设备图像帧生成耗时长,出现丢帧的情况,本申请实施例至少具有以下几点有益效果:
1、由于本申请实施例可以在图像帧生成期间有效提升释放缓存释放线程的优先级,有效的减少了缓存释放线程等待时长,缩短缓存释放线程释放缓冲单元的耗时。使得对每张图像帧的生成耗时大大缩减,从而使得终端设备在单位时间内可以生成更多数量的图像帧。因此本申请实施例可以极大地改善终端设备丢帧的情况,降低丢帧的概率。
2、通过将图像合成线程加入高优先级的线程队列,并在需要缓存释放线程释放缓冲单元时,将图像合成线程的高优先级传递给缓存释放线程的方式。可以在需要使用缓存释放线程时,迅速有效的实现对缓存释放线程的优先级提升,实现对缓存释放线程优先级精细灵活的提升。
3、通过在释放完缓冲单元时,第一时间释放缓存释放线程的高优先级,可以实现对缓存释放线程在最小单张图像帧生成级别的优先级精细管控。可以有效防止缓存释放线程长时间高优先级导致对终端设备性能的影响,实现改善丢帧与对终端设备性能影响之间高精细度的平衡管控。在改善动效期间丢帧情况的同时,做到最大限度地降低缓存释放线程优先级提升对终端设备性能的影响。
4、通过在动效结束时,第一时间释放图像合成线程的高优先级,可以防止图像合成线程长时间高优先级导致对终端设备性能的影响。
同时在结合以加入线程队列提升图像合成线程优先级,并使用优先级传递提升缓存释放线程优先级的方案时。本申请实施例可以有效控制在动效期间之外的情况,优先级传递导致缓存释放线程或其他线程优先级被影响的情况。避免动效期间的操作,对终端设备性能造成持续的影响。
通过在释放完缓冲单元时及时释放缓存释放线程的高优先级,同时在动效结束时及时释放图像合成线程的高优先级。使得本申请实施例可以实现在改善动效期间丢帧情况的同时,做到最大限度地降低动效期间线程优先级调整对终端设备内其他线程任务执行的影响,从而最大限度地降低对终端设备性能的影响。实现了动效期间改善丢帧与对终端设备性能影响之间高精细度的平衡管控。
5、在提升缓存释放线程和\或图像合成线程的优先级时,可以将对应提升的目标优先级(即第一目标优先级和\或第二目标优先级)设置为属于具有实时抢占处理器资源的优先级范围内的优先级。此时可以尽可能地减少甚至避免缓存释放线程和\或图像合成线程的排队耗时,从而可以极大地缩短生成图像帧所需耗时,减少丢帧情况的发生,降低丢帧概率。
对应于上文实施例所述的线程处理方法,图8示出了本申请实施例提供的线程处理装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图8,该线程处理装置包括:
异步通信模块81,用于在通过图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧后,指示图像合成线程通知线程驱动。
驱动指示模块82,用于在线程驱动接收到图像合成线程的通知后,指示线程驱动通知缓存释放线程,并提升缓存释放线程的优先级。
释放指示模块83,用于在缓存释放线程接收到线程驱动的通知后,指示缓存释放线程基于提升后的优先级释放缓冲单元内缓存的显示内容数据。
作为本申请的一个实施例,提升缓存释放线程的优先级,包括:
将缓存释放线程加入至优先级为期望优先级的期望线程队列,以使得缓存释放线程具有期望优先级,其中期望优先级高于缓存释放线程的优先级。
作为本申请的一个实施例,提升缓存释放线程的优先级操作中,提升后的优先级属于具有实时抢占终端设备处理器资源能力的优先级范围。
作为本申请的一个实施例,驱动指示模块82,还用于:
在缓存释放线程释放完缓冲单元内缓存的显示内容数据后,指示线程驱动降低缓存释放线程的优先级。
作为本申请的一个实施例,该线程处理装置,还包括:
优先级管理模块,用于在检测到目标动效开始时,调整图像合成线程的至期望优先级。期望优先级高于缓存释放线程的优先级。
合成指示模块,用于在目标动效播放期间,指示图像合成线程基于期望优先级,将缓冲单元内缓存的显示内容数据合成为图像帧。
同时,提升缓存释放线程的优先级,包括:将图像合成线程的期望优先级赋予缓存释放线程,以使得缓存释放线程的优先级提升至期望优先级。
作为本申请的一个实施例,期望优先级可以属于具有实时抢占终端设备处理器资源能力的优先级范围,以缩短缓存释放线程释放缓冲单元的耗时。
作为本申请的一个实施例,调整图像合成线程的优先级至期望优先级,包括:
将图像合成线程的加入至优先级为期望优先级的目标线程队列,以使得图像合成线程具有期望优先级。
作为本申请的一个实施例,将期望优先级赋予至缓存释放线程,包括:
利用目标线程队列关联的优先级传递接口,将图像合成线程的期望优先级赋予缓存释放线程。
作为本申请的一个实施例,期望优先级高于图像合成线程的优先级。
作为本申请的一个实施例,优先级管理模块,还用于:
在检测到目标动效结束时,降低图像合成线程的优先级。
作为本申请的一个实施例,期望优先级高于图像合成线程原本的优先级。
作为本申请的一个实施例,对目标动效开始的检测操作,包括:
当检测到目标动效对应的开始事件时,检测当前运行中的应用程序是否为播放目标动效的应用程序。
当前运行中的应用程序为播放目标动效的应用程序时,判定目标动效开始。
作为本申请的一个实施例,对目标动效结束的检测操作,包括:
当检测到目标动效对应的结束事件时,检测当前运行中的应用程序是否播放目标动效的应用程序。
当前运行中的应用程序为播放目标动效的应用程序时,判定目标动效结束。
本申请实施例提供的线程处理装置中各模块实现各自功能的过程,具体可参考前述图2A至7所示实施例以及其他相关方法实施例的描述,此处不再赘述。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。还应理解的是,虽然术语“第一”、“第二”等在文本中在一些本申请实施例中用来描述各种元素,但是这些元素不应该受到这些术语的限制。这些术语只是用来将一个元素与另一元素区分开。例如,第一表格可以被命名为第二表格,并且类似地,第二表格可以被命名为第一表格,而不背离各种所描述的实施例的范围。第一表格和第二表格都是表格,但是它们不是同一表格。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的线程处理方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
例如,所述终端设备可以是个人数字处理(Personal Digital Assistant,PDA)设备、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、车联网终端、电脑、膝上型计算机、手持式通信设备、手持式计算设备、电视机顶盒(set top box,STB)、用户驻地设备(customer premise equipment,CPE)和/或用于在无线系统上进行通信的其它设备以及下一代通信系统,例如,5G网络中的终端设备或者未来演进的公共陆地移动网络(Public Land Mobile Network,PLMN)网络中的终端设备等。
作为示例而非限定,当所述终端设备为可穿戴设备时,该可穿戴设备还可以是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手表及服饰等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,如智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
下文以终端设备是手机为例,图9示出了手机100的结构示意图。
手机100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及SIM卡接口195等。其中传感器模块180可以包括陀螺仪传感器180A,加速度传感器180B,气压传感器180C,磁传感器180D,环境光传感器180E,距离传感器180F,接近光传感器180G、指纹传感器180H,温度传感器180J,触摸传感器180K(当然,手机100还可以包括其它传感器,比如温度传感器,压力传感器、气压传感器、骨传导传感器等,图中未示出)。
可以理解的是,本发明实施例示意的结构并不构成对手机100的具体限定。在本申请另一些实施例中,手机100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是手机100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
处理器110可以运行本申请实施例提供的线程处理方法,以便于改善丢帧情况,同时减少对终端设备性能的影响,提升用户的体验。处理器110可以包括不同的器件,比如集成CPU和GPU时,CPU和GPU可以配合执行本申请实施例提供的线程处理方法,比如线程处理方法中部分算法由CPU执行,另一部分算法由GPU执行,以得到较快的处理效率。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,手机100可以包括1个或N个显示屏194,N为大于1的正整数。显示屏194可用于显示由用户输入的信息或提供给用户的信息以及各种图形用户界面(graphical user interface,GUI)。例如,显示屏194可以显示照片、视频、网页、或者文件等。再例如,显示屏194可以显示图形用户界面。其中图形用户界面上包括状态栏、可隐藏的导航栏、时间和天气小组件(widget)、以及应用的图标,例如浏览器图标等。状态栏中包括运营商名称(例如中国移动)、移动网络(例如4G)、时间和剩余电量。导航栏中包括后退(back)键图标、主屏幕(home)键图标和前进键图标。此外,可以理解的是,在一些实施例中,状态栏中还可以包括蓝牙图标、Wi-Fi图标、外接设备图标等。还可以理解的是,在另一些实施例中,图形用户界面中还可以包括Dock栏,Dock栏中可以包括常用的应用图标等。当处理器检测到用户的手指(或触控笔等)针对某一应用图标的触摸事件后,响应于该触摸事件,打开与该应用图标对应的应用的用户界面,并在显示屏194上显示该应用的用户界面。
在本申请实施例中,显示屏194可以是一个一体的柔性显示屏,也可以采用两个刚性屏以及位于两个刚性屏之间的一个柔性屏组成的拼接显示屏。
摄像头193(前置摄像头或者后置摄像头,或者一个摄像头既可作为前置摄像头,也可作为后置摄像头)用于捕获静态图像或视频。通常,摄像头193可以包括感光元件比如镜头组和图像传感器,其中,镜头组包括多个透镜(凸透镜或凹透镜),用于采集待拍摄物体反射的光信号,并将采集的光信号传递给图像传感器。图像传感器根据所述光信号生成待拍摄物体的原始图像。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行手机100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,应用程序(比如相机应用,微信应用等)的代码等。存储数据区可存储手机100使用过程中所创建的数据(比如相机应用采集的图像、视频等)等。
内部存储器121还可以存储本申请实施例提供的线程处理方法对应的一个或多个计算机程序。该一个或多个计算机程序被存储在上述存储器121中并被配置为被该一个或多个处理器110执行,该一个或多个计算机程序包括指令,上述指令可以用于执行如图2A至图7相应实施例中的各个步骤,该计算机程序可以包括帐号验证模块、优先级比较模块。其中,帐号验证模块,用于对局域网内的其它终端设备的系统认证帐号进行认证;优先级比较模块,可用于比较音频输出请求业务的优先级和音频输出设备当前输出业务的优先级。状态同步模块,可用于将终端设备当前接入的音频输出设备的设备状态同步至其它终端设备,或者将其它设备当前接入的音频输出设备的设备状态同步至本地。当内部存储器121中存储的线程处理方法的代码被处理器110运行时,处理器110可以控制终端设备进行线程优先级处理。
此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
当然,本申请实施例提供的线程处理方法的代码还可以存储在外部存储器中。这种情况下,处理器110可以通过外部存储器接口120运行存储在外部存储器中的线程处理方法的代码,处理器110可以控制终端设备进行线程优先级处理。
下面介绍传感器模块180的功能。
陀螺仪传感器180A,可以用于确定手机100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180A确定手机100围绕三个轴(即,x,y和z轴)的角速度。即陀螺仪传感器180A可以用于检测手机100当前的运动状态,比如抖动还是静止。
当本申请实施例中的显示屏为可折叠屏时,陀螺仪传感器180A可用于检测作用于显示屏194上的折叠或者展开操作。陀螺仪传感器180A可以将检测到的折叠操作或者展开操作作为事件上报给处理器110,以确定显示屏194的折叠状态或展开状态。
加速度传感器180B可检测手机100在各个方向上(一般为三轴)加速度的大小。即陀螺仪传感器180A可以用于检测手机100当前的运动状态,比如抖动还是静止。当本申请实施例中的显示屏为可折叠屏时,加速度传感器180B可用于检测作用于显示屏194上的折叠或者展开操作。加速度传感器180B可以将检测到的折叠操作或者展开操作作为事件上报给处理器110,以确定显示屏194的折叠状态或展开状态。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。手机通过发光二极管向外发射红外光。手机使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定手机附近有物体。当检测到不充分的反射光时,手机可以确定手机附近没有物体。当本申请实施例中的显示屏为可折叠屏时,接近光传感器180G可以设置在可折叠的显示屏194的第一屏上,接近光传感器180G可根据红外信号的光程差来检测第一屏与第二屏的折叠角度或者展开角度的大小。
陀螺仪传感器180A(或加速度传感器180B)可以将检测到的运动状态信息(比如角速度)发送给处理器110。处理器110基于运动状态信息确定当前是手持状态还是脚架状态(比如,角速度不为0时,说明手机100处于手持状态)。
指纹传感器180H用于采集指纹。手机100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于手机100的表面,与显示屏194所处的位置不同。
示例性的,手机100的显示屏194显示主界面,主界面中包括多个应用(比如相机应用、微信应用等)的图标。用户通过触摸传感器180K点击主界面中相机应用的图标,触发处理器110启动相机应用,打开摄像头193。显示屏194显示相机应用的界面,例如取景界面。
手机100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在手机100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。在本申请实施例中,移动通信模块150还可以用于与其它终端设备进行信息交互。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在手机100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。本申请实施例中,无线通信模块160可以用于接入接入点设备,向其它终端设备发送和接收消息。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。手机100可以接收按键输入,产生与手机100的用户设置以及功能控制有关的键信号输入。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和手机100的接触和分离。手机100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。手机100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,手机100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在手机100中,不能和手机100分离。
另外,手机100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。手机100可以接收按键190输入,产生与手机100的用户设置以及功能控制有关的键信号输入。手机100可以利用马达191产生振动提示(比如来电振动提示)。手机100中的指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。手机100中的SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和手机100的接触和分离。
应理解,在实际应用中,手机100可以包括比图9所示的更多或更少的部件,本申请实施例不作限定。图示手机100仅是一个范例,并且手机100可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明终端设备的软件结构。图10是本发明实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图10所示,应用程序包可以包括电话、相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图10所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.164,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合动效播放的场景,示例性说明手机100软件和硬件的工作流程。
当任一应用程序播放动效时,终端设备的进程采用各个线程,来调用三维图形处理库或者2D图形引擎进行动效期间时的各个图像帧的绘制,并通过表面管理器来进行图层的融合,通过内核层的线程驱动来调整线程的优先级,从而该应用程序可以在前台播放动效。
图10对终端设备的软件结构进行了描述,为了体现终端设备中软件在处理与动效相关任务时所作的工作,参考图11。图11是本申请实施例提供的另一种终端设备软件系统的系统架构(以下简称系统架构)图。在本申请实施例中,终端设备的系统架构内包含:应用程序层、应用程序框架(Framework)层、本地(Native)层(即系统库)以及内核(Kernel)层。
其中,应用程序层用于提供动效应用,在此基础上,还可以包含一些安卓应用程序,以及手机管家等应用程序。例如当桌面播放动效时,则包含桌面。
应用程序框架层用于系统服务以及提供构建应用程序时可能用到的各种应用程序编程接口(application programming interface,API),Framework层上具有活动管理服务(activity manager service,AMS)组件,AMS组件位于Framework层的系统服务(systemserver)中。AMS组件可以用于创建应用和切换应用。同时还有系统服务(system server)和意识进程(process)。其中系统服务中包含实时处理子系统,实时处理子系统内包括移动可信(mobile trusted mobile,MTM)服务。意识进程内包含非实时处理子系统,非实时处理子系统内包含配置管理和特性开关。Framework层还包括实现进程间通信的机制,例如Binder机制。
本地层用于提供本地服务和链接动态库,Native层上具有安卓运行时间(andriodrun time,ART)虚拟机、本地库(Libs)和意识服务(daemon)。ART虚拟机可以为Java程序提供执行环境。本地库中有本地链接动态库(libAndroid_Runtime)和图层合成服务(SurfaceFlinger,SF,即表面抛射器)、媒体服务等,其中,SF用于将渲染数据合成各个图层。
内核层为终端设备的各种硬件提供底层的驱动。Kernel层上还具有Linux驱动、线程驱动、内核拓展子系统、CPU调度模块以及双倍数据速率(double data rate,DDR)内存管理模块。CPU调度模块用于实现安卓系统中的线程调度。线程驱动用于管理binder线程优先级。
在本申请实施例中,为了实现上述图2A至图7所示实施例中动效期间丢帧改善的新功能,对MTM服务、配置管理、特性开关以及线程驱动进行了相应修改,以满足本申请实施例各个步骤的需求。
在图11所示系统架构的基础上,为了实现上述图2A至图7所示实施例中动效期间丢帧改善的新功能,参考图12,是本申请实施例基于图11所示系统架构的软件系统内部功能实现示意图。详述如下:
动效应用在启动时,动画平滑(Animation Smooth)模块从配置管理器(CMS)处获取特性配置(即新功能的配置开关)。
动效应用在开始动效和结束动效时,通知Animation Smooth模块对应的动效开始和动效结束事件。Animation Smooth模通过MTM接口下底层设置SurfaceFlinger线程加入和移除线程队列。
在动效播放期间,SurfaceFlinger线程在异步通信通知动效应用内的binder线程释放buffer时,由异步优先级传递模块,将优先级异步传递给binder线程。
图13是本申请一实施例提供的终端设备的结构示意图。如图13所示,该实施例的终端设备13包括:至少一个处理器130(图13中仅示出一个)、存储器131,所述存储器131中存储有可在所述处理器130上运行的计算机程序132。所述处理器130执行所述计算机程序132时实现上述各个线程处理方法实施例中的步骤,例如图3所示的步骤300至306。或者,所述处理器130执行所述计算机程序132时实现上述各装置实施例中各模块/单元的功能,例如图8所示模块81至83的功能。
所述终端设备13可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器130、存储器131。本领域技术人员可以理解,图13仅仅是终端设备13的示例,并不构成对终端设备13的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入发送设备、网络接入设备、总线等。
所称处理器130可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器131在一些实施例中可以是所述终端设备13的内部存储单元,例如终端设备13的硬盘或内存。所述存储器131也可以是所述终端设备13的外部存储设备,例如所述终端设备13上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器131还可以既包括所述终端设备13的内部存储单元也包括外部存储设备。所述存储器131用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器131还可以用于暂时地存储已经发送或者将要发送的数据。
另外,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例还提供了一种终端设备,所述终端设备包括至少一个存储器、至少一个处理器以及存储在所述至少一个存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使所述终端设备实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时可实现上述各个方法实施例中的步骤。
本申请实施例还提供了一种芯片系统,所述芯片系统包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现上述各个方法实施例中的步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (13)
1.一种线程处理方法,其特征在于,应用于终端设备,所述终端设备内包含图像合成线程、缓存释放线程和线程驱动,所述方法包括:
在通过所述图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧后,指示所述图像合成线程通知所述线程驱动;
在所述线程驱动接收到所述图像合成线程的通知后,指示所述线程驱动通知所述缓存释放线程,并提升所述缓存释放线程的优先级;
在所述缓存释放线程接收到所述线程驱动的通知后,指示所述缓存释放线程基于提升后的优先级释放所述缓冲单元内缓存的所述显示内容数据。
2.根据权利要求1所述的线程处理方法,其特征在于,在所述提升所述缓存释放线程的优先级操作中,提升后的优先级属于具有实时抢占所述终端设备处理器资源能力的优先级范围。
3.根据权利要求1所述的线程处理方法,其特征在于,还包括:
在所述缓存释放线程释放完所述缓冲单元内缓存的所述显示内容数据后,指示所述线程驱动降低所述缓存释放线程的优先级。
4.根据权利要求1至3中任一所述的线程处理方法,其特征在于,在通过所述图像合成线程将缓冲单元内缓存的显示内容数据合成为图像帧之前,还包括:
当检测到目标动效开始时,调整所述图像合成线程的优先级至期望优先级;所述期望优先级高于所述缓存释放线程的优先级;
所述通过所述图像合成线程将使用缓冲单元内缓存的显示内容数据合成为图像帧,包括:
在所述目标动效播放期间,指示所述图像合成线程基于所述期望优先级,将所述缓冲单元内缓存的所述显示内容数据合成为所述图像帧;
所述提升所述缓存释放线程的优先级,包括:将所述图像合成线程的所述期望优先级赋予所述缓存释放线程,以使得所述缓存释放线程的优先级提升至所述期望优先级。
5.根据权利要求4所述的线程处理方法,其特征在于,所述调整所述图像合成线程的优先级至期望优先级,包括:
将所述图像合成线程加入至优先级为所述期望优先级的目标线程队列,以使得所述图像合成线程具有所述期望优先级。
6.根据权利要求5所述的线程处理方法,其特征在于,所述将所述期望优先级赋予至所述缓存释放线程,包括:
利用目标线程队列关联的优先级传递接口,将所述图像合成线程的所述期望优先级赋予所述缓存释放线程。
7.根据权利要求1至3中任一所述的线程处理方法,其特征在于,所述提升所述缓存释放线程的优先级,包括:
将所述缓存释放线程加入至优先级为期望优先级的期望线程队列,以使得所述缓存释放线程具有所述期望优先级,其中所述期望优先级高于所述缓存释放线程的优先级。
8.根据权利要求4所述的线程处理方法,其特征在于,所述期望优先级高于所述图像合成线程的优先级。
9.根据权利要求8所述的线程处理方法,其特征在于,在所述缓存释放线程基于提升后的优先级释放所述缓冲单元内缓存的所述显示内容数据之后,还包括:
当检测到所述目标动效结束时,降低所述图像合成线程的优先级。
10.根据权利要求5所述的线程处理方法,其特征在于,所述期望优先级高于所述图像合成线程的优先级;
在所述缓存释放线程基于提升后的优先级释放所述缓冲单元内缓存的所述显示内容数据之后,还包括:
当检测到所述目标动效结束时,将所述图像合成线程移除所述目标线程队列。
11.根据权利要求4所述的线程处理方法,其特征在于,对所述目标动效开始的检测操作,包括:
当检测到所述目标动效对应的开始事件时,检测当前运行中的应用程序是否为播放所述目标动效的应用程序;
当前运行中的应用程序为播放所述目标动效的应用程序时,判定所述目标动效开始。
12.一种终端设备,其特征在于,所述终端设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至11任一项所述方法的步骤。
13.一种芯片系统,其特征在于,所述芯片系统包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如权利要求1至11任一项所述的线程处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211055916.8A CN116048833B (zh) | 2022-08-31 | 2022-08-31 | 一种线程处理方法、终端设备及芯片系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211055916.8A CN116048833B (zh) | 2022-08-31 | 2022-08-31 | 一种线程处理方法、终端设备及芯片系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116048833A CN116048833A (zh) | 2023-05-02 |
CN116048833B true CN116048833B (zh) | 2023-10-20 |
Family
ID=86127939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211055916.8A Active CN116048833B (zh) | 2022-08-31 | 2022-08-31 | 一种线程处理方法、终端设备及芯片系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116048833B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117909071B (zh) * | 2023-05-29 | 2024-08-23 | 荣耀终端有限公司 | 图像显示方法、电子设备、存储介质和芯片系统 |
CN116996496B (zh) * | 2023-07-12 | 2024-07-19 | 荣耀终端有限公司 | 一种上网系统、方法、可穿戴设备、芯片系统及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992347A (zh) * | 2019-04-10 | 2019-07-09 | Oppo广东移动通信有限公司 | 界面显示方法、装置、终端及存储介质 |
CN112527476A (zh) * | 2019-09-19 | 2021-03-19 | 华为技术有限公司 | 资源调度方法及电子设备 |
CN114579075A (zh) * | 2022-01-30 | 2022-06-03 | 荣耀终端有限公司 | 数据处理方法和相关装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132233B2 (en) * | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11403223B2 (en) * | 2019-09-26 | 2022-08-02 | Apple Inc. | De-prioritization supporting frame buffer caching |
JP7363684B2 (ja) * | 2020-06-30 | 2023-10-18 | トヨタ自動車株式会社 | リソース管理装置及びリソース管理方法 |
-
2022
- 2022-08-31 CN CN202211055916.8A patent/CN116048833B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992347A (zh) * | 2019-04-10 | 2019-07-09 | Oppo广东移动通信有限公司 | 界面显示方法、装置、终端及存储介质 |
CN112527476A (zh) * | 2019-09-19 | 2021-03-19 | 华为技术有限公司 | 资源调度方法及电子设备 |
CN114579075A (zh) * | 2022-01-30 | 2022-06-03 | 荣耀终端有限公司 | 数据处理方法和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116048833A (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813536B (zh) | 任务处理方法、装置、终端以及计算机可读存储介质 | |
WO2021063097A1 (zh) | 一种显示方法及电子设备 | |
US20230419570A1 (en) | Image Processing Method and Electronic Device | |
CN116048833B (zh) | 一种线程处理方法、终端设备及芯片系统 | |
CN114840127A (zh) | 一种显示方法及电子设备 | |
WO2022199509A1 (zh) | 应用执行绘制操作的方法及电子设备 | |
WO2021185352A1 (zh) | 一种版本升级方法及相关装置 | |
CN114625525A (zh) | 一种资源管控方法及设备 | |
CN114253491A (zh) | 显示方法及电子设备 | |
CN113986162A (zh) | 图层合成方法、设备及计算机可读存储介质 | |
CN114461589A (zh) | 读取压缩文件的方法、文件系统及电子设备 | |
CN116028148B (zh) | 一种界面处理方法、装置及电子设备 | |
CN117909071B (zh) | 图像显示方法、电子设备、存储介质和芯片系统 | |
CN116700578B (zh) | 图层合成方法、电子设备以及存储介质 | |
CN117097883B (zh) | 一种丢帧故障原因确定方法、电子设备和存储介质 | |
CN116672707B (zh) | 生成游戏预测帧的方法和电子设备 | |
CN116688494B (zh) | 生成游戏预测帧的方法和电子设备 | |
CN116860420B (zh) | 事件处理方法、可读存储介质和电子设备 | |
CN116074615B (zh) | 摄像头控制方法、装置及终端设备 | |
CN117724825B (zh) | 一种界面显示方法及电子设备 | |
CN116662150B (zh) | 应用启动耗时检测方法及相关装置 | |
WO2024067169A1 (zh) | 信息处理方法及电子设备 | |
WO2024179249A1 (zh) | 一种电子设备的显示方法、电子设备及存储介质 | |
WO2023061014A1 (zh) | 任务管理方法及装置 | |
WO2024140560A1 (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 |