CN115016706B - 一种线程的调度方法及电子设备 - Google Patents

一种线程的调度方法及电子设备 Download PDF

Info

Publication number
CN115016706B
CN115016706B CN202111665048.0A CN202111665048A CN115016706B CN 115016706 B CN115016706 B CN 115016706B CN 202111665048 A CN202111665048 A CN 202111665048A CN 115016706 B CN115016706 B CN 115016706B
Authority
CN
China
Prior art keywords
thread
application
rendering
electronic device
identification
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
Application number
CN202111665048.0A
Other languages
English (en)
Other versions
CN115016706A (zh
Inventor
张毓
孙文涌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202111665048.0A priority Critical patent/CN115016706B/zh
Publication of CN115016706A publication Critical patent/CN115016706A/zh
Application granted granted Critical
Publication of CN115016706B publication Critical patent/CN115016706B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

一种线程的调度方法及电子设备,涉及电子设备技术领域,能够改善应用程序的页面的显示效果,避免电子设备发生卡顿或者丢帧。具体方案包括:电子设备可以接收在第一应用的界面上的第一操作,第一操作用于触发在第一应用的界面上显示目标信息。之后,电子设备可以获取独立渲染线程的线程标识,独立渲染线程用于执行应用渲染线程分发的目标渲染事件,目标渲染事件用于指示对目标信息的显示处理。然后,电子设备可以根据独立渲染线程的线程标识,将独立渲染线程调整至高优先级调度组,高优先级调度组中的线程的调度优先级高于电子设备中其他线程的调度优先级,其他线程为除高优先级调度组中的线程以外的线程。

Description

一种线程的调度方法及电子设备
技术领域
本申请实施例涉及电子设备技术领域,尤其涉及一种线程的调度方法及电子设备。
背景技术
随着电子技术的发展,电子设备(如手机、平板电脑或智能手表等)的功能越来越多。例如,电子设备中安装有各类应用程序,电子设备可以通过各类应用程序,实现多种功能。并且,不同的应用程序对应有渲染线程,可以对应用程序中的特定信息进行渲染。例如,弹幕渲染线程可以对弹幕信息的显示过程进行渲染绘制。
但是,当电子设备中运行的应用程序的数量较多时,电子设备中运行的线程可能会占用较多的电子设备的处理资源,使电子设备的处理能力降低。这样一来,电子设备可能无法及时调度应用程序的渲染线程,影响应用程序的页面的显示效果,导致电子设备发生卡顿或者丢帧,影响了用户的使用体验。
发明内容
本申请提供一种线程的调度方法及电子设备,能够改善应用程序的页面的显示效果,避免电子设备发生卡顿或者丢帧。
第一方面,本申请提供一种线程的调度方法,该方法可以应用于电子设备。
该方法中,电子设备可以接收在第一应用的界面上的第一操作,第一操作用于触发在第一应用的界面上显示目标信息。之后,电子设备可以获取独立渲染线程的线程标识,独立渲染线程用于执行应用渲染线程分发的目标渲染事件,目标渲染事件用于指示对目标信息的显示处理。然后,电子设备可以根据独立渲染线程的线程标识,将独立渲染线程调整至高优先级调度组,高优先级调度组中的线程的调度优先级高于电子设备中其他线程的调度优先级,其他线程为除高优先级调度组中的线程以外的线程。
可以理解的是,电子设备接收在第一应用的界面上的第一操作之后,可以获取独立渲染线程的线程标识,然后,电子设备可以根据独立渲染线程的线程标识,将独立渲染线程调整至高优先级调度组。由于高优先级调度组中的线程的调度优先级高于电子设备中其他线程的调度优先级。因此,电子设备可以优先调度独立渲染线程对目标信息进行渲染,保障了目标信息的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
结合第一方面,在一种可能的设计方式中,该线程的调度方法还可以包括:电子设备可以调用独立渲染线程执行目标渲染事件。在电子设备调用独立渲染线程对目标信息进行显示处理的过程中,电子设备可以获取独立渲染线程的线程标识。
也就是说,在电子设备调用独立渲染线程对目标信息进行显示处理的过程中,电子设备可以获取独立渲染线程的线程标识,提高独立渲染线程的调度优先级。如此,电子设备可以优先调度独立渲染线程对目标信息进行渲染,保障了目标信息的显示效果。
结合第一方面,在另一种可能的设计方式中,上述“电子设备根据独立渲染线程的线程标识,将独立渲染线程调整至高优先级调度组”的方法,包括:电子设备可以根据独立渲染线程的线程标识,确定独立渲染线程。之后,电子设备将独立渲染线程调整至高优先级调度组。
可以理解的是,在电子设备获取到独立渲染线程的线程标识之后,可以根据线程标识确定独立渲染线程,进而可以将独立渲染线程调整至高优先级调度组,以提高独立渲染线程的调度优先级。
结合第一方面,在另一种可能的设计方式中,该线程的调度方法还包括:电子设备将独立渲染线程的线程标识存储至第一应用的目标线程列表,目标线程列表用于存储独立渲染线程的线程标识。
可以理解的是,在电子设备将独立渲染线程的线程标识存储至第一应用的目标线程列表之后,电子设备可以目标线程列表对应的线程调整至高优先级调度组。如此,无需单独调整独立渲染线程,减少了资源的消耗。
结合第一方面,在另一种可能的设计方式中,该线程的调度方法还包括:电子设备可以确定目标线程列表中是否存在独立渲染线程的线程标识。若目标线程列表中不存在独立渲染线程的线程标识,电子设备则可以将独立渲染线程的线程标识存储至目标线程列表。
可以理解的是,在目标线程列表中不存在独立渲染线程的线程标识的情况下,可以将独立渲染线程的线程标识存储至目标线程列表。如此,在第一应用从后台调整至前台后,电子设备可以目标线程列表对应的线程调整至高优先级调度组,无需单独调整独立渲染线程,减少了资源的消耗。
结合第一方面,在另一种可能的设计方式中,该线程的调度方法还包括:电子设备可以接收第二操作,第二操作用于触发将第一应用调整为前台应用。响应于第二操作,电子设备可以获取第一应用的线程信息,第一应用的线程信息包括目标线程列表。接着,电子设备可以根据第一应用的线程信息,确定第一应用的线程。然后,电子设备可以将第一应用的线程调整至高优先级调度组。
这样一来,在第一应用调整为前台应用的情况下,电子设备可以获取第一应用的线程信息,并根据第一应用的线程信息确定相应的线程。然后,电子设备可以将第一应用的线程调整至高优先级调度组。如此,电子设备可以优先调用第一应用的线程对第一应用的页面进行渲染,保障了第一应用的页面的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。并且,在目标线程列表包括独立渲染线程的标识的情况下,第一应用的线程可以包括独立渲染线程。如此,可以将独立渲染线程调整至高优先级调度组,提高独立渲染线程的调度优先级。
结合第一方面,在另一种可能的设计方式中,该线程的调度方法还包括:电子设备可以接收第三操作,第三操作用于触发将第一应用调整为后台应用。响应于第三操作,电子设备可以获取第一应用的线程信息。之后,电子设备可以根据第一应用的线程信息,确定第一应用的线程。然后,电子设备可以将第一应用的线程调整至其他调度组,其他调度组为除高优先级调度组以外的调度组,其他调度组中的线程的调度优先级低于高优先级调度组中的线程的调度优先级。
这样一来,在第一应用调整为后台应用的情况下,电子设备可以获取第一应用的线程信息,并根据第一应用的线程信息确定相应的线程。然后,电子设备可以将第一应用的线程调整至其他调度组。如此,可以降低第一应用的线程的调度优先级,使得电子设备可以合理优化资源的分配,提高电子设备的性能。
结合第一方面,在另一种可能的设计方式中,第一应用的线程信息还包括:第一应用的主线程的线程标识和第一应用的应用渲染线程的线程标识。
如此,在电子设备运行在前台的情况下,电子设备可以主线程和应用渲染线程调整至高优先级调度组。如此,电子设备可以优先调用主线程和应用渲染线程对第一应用的页面进行渲染,保障了第一应用的页面的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
结合第一方面,在另一种可能的设计方式中,独立渲染线程包括:弹幕渲染线程,和/或,键盘弹出渲染线程,和/或,图标渲染线程。
结合第一方面,在另一种可能的设计方式中,独立渲染线程为弹幕渲染线程的情况下,目标信息为弹幕信息;独立渲染线程为键盘弹出渲染线程的情况下,目标信息为键盘弹出动效;独立渲染线程为图标渲染线程的情况下,目标信息为图标显示动效。
结合第一方面,在另一种可能的设计方式中,显示处理包括:绘制处理和/或渲染处理。
结合第一方面,在另一种可能的设计方式中,电子设备可以包括:第一应用和线程识别模块。该线程的调度方法还可以包括:第一应用可以向线程识别模块发送第一消息,第一消息用于指示获取独立渲染线程的线程标识。线程识别模块可以接收来自第一应用的第一消息,获取独立渲染线程的线程标识。
结合第一方面,在另一种可能的设计方式中,电子设备还包括:线程信息管理模块。该线程的调度方法还可以包括:线程识别模块向线程信息管理模块发送独立渲染线程的线程标识。线程信息管理模块接收来自线程识别模块的独立渲染线程的线程标识。若线程信息管理模块中不存在独立渲染线程的线程标识,线程信息管理模块则将独立渲染线程的线程标识存储至第一应用的目标线程列表。
结合第一方面,在另一种可能的设计方式中,电子设备还包括:线程策略模块和调度分组模块。该线程的调度方法还可以包括:线程信息管理模块向线程策略模块发送第二消息,第二消息用于指示目标线程列表中新增独立渲染线程的线程标识。线程策略模块接收来自线程信息管理模块的第二消息,根据第二消息,确定将独立渲染线程调整至高优先级调度组。线程策略模块向调度分组模块发送第三消息,第三消息用于指示将独立渲染线程调整至高优先级调度组。调度分组模块接收来自线程策略模块的第三消息。调度分组模块根据独立渲染线程的线程标识,确定独立渲染线程。调度分组模块将独立渲染线程调整至高优先级调度组。
结合第一方面,在另一种可能的设计方式中,该线程的调度方法还可以包括:第一应用向线程策略模块发送第四消息,第四消息用于指示第一应用运行在前台。线程策略模块接收来自第一应用的第四消息,确定将第一应用调整至高优先级调度组。线程策略模块向线程信息管理模块发送第五消息,第五消息用于指示获取第一应用的线程信息。线程信息管理模块接收来自线程策略模块的第五消息,确定第一应用的线程信息,并向线程策略模块发送第一应用的线程信息。线程策略模块接收来自线程信息管理模块的第五消息。线程策略模块向调度分组模块发送第六消息,第六消息用于指示将第一应用调的线程整至高优先级调度组。调度分组模块接收来自线程策略模块的第六消息,将第一应用的线程调整至高优先级调度组。
第二方面,本申请提供一种电子设备,该电子设备包括:存储器、显示屏和一个或多个处理器,上述存储器、显示屏与上述处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令;当计算机指令被上述一个或多个处理器执行时,使得电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
第三方面,本申请提供一种芯片系统,该芯片系统应用于电子设备。该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。该接口电路用于从电子设备的存储器接收信号,并向处理器发送该信号,该信号包括存储器中存储的计算机指令。当处理器执行所述计算机指令时,电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
第五方面,本申请提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。
可以理解地,上述提供的第二方面及其任一种可能的设计方式所述的电子设备,第三方面所述的芯片系统,第四方面所述的计算机可读存储介质,第五方面所述的计算机程序产品所能达到的有益效果,可参考如第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1A为本申请实施例提供的一种显示界面的实例示意图;
图1B为本申请实施例提供的一种线程运行状态的实例示意图;
图1C为本申请实施例提供的另一种显示界面的实例示意图;
图2A为本申请实施例提供的一种电子设备的硬件结构示意图;
图2B为本申请实施例提供的一种电子设备的软件结构示意图;
图3为本申请实施例提供的一种线程的调度方法流程图;
图4为本申请实施例提供的另一种显示界面的实例示意图;
图5为本申请实施例提供的另一种线程的调度方法流程图;
图6为本申请实施例提供的另一种显示界面的实例示意图;
图7为本申请实施例提供的另一种线程的调度方法流程图;
图8为本申请实施例提供的另一种线程的调度方法流程图;
图9为本申请实施例提供的另一种线程的调度方法流程图;
图10为本申请实施例提供的一种芯片系统的结构组成示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请中字符“/”,一般表示前后关联对象是一种“或者”的关系。例如,A/B可以理解为A或者B。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括其他没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
另外,在本申请实施例中,“示例性的”、或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、或者“例如”等词旨在以具体方式呈现概念。
随着电子技术的发展,电子设备的功能越来越多。例如,电子设备中安装有各类应用程序,电子设备可以通过各类应用程序,实现多种功能。并且,不同的应用程序对应有独立渲染线程,可以对应用程序的显示页面进行渲染。例如,电子设备中安装有视频应用,视频应用对应的独立渲染线程为弹幕渲染线程,该弹幕渲染线程可以对弹幕信息进行局部渲染绘制。又例如,电子设备中安装有输入法应用,输入法应用对应的独立渲染线程为键盘弹出渲染线程,该键盘弹出渲染线程用于对键盘弹出的过程进行渲染。但是,当电子设备中运行的应用程序的数量较多时,大量线程会占用电子设备的处理资源,降低了电子设备的处理能力(即电子设备的可用处理资源较少)。如此,在电子设备的可用处理资源较少的情况下,电子设备可能无法及时调度应用程序的独立渲染线程,影响应用程序的页面的显示效果,导致电子设备发生卡顿或者丢帧。
在本申请实施例中,独立渲染线程用于执行应用渲染线程分发的目标渲染事件。示例性的,以独立渲染线程为hwuiTask线程,应用渲染线程为RenderThread线程为例,RenderThread线程可以为hwuiTask线程分发回调事件(即目标渲染事件,对图标显示动效进行渲染),hwuiTask线程执行该回调事件。
可选的,该独立渲染线程还可以执行除应用渲染线程以外的其他线程分发的目标渲染事件。
需要说明的是,本申请实施例中,独立渲染线程执行应用渲染线程分发的部分渲染事件,异步执行应用渲染线程分发的目标渲染事件,和/或,异步执行除应用渲染线程外其他线程(例如主线程)分发的目标渲染事件。相较于应用渲染线程,应用渲染线程只能执行主线程分发的目标渲染事件。其中,当一个应用程序启动时,操作系统会创建一个线程,该线程可以称为主线程。该主线程可以创建该应用程序的其他线程(如应用渲染线程)。
示例性的,在一种应用场景中,以独立渲染线程为键盘弹出渲染线程为例。如图1A所示,电子设备显示聊天界面101,聊天界面101包括输入框102。响应于用户对输入框102的操作(例如点击操作),电子设备可以创建键盘弹出渲染线程(例如InsetsAnimation线程)。之后,应用渲染线程(例如RenderThread线程)可以调用键盘弹出渲染线程对键盘弹出过程(即键盘弹出动效)进行渲染绘制。键盘弹出渲染线程渲染绘制完成后,将渲染绘制后的图像数据发送至图像合成系统(surface flinger,SF)。SF将绘制渲染后的键盘弹出动效和视频帧数据进行合成,将合成后的一帧图像数据发送给显示驱动,驱动显示屏显示图形。然后,电子设备可以在聊天界面102显示键盘弹出动效。但是,上述过程中,应用渲染线程调用键盘弹出渲染线程之后,可能电子设备无法及时为键盘弹出渲染线程分配资源,导致键盘弹出渲染线程一直处于可运行状态(如runnable状态)。在一段时间(例如2毫秒)之后,电子设备才可以为键盘弹出渲染线程分配资源,使键盘弹出渲染线程对键盘弹出动效进行渲染绘制。例如,如图1B所示,键盘弹出渲染线程在时刻104处于可运行状态,即准备对键盘弹出过程进行渲染绘制。之后,在时刻104-时刻105之间由于键盘弹出渲染线程未得到资源,一直处于可运行状态。在时刻105之后,键盘弹出渲染线程得到资源,键盘弹出渲染线程进入运行状态,开始对键盘弹出过程进行渲染绘制。如此,导致键盘弹出渲染线程渲染绘制的图像无法及时在电子设备上显示,造成键盘弹出过程发生丢帧和卡顿。
示例性的,在另一种应用场景中,以独立渲染线程为弹幕渲染线程为例。如图1C所示,电子设备显示视频播放界面106,该视频播放界面包括弹幕控制按钮107,该弹幕控制按钮107用于开启或者关闭弹幕。响应于用户对弹幕控制按钮107的操作(例如点击操作),主线程可以调用弹幕渲染线程对弹幕进行渲染绘制。弹幕渲染线程渲染绘制完成后,将渲染绘制的弹幕图像数据发送至SF。SF将绘制渲染后的弹幕图形数据和视频帧数据进行合成,将合成后的一帧图像数据发送给显示驱动,驱动显示屏显示图形。然后,电子设备可以在视频播放界面106显示弹幕信息108,例如,弹幕信息108可以为“真帅!!”、“跑的好快”、“加油”等。与图1A所示场景中的键盘弹出渲染线程相同,在主线程调用弹幕渲染线程之后,可能电子设备无法及时为弹幕渲染线程分配资源,导致弹幕渲染线程一直处于可运行状态(如runnable状态),无法及时对弹幕进行渲染。
示例性的,在另一种应用场景中,以独立渲染线程为图标渲染线程为例。电子设备显示主界面,其中,主界面为用户点击系统导航栏上的Home键时,电子设备显示的界面。响应于对主界面中任一应用的图标的操作,应用渲染线程执行渲染操作,并触发图标渲染线程执行回调任务,图标渲染线程可以对图标显示动效进行渲染处理。在图标渲染线程执行完成回调任务之后,应用渲染线程可以继续执行其他渲染操作。但是,在电子设备无法及时为图标渲染线程分配资源时,图标渲染线程会一直处于可运行状态,无法及时完成回调任务。
为此,本申请实施例提供一种线程的调度方法。该方法中,电子设备可以获取独立渲染线程的线程标识。之后,电子设备将在前台运行的应用对应的独立渲染线程的线程标识加入高优先级调度组,该高优先级调度组中的线程标识对应的线程可以优先被电子设备调度。如此,电子设备可以优先调度在前台运行的应用的独立渲染线程,以保障独立渲染线程可以及时渲染绘制应用的显示图像,提高了应用页面的显示效果,避免了电子设备发生卡顿或者丢帧。
其中,本申请实施例中的应用(如第一应用、第二应用)可以是安装在电子设备中的嵌入式应用程序(即电子设备的系统应用)或者可下载应用程序。其中,嵌入式应用程序是作为电子设备(如手机)实现的一部分提供的应用程序。可下载应用程序是一个可以提供自己的因特网协议多媒体子系统(Internet Protocol Multimedia Subsystem,IMS)连接的应用程序,该可下载应用程序可以预先安装在终端中的应用或可以由用户下载并安装在终端中的第三方应用。
举例来说,上述应用可以是安装在终端中的嵌入式应用程序(即终端的系统应用)。例如,上述第一应用可以是输入法应用,第二应用可以是短信应用。以输入法应用为例,在该方法中,在前台应用为输入法应用的情况下,将键盘弹出渲染线程的线程标识加入高优先级分组。
又例如,上述多个应用还可以是可下载应用程序。上述第一应用可以是视频应用。该方法中,在前台应用为视频应用,且视频应用开启弹幕功能的情况下,将弹幕渲染线程加入高优先级分组。
示例性的,本申请实施例中的电子设备可以是平板电脑、手机、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备、车载设备等设备,本申请实施例对该电子设备的具体形态不作特殊限制。
本申请提供的线程的调度方法的执行主体可以为线程的调度装置,该执行装置可以为图2A所示的电子设备。同时,该执行装置还可以为该电子设备的中央处理器(CentralProcessing Unit,CPU),或者该电子设备的图形处理器(graphics processing unit,GPU),或者该电子设备的网络处理器(neural-network processing units,NPU),或者该电子设备中的用于线程的调度控制模块。本申请实施例中以电子设备执行线程的调度方法为例,说明本申请实施例提供的线程的调度方法。
请参考图2A,本申请这里以电子设备为图2A所示的手机200为例,对本申请提供的电子设备进行介绍。其中,图2A所示的手机200仅仅是电子设备的一个范例,并且手机200可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图2A中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
如图2A所示,手机200可以包括:处理器210,外部存储器接口220,内部存储器221,通用串行总线(universal serial bus,USB)接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,按键290,马达291,指示器292,摄像头293,显示屏294,以及用户标识模块(subscriber identification module,SIM)卡接口295等。
其中,上述传感器模块280可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器和骨传导传感器等传感器。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是手机200的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以存储处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对手机200的结构限定。在另一些实施例中,手机200也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。充电管理模块240为电池242充电的同时,还可以通过电源管理模块241为电子设备供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210,内部存储器221,外部存储器,显示屏294,摄像头293,和无线通信模块260等供电。在一些实施例中,电源管理模块241和充电管理模块240也可以设置于同一个器件中。
手机200的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器以及基带处理器等实现。在一些实施例中,手机200的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得手机200可以通过无线通信技术与网络以及其他设备通信。例如,本申请实施例中,手机200可以通过无线通信技术向其他设备发送数据。
天线1和天线2用于发射和接收电磁波信号。手机200中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在手机200上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
无线通信模块260可以提供应用在手机200上的包括无线局域网(wireless localarea networks,WLAN)(如(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。例如,本申请实施例中,手机200可以通过无线通信模块260接入Wi-Fi网络。
无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
手机200通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。该显示屏294包括显示面板。例如,本申请实施例中,显示屏294可以用于显示上述第一应用的应用界面,如视频播放界面、聊天界面等。
手机200可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及应用处理器等实现拍摄功能。ISP用于处理摄像头293反馈的数据。摄像头293用于捕获静态图像或视频。在一些实施例中,手机200可以包括1个或N个摄像头293,N为大于1的正整数。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机200的存储能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将音乐,视频等文件存储在外部存储卡中。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器210通过运行存储在内部存储器221的指令,从而执行手机200的各种功能应用以及数据处理。例如,在本申请实施例中,处理器210可以通过执行存储在内部存储器221中的指令,内部存储器221可以包括存储程序区和存储数据区。
其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机200使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器221可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flashstorage,UFS)等。
手机200可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键290包括开机键,音量键等。按键290可以是机械按键。也可以是触摸式按键。马达291可以产生振动提示。马达291可以用于来电振动提示,也可以用于触摸振动反馈。指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口295用于连接SIM卡。SIM卡可以通过插入SIM卡接口295,或从SIM卡接口295拔出,实现和手机200的接触和分离。手机200可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口295可以支持Nano SIM卡,Micro SIM卡,SIM卡等。
尽管图2A未示出,手机200还可以闪光灯、微型投影装置、近场通信(Near FieldCommunication,NFC)装置等,在此不再赘述。
可以理解的是,本实施例示意的结构并不构成对手机200的具体限定。在另一些实施例中,手机200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在对电子设备的硬件结构进行介绍之后,本申请这里以电子设备为手机200为例,对本申请提供的电子设备的系统架构进行介绍。手机200的系统架构可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的
Figure BDA0003451620300000091
系统为例,示例性说明手机200的软件结构。
图2B是本发明实施例的手机200的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图2B所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图2B所示,应用程序框架层可以包括窗口管理器,视图系统,电话管理器,活动管理器,通知管理器等。
其中,窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。视图系统还包括线程识别模块,该线程识别模块用于获取线程的线程标识(如线程号)。线程可以为系统线程、应用渲染线程、独立渲染线程等。例如,该线程识别模块可以获取键盘弹出渲染线程的线程标识。又例如,该线程识别模块可以获取弹幕渲染线程的线程标识。又例如,该线程识别模块可以获取hwuiTask线程的线程标识。
需要说明的是,不同线程均可以通过一个线程识别模块获取线程的线程标识。或者,线程识别模块包括多个子识别模块,不同线程可以通过不同的子识别模块获取线程的线程标识。例如,线程识别模块包括:子识别模块A、子识别模块B和子识别模块C。子识别模块A用于获取键盘弹出渲染线程的线程标识。子识别模块B用于获取弹幕渲染线程的线程标识。子识别模块C用于获取图标渲染线程的线程标识。
电话管理器用于提供手机200的通信功能。例如通话状态的管理(包括接通,挂断等)。
活动管理器用于管理应用的线程信息,该线程信息包括应用进程中多个线程标识,线程信息存储在应用的进程信息中。该活动管理器包括:线程信息管理模块和线程策略模块。其中,线程信息管理模块用于管理(如存储、增加)应用的线程的信息。例如,线程信息管理模块存储有视频应用的主线程的线程标识、应用渲染线程的线程标识。又例如,线程信息管理模块存储有视频应用的主线程的线程标识和应用渲染线程的线程标识,在获取到弹幕渲染线程之后,线程信息管理模块将弹幕渲染线程的线程标识存储至线程信息管理模块。线程策略模块用于确定线程的分组策略,指示调度分组模块将线程添加至相应的调度组。例如,线程策略模块确定将弹幕渲染线程添加至调度组a,确定将键盘弹出渲染线程添加至调度组b。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:函数库,媒体库(Media Libraries),图像合成库,图像渲染库等。
函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等。
图像渲染库用于二维或三维图像的渲染。图像合成库用于二维或三维图像的合成。
可能的实现方式中,应用通过图像渲染库对图像进行绘制渲染,然后应用将绘制渲染后的图像发送至图像合成系统的缓存队列中。图像合成系统(例如,surface flinger)从缓存队列中按顺序获取待合成的一帧图像,然后通过图像合成库进行图像合成。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
硬件抽象层,可以包含多个库模块,库模块如可以为硬件合成器(hwcomposer,HWC)、摄像头库模块等。Android系统可以为设备硬件加载相应的库模块,进而实现应用程序框架层访问设备硬件的目的。设备硬件可以包括如电子设备中的LCD显示屏、摄像头等。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,调度分组模块。其中,调度分组模块可以接收来自线程策略模块的分组策略,并按照分组策略将线程加入调度组。调度分组模块管理至少一个调度组,不同的调度组中的线程的调度优先级不同。
需要说明的是,线程的调度优先级是指,电子设备调用线程的优先级。
示例性的,至少一个调度组中包括:高优先级调度组和低优先级调度组,高优先级调度组中的线程的调度优先级高于低优先级调度组中的线程的调度优先级。也就是说,该高优先级调度组中的线程可以优先被调用。例如,在线程处于高优先级调度组的情况下,操作系统可以优先为该线程分配处理资源,使得电子设备可以调用该线程执行任务。
下面结合启动应用程序的场景,示例性说明手机200软件以及硬件的工作流程。
当触控面板中触摸传感器180K接收到触摸操作时,内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸力度,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。内核层通过输入处理库将原始输入事件上报至应用程序框架层的输入管理器。应用程序框架层的输入管理器解析该原始输入事件的信息(包括:操作类型和报点位置等)和根据当前焦点确定焦点应用,并将解析后的信息发送至焦点应用。焦点可以是触摸操作中触碰点或者鼠标点击操作中点击位置。焦点应用为终端设备前台运行的应用或者触摸操作中触碰位置对应的应用。焦点应用根据解析后的原始输入事件的信息(例如,报点位置)确定该原始输入事件所对应的控件。
以该触摸操作是触摸点击操作,该触摸点击操作所对应的控件为社交应用的输入框控件为例,社交应用通过应用程序框架层的视图系统,调用系统库中图像渲染库对图像进行绘制渲染。同时,可以调用键盘弹出渲染线程对键盘弹出动效进行渲染。之后,社交应用将绘制渲染后的键盘弹出动效数据发送至图像合成系统的缓存队列中。通过系统库中图像合成库将图像合成系统中绘制渲染后的图像合成为包括键盘的社交界面。图像合成系统通过内核层的显示驱动,使得屏幕(显示屏)显示包括键盘的社交界面。
以下实施例中的方法均可以在具有上述硬件结构和上述系统架构的电子设备中实现。以下实施例中以上述电子设备为例,对本申请实施例的方法进行说明。
为方便理解,下面结合图3-图9对本申请实施例提供的线程的调度方法中涉及的各个模块之间交互的过程进行说明。
示例性的,图3为本申请实施例提供的线程的调度方法中各个模块之间交互的过程示意图。
如图3所示,系统可以包括:第一应用、视图系统、活动管理器和调度分组模块。视图系统包括线程识别模块,活动管理器包括:线程信息管理模块和线程策略模块。
需要说明的是,以下实施例中,以第一应用为视频应用,独立渲染线程为弹幕渲染线程为例,介绍本申请实施例。
S301、响应于启动视频应用的操作,视频应用运行在前台。
其中,视频应用运行在前台是指,电子设备显示的界面为视频应用的显示界面。
需要说明的是,本申请实施例对启动视频应用的操作不作限定。例如,启动视频应用的操作可以为点击操作。又例如,启动视频应用的操作可以为长按操作。又例如,启动视频应用的操作可以为语音操作。
在本申请实施例中,电子设备接收用户启动视频应用的操作,创建视频应用的主线程,视频应用的主线程进入运行状态。之后,视频应用的主线程可以创建视频应用的应用渲染线程。视频应用的主线程调用视频应用的应用渲染线程对视频应用的显示界面进行渲染绘制。
需要说明的是,电子设备创建视频应用的主线程的方法,可以参考常规技术中电子设备启动应用程序时,创建该应用程序的主线程的方式,此处不予赘述。视频应用的主线程创建视频应用的应用渲染线程的方法,可以参考常规技术中应用程序的主线程创建应用渲染线程的方式,此处不予赘述。
S302、视频应用向线程策略模块发送第一指示消息。
其中,第一指示消息(也可以称为第四消息)用于指示视频应用运行在前台。该第一指示消息包括视频应用的标识。
需要说明的是,本申请实施例对视频应用的标识不作限定。例如,视频应用的标识可以为视频应用的应用名称。又例如,视频应用的标识可以为视频应用的进程号。又例如,视频应用的标识可以为视频应用的主线程的线程号。
相应的,在视频应用向线程策略模块发送第一指示消息之后,线程策略模块接收来自视频应用的第一指示消息。
S303、线程策略模块根据第一指示消息,确定将视频应用的线程调整至高优先级调度组。
在一种可能的实现方式中,线程策略模块中存储有分组策略信息,分组策略信息用于指示线程调整调度组的策略。
一种可能的设计中,分组策略信息可以包括第一策略信息,第一策略信息用于指示在应用程序运行在前台的情况下,将应用程序的线程调整至高优先级调度组
在本申请实施例中,线程策略模块可以根据第一指示消息,确定视频应用运行在前台。之后,线程策略模块可以根据第一策略信息,确定将视频应用的线程调整至高优先级调度组。
S304、线程策略模块向线程信息管理模块发送第一查询消息。
其中,第一查询消息(也可以称为第五消息)用于指示获取视频应用的线程信息,第一查询消息包括视频应用的标识。
相应的,线程信息管理模块可以接收来自线程策略模块的第一查询消息。
S305、线程信息管理模块查询视频应用的线程信息。
其中,线程信息包括目标线程列表,该目标线程列表用于存储独立渲染线程的线程标识。
需要说明的是,当前目标线程列表为空列表,即目标线程列表中不存在独立渲染线程的线程标识。
可选的,线程信息还可以包括:视频应用的主线程的线程标识和视频应用的应用渲染线程的线程标识。
需要说明的是,本申请实施例对线程标识不作限定。例如,线程标识可以为线程号。又例如,线程标识可以为线程名称。
示例性的,线程信息可以包括:pid10001(即主线程ActivityThread的线程号)、pid 10002(即应用渲染线程RenderThread的线程号)和keyThreadList(即空的目标线程列表)。
在一种可能的实现方式中,线程信息管理模块中存储有应用程序的标识与应用程序的线程信息之间的对应关系。线程策略模块可以根据视频应用的标识,获取视频应用的线程信息。
示例性的,如表1所示,其示出了线程信息管理模块中存储的应用与应用的线程信息之间的对应关系,以及线程信息中的线程标识。
表1
应用 线程信息 线程标识
应用A 线程信息01 pid01、RenderThread01、keyThreadList01
应用B 线程信息02 pid02、RenderThread02、keyThreadList02
应用C 线程信息03 pid03、RenderThread03、keyThreadList03
也就是说,应用A的线程信息为线程信息01,线程信息01包括pid01、RenderThread01、keyThreadList01。例如,keyThreadLis01存储有hwuiTask01(即hwuiTask线程的线程号)。应用B的线程信息为线程信息02,线程信息02包括pid02、RenderThread02、keyThreadList02。应用C的线程信息为线程信息03,线程信息03包括pid03、RenderThread03、keyThreadList 03。
需要说明的是,本申请实施例对应用程序的标识不作限定。例如,应用程序的标识可以为应用程序的名称。又例如,应用程序的标识可以为应用程序的进程号。又例如,应用程序的标识可以为应用程序的主线程号。
可选的,视频应用的线程信息可以存储在视频应用的进程信息(例如ProcessRecord对象)中。线程信息管理模块可以根据视频应用的标识确定视频应用的进程信息。之后,线程信息管理模块从视频应用的进程信息获取视频应用的线程信息。
需要说明的是,在本申请实施例中,在视频应用运行的情况下,电子设备不删除视频应用的进程信息。其中,视频应用运行包括:视频应用在前台运行和/或视频应用在后台运行。也就是说,在视频应用运行的情况下,线程信息管理模块可以获取视频应用的线程信息。
S306、线程信息管理模块向线程策略模块发送视频应用的线程信息。
在一种可能的实现方式中,线程信息可以包括:目标线程列表。线程信息管理模块可以向线程策略模块发送视频应用的目标线程列表。
相应的,线程策略模块可以接收到来自线程信息管理模块的视频应用的目标线程列表。
在另一种可能的实现方式中,线程信息可以包括:主线程的线程标识、应用渲染线程的线程标识和目标线程列表。线程信息管理模块可以向线程策略模块发送视频应用的主线程的线程标识、应用渲染线程的线程标识和目标线程列表。
相应的,线程策略模块可以接收到来自线程信息管理模块的视频应用的主线程的线程标识、应用渲染线程的线程标识和目标线程列表。
需要说明的是,本申请实施例对线程策略模块执行确定调度组(即S303)和线程策略模块执行获取线程标识(即S304-S306)之间的顺序不作限定。例如,可以先执行S303,再执行S304-S306。又例如,可以先执行S304-S306,再执行S303。又例如,可以同时执行S303和S306。
S307、线程策略模块向调度分组模块发送第一调度消息。
其中,第一调度消息(也可以称为第六消息)用于指示将视频应用的线程调整至高优先级调度组。第一调度消息可以包括视频应用的线程信息,例如,主线程的线程标识、应用渲染线程的线程标识和目标线程列表。
在本申请实施例中,在线程策略模块确定调度组(即S303)和获取到线程信息(S304-S306)之后,线程策略模块向调度分组模块发送第一调度消息。
相应的,调度分组模块可以接收来自线程策略模块的第一调度消息。
S308、调度分组模块将视频应用的线程调整至高优先级调度组。
其中,高优先级调度组中的线程的调度优先级高于电子设备中其他线程的调度优先级。其他线程为电子设备的全部线程中除高优先级调度组中的线程以外的线程。
需要说明的是,电子设备可以优先为高优先级调度组中的线程分配处理资源。如此,电子设备可以优先调度高优先级调度组中的线程执行相应的任务。
在一种可能实现的方式中,调度分组模块接收来自线程策略模块的第一调度消息之后,可以根据视频应用的线程信息,确定视频应用的线程。之后,将视频应用的线程调整至高优先级调度组。
示例性的,假如视频应用的线程信息包括:pid10001(即主线程ActivityThread的线程号)、pid 10002(即应用渲染线程RenderThread的线程号)和keyThreadList01(即空的目标线程列表),则视频应用的线程可以包括:ActivityThread和RenderThread。之后,可以将ActivityThread和RenderThread调整至高优先级调度组。同时,假如当前处于可运行状态的线程还包括线程A和线程B,即线程A和线程B也需要被调度。电子设备可以优先调度ActivityThread和RenderThread,不调度线程A和线程B。
可以理解的是,视频应用运行在前台时,电子设备当前显示的界面为视频应用的显示界面。将视频应用的线程调整至高优先级调度组,电子设备可以优先调度视频应用的线程。如此,视频应用的线程可以对视频应用的显示界面进行绘制渲染,保障了前台页面的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
S309、响应于开启弹幕的操作,视频应用向线程识别模块发送第二指示消息。
其中,第二指示消息(也可以称为第一消息)用于指示获取弹幕渲染线程的线程标识,第二指示消息可以包括视频应用的标识。
在本申请实施例中,视频应用可以接收开启弹幕的操作。之后,响应于开启弹幕操作,视频应用可以调用弹幕渲染线程执行渲染弹幕信息的任务。同时,在弹幕渲染线程执行渲染弹幕信息的任务的过程中,视频应用可以向线程识别模块发送第二指示信息。
需要说明的是,本申请实施例中开启弹幕的操作,可以为触发弹幕渲染线程执行渲染弹幕信息的任务的操作。本申请实施例对开启弹幕的操作不作限定。例如,开启弹幕的操作可以为点击操作。又例如,开启弹幕的操作可以为长按操作。又例如开启弹幕的操作可以为语音操作。
一种可能的设计中,开启弹幕的操作为作用于视频应用的界面上的操作。也就是说,当前视频应用为前台应用,电子设备显示的界面为视频应用的界面。
示例性的,结合图1C,视频应用接收用户对弹幕控制按钮107的操作。响应于对弹幕控制按钮107的操作,视频应用可以向线程识别模块发送第二指示消息。
相应的,线程识别模块可以接收来自视频应用第二指示消息。
S310、线程识别模块获取弹幕渲染线程的线程标识。
一种可能的实现方式中,在弹幕渲染线程执行渲染弹幕信息的任务的过程中,线程识别模块可以获取弹幕渲染线程的线程标识
示例性的,染弹幕信息的任务可以包括获取弹幕渲染线程的线程标识的任务(如lockCanvas函数)。在弹幕渲染线程执行渲染弹幕信息的任务的过程中,线程识别模块可以执行lockCanvas函数,获取弹幕渲染线程的线程标识为DanmakuDrawThread16285。
S311、线程识别模块向线程信息管理模块发送弹幕渲染线程的线程标识。
可选的,线程信息识别模块还可以向线程信息管理模块发送视频应用的标识。
相应的,线程信息管理模可以接收来自线程识别模块的弹幕渲染线程的线程标识和视频应用的标识。
S312、若不存在弹幕渲染线程的线程标识,线程信息管理模块则将弹幕渲染线程的线程标识存储至视频应用的目标线程列表。
其中,目标线程列表用于存储独立渲染线程的线程标识。
示例性的,假如目标线程列表为keyThreadList01,弹幕渲染线程的线程标识为DanmakuDrawThread16285。在S312之前,keyThreadList01为null。在执行S312之后,keyThreadList01包括DanmakuDrawThread16285。
在一种可能的实现方式中,线程信息管理模块可以根据视频应用的标识获取视频应用的目标线程列表。之后,线程信息管理模块遍历目标线程列表中每个线程标识,查询目标线程列表中是否存储有与弹幕渲染线程的线程标识相同的线程标识。若目标线程列表中未存储有与弹幕渲染线程的线程标识相同的线程标识,则确定线程信息管理模块中不存在弹幕渲染线程的线程标识。之后,线程信息管理模块将独立渲染线程的线程标识存储至视频应用的目标线程列表。
S313、线程信息管理模块向线程策略模块发送第三指示消息。
其中,第三指示消息(也可以称为第二消息)用于指示目标线程列表中新增弹幕渲染线程的线程标识。第三指示消息可以包括弹幕渲染线程的线程标识。
相应的,线程策略模块可以接收来自线程信息管理模块的第三指示消息。
S314、线程策略模块确定将弹幕渲染线程调整至高优先级调度组。
一种可能的实现方式中,分组策略信息还可以包括第二策略信息,第二策略信息用于指示在线程信息中新增有线程标识的情况下,将新增的线程标识对应的线程调整至高优先级调度组。
在本申请实施例中,线程策略模块可以根据第三指示消息,确定新增线程标识为弹幕渲染线程的线程标识。之后,线程策略模块可以根据第二策略信息,确定将弹幕渲染线程调整至高优先级调度组。
S315、线程策略模块向调度分组模块发送第二调度消息。
其中,第二调度消息(也可以称为第三消息)用于指示将弹幕渲染线程调整至高优先级调度组,第二调度消息可以包括弹幕渲染线程的线程标识。
相应的,调度分组模块可以接收来自线程策略模块的第二调度消息。
S316、调度分组模块将弹幕渲染线程调整至高优先级调度组。
在一种可能实现的方式中,调度分组模块接收来自线程策略模块的第二调度消息之后,可以根据弹幕渲染线程的线程标识,确定弹幕渲染线程。之后,将弹幕渲染线程调整至高优先级调度组。
示例性的,假如弹幕渲染线程的线程号为DanmakuDrawThread16285(即弹幕渲染线程DanmakuDrawThread的线程号),则可以确定调整的线程为DanmakuDrawThread。之后,可以将DanmakuDrawThread调整至高优先级调度组。也就是说,在执行S308之后,结合S308中的示例,高优先级调度分组中可以包括:ActivityThread和RenderThread。在执行S316之后,高优先级调度分组中可以包括:ActivityThread、RenderThread和DanmakuDrawThread。
可以理解的是,将弹幕渲染线程调整至高优先级调度组,可以提高弹幕渲染线程调度优先级。如此,电子设备可以优先调度弹幕渲染线程对弹幕信息进行绘制渲染,保障了弹幕信息的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
S317、视频应用对弹幕信息进行渲染。
在本申请实施例中,在视频应用接收到开启弹幕的操作之后,响应于开启弹幕操作,视频应用可以调用弹幕渲染线程执行渲染弹幕信息的任务,通过图像渲染库对弹幕信息进行渲染。
示例性的,结合图1C,视频应用接收用户对弹幕控制按钮107的操作。响应于对弹幕控制按钮107的操作,视频应用的界面上可以显示弹幕信息108。
需要说明的是,本申请实施例对执行S317(即视频应用对弹幕信息进行渲染)和执行S309-S316(即将弹幕渲染线程调整至高优先级调度组的过程)的顺序不作限定。例如,可以先执行S309-S316,再执行S317。又例如,可以先执行S317,再执行S309-S316。又例如,可以同时执行S309-S316和S317。
在一些实施例中,在弹幕渲染线程对弹幕信息进行渲染完成之后,弹幕渲染线程可以将渲染绘制后的图像数据发送至SF。SF将绘制渲染后的弹幕信息和视频帧数据进行合成,将合成后的一帧图像数据发送给显示驱动,驱动显示屏显示图形。然后,电子设备可以在视频应用的界面显示弹幕信息。
基于上述技术方案,视频应用在前台运行时,调度分组模块可以将视频应用的主线程和应用渲染线程调整至高优先级调度组。如此,电子设备可以优先调度视频应用的主线程和应用渲染线程对视频应用的界面进行渲染,保障了视频应用的界面的显示效果。并且,在视频应用接收开启弹幕的操作之后,线程识别模块可以获取弹幕渲染线程的线程标识。之后,可以将弹幕渲染线程的线程标识存储至目标线程列表。然后,调度分组模块可以将弹幕渲染线程调整至高优先级调度组。如此,电子设备可以优先调度弹幕渲染线程对弹幕信息进行渲染,保障了弹幕信息的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
在一些实施例中,在线程识别模块获取弹幕渲染线程的线程标识之后,线程识别模块可以向调度分组模块发送将弹幕渲染线程调整之后高优先级调度组的消息,该消息包括弹幕渲染线程的线程标识。也就是说,无需执行S311-S314。
可以理解的是,无需存储弹幕渲染线程的线程标识,可以减少电子设备的资源开销。
需要说明的是,若目标线程列表中已经存在弹幕渲染线程的线程标识,再次将弹幕渲染线程的线程标识存储至目标线程列表,会导致电子设备产生额外的资源开销。
示例性的,结合图1C,在图1C的场景中,电子设备可以执行S301-S317,即视频应用运行在前台,弹幕渲染线程的线程标识存储在线程信息管理模块,且视频应用的主线程、应用渲染线程和弹幕渲染线程均已调整至高优先级调度组中。之后,假如用户关闭弹幕,又再次开启弹幕。如图4所示,电子设备显示视频播放界面401,该视频播放界面401包括弹幕信息402和弹幕控制按钮403,该弹幕控制按钮403处于弹幕开启状态。之后,电子设备接收用户对弹幕控制按钮403的关闭弹幕操作。响应于对弹幕控制按钮403的关闭弹幕操作,弹幕控制按钮403由弹幕开启状态变更为弹幕关闭状态。视频播放界面404不显示弹幕信息402。然后,用户再次开启弹幕(即第二次实现图1C的场景)。此时,由于第一次实现图1C的场景时,已经将弹幕渲染线程的线程标识存储至线程信息管理模块。若第二次实现图1C的场景时,再次将弹幕渲染线程的线程标识存储至线程信息管理模块,会导致电子设备产生额外的资源开销。
在一些实施例中,线程信息管理模块接收到线程的线程标识之后,可以查询是否存在线程的线程标识。若存在,则不存储该线程的线程标识。结合图3,如图5所示,为本申请实施例所提供的线程的调度方法。
S501、响应于关闭弹幕的操作,视频应用停止对弹幕信息进行渲染。
在本申请实施例中,视频应用可以接收关闭弹幕的操作。响应于关闭弹幕的操作,视频应用可以停止对弹幕信息进行渲染。之后,视频应用的界面不显示弹幕信息。
示例性的,结合图4,电子设备显示视频播放界面401,该视频播放界面401包括弹幕信息402和弹幕控制按钮403,该弹幕控制按钮403处于弹幕开启状态。之后,电子设备接收用户对弹幕控制按钮403的关闭弹幕操作。响应于对弹幕控制按钮403的关闭弹幕操作,弹幕控制按钮403由弹幕开启状态变更为弹幕关闭状态。视频播放界面404不显示弹幕信息402。
需要说明的是,在本申请实施例中,在视频应用运行在前台,且视频应用的界面上显示有弹幕信息的情况下,响应于关闭弹幕的操作,线程信息管理模块不会删除弹幕渲染线程的线程标识,调度分组模块不会改变弹幕渲染线程的调度组。也就是说,视频应用接收关闭弹幕的操作之后,线程信息管理模块中仍存储有弹幕渲染线程的线程标识,且弹幕渲染线程仍然位于高优先级调度组中。
S502、响应于再次开启弹幕操作,视频应用发送指示获取弹幕渲染线程的线程标识的消息。
在一种可能的实现方式中,响应于再次开启弹幕操作,视频应用可以再次发送第二指示消息。
示例性的,结合图1C,视频应用再次接收用户对弹幕控制按钮107的操作。响应于对弹幕控制按钮107的操作,视频应用可以向线程识别模块发送第二指示消息。
需要说明的是,具体对于响应于再次开启弹幕操作,视频应用发送指示获取弹幕渲染线程的线程标识的消息的介绍,可以参考上述实施例中对S309的介绍,此处不予赘述。
S503、线程识别模块获取弹幕渲染线程的线程标识。
需要说明的是,具体对于线程识别模块获取弹幕渲染线程的线程标识的介绍,可以参考上述实施例中对S310的介绍,此处不予赘述。
S504、线程识别模块向线程信息管理模块发送弹幕渲染线程的线程标识。
可选的,线程信息识别模块还可以向线程信息管理模块发送视频应用的标识。
相应的,线程信息管理模可以接收来自线程识别模块的弹幕渲染线程的线程标识和视频应用的标识。
S505、线程信息管理模块确定是否存弹幕渲染线程的线程标识。
在一种可能的实现方式中,线程信息管理模块可以根据视频应用的标识获取视频应用的目标线程列表。之后,线程信息管理模块遍历目标线程列表中每个线程标识,查询目标线程列表中是否存储有与弹幕渲染线程的线程标识相同的线程标识。若目标线程列表中存储有与弹幕渲染线程的线程标识相同的线程标识,则确定线程信息管理模块中存在弹幕渲染线程的线程标识。若目标线程列表中未存储有与弹幕渲染线程的线程标识相同的线程标识,则确定线程信息管理模块中不存在弹幕渲染线程的线程标识。
示例性的,假如目标线程列表中包括:hwuiTask01和DanmakuDrawThread16285。若弹幕渲染线程的线程标识为DanmakuDrawThread16286,则确定目标线程列表中不存在弹幕渲染线程的线程标识。若独立渲染线程的线程标识为DanmakuDrawThread16285,则确定目标线程列表中存在弹幕渲染线程的线程标识。
在一些实施例中,若线程信息管理模块中不存在弹幕渲染线程的线程标识,则执行S312-S317。
可以理解的是,在线程信息管理模块中不存在弹幕渲染线程的线程标识的情况下,将弹幕渲染线程的线程标识存储至目标线程列表。之后,调度分组模块可以将弹幕渲染线程调整至高优先级调度组。如此,电子设备可以优先调度弹幕渲染线程对弹幕信息进行渲染,保障了弹幕信息的显示效果,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
在一些实施例中,若线程信息管理模块中存在弹幕渲染线程的线程标识,则执行S506。
S506、若存在弹幕渲染线程的线程标识,线程信息管理模块则不存储弹幕渲染线程的线程标识。
也就是说,若线程信息管理模块中存在弹幕渲染线程的线程标识,线程信息管理模块则不将独立渲染线程的线程标识存储至目标线程列表,也不将目标线程列表调整至高优先级调度组(即不执行S312-S316)。
示例性的,结合图1C和图4所示的场景,在用户开启弹幕,又关闭弹幕之后,再次开启弹幕时,电子设备可以在执行S502-S507,无需执行S312-S316。
可以理解的是,在线程信息管理模块中存在弹幕渲染线程的线程标识的情况下,不重复存储弹幕渲染线程的线程标识。如此,可以减少电子设备的资源开销。并且,在目标线程列表中存在独立渲染线程的线程标识,且独立渲染线程位于高优先级调度组的情况下,也无需将目标线程列表调整至高优先级调度组(即不执行S312-S316)。如此,可以进一步减少电子设备的资源开销。
在一些实施例中,若线程信息管理模块中不存在弹幕渲染线程的线程标识,则执行S312-S317。若线程信息管理模块中存在弹幕渲染线程的线程标识,则执行S506。
S507、视频应用对弹幕信息进行渲染。
需要说明的是,本申请实施例对执行S507(即视频应用对弹幕信息进行渲染)和执行S502-S506(即确定是否存在弹幕渲染线程的线程标识的过程)的顺序不作限定。例如,可以先执行S502-S506,再执行S507。又例如,可以先执行S507,再执行S502-S506。又例如,可以同时执行S502-S506和S507。
需要说明的是,具体对于视频应用对弹幕信息进行渲染的介绍,可以参考上述实施例中对S317的介绍,此处不予赘述。
基于上述技术方案,通过查询是否存在弹幕渲染线程的线程标识,可以确定是否存储弹幕渲染线程的线程标识。如此,在线程信息管理模块中存在弹幕渲染线程的线程标识的情况下,无需重复存储弹幕渲染线程的线程标识,进而可以减少电子设备的资源开销。
需要说明的是,图3和图5所示的实施例是以第一应用为视频应用为例,介绍本申请实施例。以下以第一应用为短信应用和桌面应用为例,介绍本申请实施例。
在一些实施例中,以第一应用为短信应用,独立渲染线程为键盘弹出渲染线程为例,介绍本申请实施例。响应于启动短信应用的操作,短信应用运行在前台。短信应用可以向线程策略模块发送指示短信应用运行在前台的消息(包括短信应用的标识)。线程策略模块根据指示短信应用运行在前台的消息,确定将短信应用的线程(例如主线程和应用渲染线程)调整至高优先级调度组。同时,线程策略模块可以向线程信息管理模块发送查询短信应用的线程标识的消息。线程信息管理模块查询短信应用的线程信息,并向线程策略模块发送短信应用的线程信息。之后,线程策略模块可以向调度分组模块发送指示将短信应用的线程调整至高优先级调度组的消息。调度分组模块将短信应用的线程调整至高优先级调度组。然后,响应于输入信息的操作(例如图1A中对输入框102的操作),短信应用向线程识别模块发送指示获取键盘弹出渲染线程的线程标识的消息。线程识别模块可以获取键盘弹出渲染线程的线程标识(例如,以键盘弹出渲染线程为InsetsAnimation线程为例,可以调用InsetsAnimation Thread.get()函数获取InsetsAnimation线程的线程号)。线程信息管理模块将键盘弹出渲染线程的线程标识存储至短信应用的目标线程列表。之后,线程信息管理模块向线程策略模块发送指示线程信息中新增线程标识的消息(包括键盘弹出渲染线程的线程标识)。线程策略模块确定将键盘弹出渲染线程调整至高优先级调度组。线程策略模块向调度分组模块发送指示将键盘弹出渲染线程调整至高优先级调度组的消息(包括键盘弹出渲染线程的线程标识)。之后,调度分组模块可以将键盘弹出渲染线程调整至高优先级调度组。同时,短信应用可以对键盘弹出动效进行渲染(上述过程具体可以参考S301-S317)。然后,响应于再次输入信息的操作,线程识别模块可以再次获取键盘弹出渲染线程的线程标识。线程信息管理模块可以确定是否存在键盘弹出渲染线程的线程标识。若存在,则无需存储渲染线程的线程标识。同时,短信应用可以对键盘弹出动效进行渲染(上述过程具体可以参考S501-S507)。
在一些实施例中,以第一应用为即桌面应用,独立渲染线程为图标渲染线程(如hwuiTask线程)为例,介绍线程识别模块获取hwuiTask线程的线程标识。在线程识别模块接收到指示获取hwuiTask线程的线程标识的消息之后,线程识别模块可以执行回调任务(如callback()函数),获取hwuiTask线程的线程号。其中,callback()函数可以由桌面应用的应用渲染线程调用registerRtFrameCallback()方法设置回调任务。
需要说明的是,具体第一应用为短信应用或桌面应用的实施例可以参考S301-S317和S401-S507,此处不予赘述。
需要说明的是,在第一应用(例如视频应用)从前台应用切换为后台应用之后,若视频应用的线程(如主线程、应用渲染线程和弹幕渲染线程)仍然位于高优先级调度组中,会占用电子设备的处理资源,影响电子设备的性能。
在一些实施例中,在视频应用从前台应用切换为后台应用的情况下,电子设备可以将视频应用的线程从高优先级调度组中调整至其他调度组,其中,其他调度组为除高优先级调度组以外的调度组。高优先级调度组中的线程的调度优先级高于其他调度组中的线程的调度优先级,也就是说,其他调度组中的线程的调度优先级低于高优先级调度组中的线程的调度优先级。具体的,电子设备可以接收将视频应用从前台切换到后台的操作,将视频应用的线程从高优先级调度组中调整至其他调度组。
示例性的,如图6所示,电子设备接收返回主界面的操作,显示的界面由视频播放界面601变为主界面602。电子设备可以将视频应用的进程信息从高优先级调度组中删除。
示例性的,结合图5,如图7所示,为本申请实施例提供的线程的调度方法中各个模块之间交互的过程示意图。
S701、响应于将视频应用从前台切换至后台的操作,视频应用运行在后台。
需要说明的是,本申请实施例对将视频应用从前台切换至后台的操作不作限定。例如,将视频应用从前台切换至后台的操作可以为点击操作。又例如,将视频应用从前台切换至后台的操作可以为长按操作。又例如,将视频应用从前台切换至后台的操作可以为语音操作。
需要说明的是,本申请实施例中,将视频应用从前台切换至后台的操作,可以称为第三操作。该第三操作用于触发将视频应用调整为后台应用。
在本申请实施例中,视频应用运行在后台,电子设备可以显示其他界面,其他界面为除视频应用的界面以外的界面。
示例性的,结合图6,电子设备接收返回主界面的操作,显示的界面由视频播放界面601变为主界面602。
S702、视频应用向线程策略模块发送第四指示消息。
其中,第四指示消息用于指示视频应用运行在后台。该第四指示消息包括视频应用的标识。
相应的,在视频应用向线程策略模块发送第四指示消息之后,线程策略模块接收来自视频应用的第四指示消息。
S703、线程策略模块根据第四指示消息,确定将视频应用的线程调整至其他调度组。
一种可能的设计中,其他调度组可以包括低优先级调度组。高优先级调度组中的线程的调度优先级高于低优先级调度组中的线程的调度优先级。
一种可能的设计中,分组策略信息可以包括第三策略信息,第三策略信息用于指示在应用程序运行在后台的情况下,将应用程序的线程调整至低优先级调度组
在本申请实施例中,线程策略模块可以根据第四指示消息,确定视频应用运行在后台。之后,线程策略模块可以根据第三策略信息,确定将视频应用的线程调整至低优先级调度组。
S704、线程策略模块向线程信息管理模块发送第一查询消息。
其中,第一查询消息用于指示获取视频应用的线程信息,第一查询消息包括视频应用的标识。
相应的,线程信息管理模块可以接收来自线程策略模块的第一查询消息。
S705、线程信息管理模块查询视频应用的线程信息。
在本申请实施例中,线程信息可以包括目标线程列表,该目标线程列表可以包括弹幕渲染线程的线程标识。
可选的,线程信息还可以包括:视频应用的主线程的线程标识和视频应用的应用渲染线程的线程标识。
示例性的,线程信息可以包括:pid10001(即主线程ActivityThread的线程号)、pid 10002(即应用渲染线程RenderThread的线程号)和keyThreadList,keyThreadList包括Danmaku DrawThread16285。
需要说明的是,具体对于线程信息管理模块查询视频应用的线程信息的介绍,可以参考上述实施例中S305的介绍,此处不予赘述。
S706、线程信息管理模块向线程策略模块发送视频应用的线程信息。
需要说明的是,具体对于线程信息管理模块向线程策略模块发送视频应用的线程信息的介绍,可以参考上述实施例中S306的介绍,此处不予赘述。
需要说明的是,本申请实施例对线程策略模块执行确定调度组(即S703)和线程策略模块执行获取线程标识(即S704-S706)之间的顺序不作限定。例如,可以先执行S703,再执行S704-S706。又例如,可以先执行S704-S306,再执行S703。又例如,可以同时执行S703和S706。
S707、线程策略模块向调度分组模块发送第三调度消息。
其中,第三调度消息用于指示将视频应用的线程调整至其他调度组。第三调度消息可以包括视频应用的线程信息,例如,主线程的线程标识、应用渲染线程的线程标识和目标线程列表。
在本申请实施例中,在线程策略模块确定调度组(即S703)和获取到线程信息(S704-S706)之后,线程策略模块向调度分组模块发送第三调度消息。
相应的,调度分组模块可以接收来自线程策略模块的第三调度消息。
S708、调度分组模块将视频应用的线程调整至其他调度组。
一种可能的实现方式中,其他调度组包括低优先级调度组,调度分组模块将视频应用的线程调整至低优先级调度组
需要说明的是,具体对于调度分组模块将视频应用的线程调整至其他调度组的介绍,可以参考上述实施例对S308的介绍,此处不予赘述。
基于上述技术方案,在视频应用不是前台应用的情况下,可以将视频应用的线程从高优先级调度组调整至其他调度组。如此,可以降低视频应用的线程的调度优先级,使得电子设备可以合理优化资源的分配,提高电子设备的性能。
需要说明的是,在视频应用(例如视频应用)从前台应用切换为后台应用之后,若视频应用的线程(如主线程、应用渲染线程和弹幕渲染线程)仍然位于高优先级调度组中,会占用电子设备的处理资源,影响电子设备的性能。
在一些实施例中,在视频应用从后台切换至前台的情况下,电子设备可以将视频应用的线程从其他调度组调整至高优先级调度组。具体的,电子设备可以接收将视频应用从后台切换到前台的操作,将视频应用的线程从其他调度组调整至高优先级调度组。
示例性的,结合图7,如图8所示,为本申请实施例提供的线程的调度方法中各个模块之间交互的过程示意图。
S801、响应于将视频应用从后台切换至前台的操作,视频应用运行在前台。
需要说明的是,本申请实施例对将视频应用从后台切换至前台的操作不作限定。例如,将视频应用从后台切换至前台的操作可以为点击操作。又例如,将视频应用从后台切换至前台的操作可以为长按操作。又例如,将视频应用从后台切换至前台的操作可以为语音操作。
需要说明的是,本申请实施例中,启动视频应用的操作,或者将视频应用从后台切换至前台的操作,均可以称为第二操作。该第二操作用于触发将视频应用调整为前台应用。
需要说明的是,在本申请实施例中,在视频应用运行的情况下,线程信息管理模块不会删除视频应用的线程信息。其中,视频应用运行包括:视频应用在前台运行和/或视频应用在后台运行。也就是说,在视频应用运行的情况下,线程信息管理模块存储有视频应用的线程信息。
S802、视频应用向线程策略模块发送用于指示视频应用运行在前台的消息。
S803、线程策略模块确定将视频应用的线程调整至高优先级调度组。
S804、线程策略模块向线程信息管理模块发送查询线程信息的消息。
S805、线程信息管理模块查询视频应用的线程信息。
在本申请实施例中,线程信息可以包括目标线程列表,该目标线程列表可以包括弹幕渲染线程的线程标识。
可选的,线程信息还可以包括:视频应用的主线程的线程标识和视频应用的应用渲染线程的线程标识。
示例性的,线程信息可以包括:pid10001(即主线程ActivityThread的线程号)、pid 10002(即应用渲染线程RenderThread的线程号)和keyThreadList,keyThreadList包括Danmaku DrawThread16285。
S806、线程信息管理模块向线程策略模块发送视频应用的线程信息。
S807、线程策略模块向调度分组模块发送将视频应用的线程调度至高优先级调度组的消息。
S808、调度分组模块将视频应用的线程调整至高优先级调度组。
一种可能的实现方式中,调度分组模块将视频应用的主线程、应用渲染线程和弹幕渲染线程从低优先级调度组调整至高优先级调度组。
需要说明的是,具体对于S801-S807的介绍,可以参考上述实施例中对S301-S307的介绍,此处不予赘述。
可以理解的是,在视频应用从后台切换为前台,且视频应用的线程信息包括弹幕渲染线程的线程标识的情况下,可以直接将弹幕渲染线程调整至高优先级调度组。如此,无需重复获取弹幕渲染线程的线程标识,也无需将弹幕渲染线程的线程标识存储至目标线程列表,能够减少电子设备的资源的消耗。
基于上述技术方案,在视频应用从后台切换为前台的情况下,可以将视频应用的线程(如主线程、应用渲染线程和弹幕渲染线程)从其他调度组高优先级调度组调整至其他调度组。如此,可以提高视频应用的线程的调度优先级,在视频应用在前台运行的情况下,电子设备可以优先调度视频应用的线程渲染视频应用的界面,避免了电子设备发生卡顿或者丢帧,提高了用户的使用体验。
需要说明的是,图7所示的S701-S708、图8所示的S801-S808的实施例是以视频应用为例,对本申请的实施例进行说明。同理,在其他应用程序(例如社交应用)从前台切换至后台的情况下,电子设备也可以将该应用程序的线程从高优先级调度组调整至其他调度组。具体可以参考上述实施例对S701-S708的介绍,此处不予赘述。在其他应用程序从后台切换至前台的情况下,电子设备也可以将该应用程序的线程从其他调度组调整至高优先级调度组。具体可以参考上述实施例对S801-S808的介绍,此处不予赘述。
在另一些实施例中,在响应于视频应用从前台切换至后台的操作,视频应用运行在后台(即S701)之后,弹幕渲染线程可以被回收(即弹幕渲染线程结束运行)。然后,响应于将视频应用从后台切换至前台的操作,视频应用运行在前台(即S801)之后,不仅可以执行S802-S808;视频应用还可以重新创建弹幕渲染线程,调用弹幕渲染线程执行渲染弹幕信息的任务。在视频应用调用弹幕渲染线程执行渲染弹幕信息的任务的过程中,将弹幕渲染线程调整至高优先级调度组(即S309-S316),并对弹幕信息进行渲染(S317)。
也就是说,在本申请实施例中,视频应用从前台切换至后台的操作,也可以作为触发开启弹幕的操作。即视频应用从前台切换至后台的操作可以触发弹幕渲染线程执行渲染弹幕信息的任务。
需要说明的是,由于S801之后,视频应用重新创建弹幕渲染线程。重新执行S310得到的线程标识与在S701之后结束运行的弹幕渲染线程的线程标识不同。因此,可以执行S312-S316。
在另一些实施例中,在视频应用从前台切换至后台的情况下,电子设备可以不将视频应用的线程调整至其他调度组。也就是说,在视频应用运行在后台的情况下,视频应用的线程依然保留在高优先级调度组。
在本申请实施例中,结合图7所示的实施例(即S701-S708),在S703中,分组策略信息还可以包括第四策略信息,第四策略信息用于指示在应用程序运行在后台的情况下,不调整应用程序的线程的调度组。如此,在S703之后,线程策略模块接收到视频应用在后台的消息之后,无需指示线程管理模块查询视频应用的线程信息,也无需向调度分组模块发送调度消息。
可选的,分组策略信息还可以包括第五策略信息,第五策略信息用于指示在应用程序运行在后台的时长大于预设时长阈值的情况下,将应用程序的线程调整至其他调度组。在视频应用在后台运行的时长大于预设时长阈值之后,视频应用可以向线程策略模块发送第五指示消息,第五指示消息用于指示视频应用在后台运行的时长大于预设时长阈值。线程策略模块接收到第五指示消息之后,可以执行S704-S708。
可以理解的是,在视频应用长时间运行在后台的情况下,可以将视频应用的线程调整至其他调度组。如此,可以降低视频应用的线程的调度优先级,使得电子设备可以合理优化资源的分配,提高电子设备的性能。
本申请实施例提供一种线程的调度方法,如图9所示,该线程的调度方法可以包括S901-S903。
S901、电子设备接收在第一应用的界面上的第一操作。
其中,第一操作用于触发显示目标信息。
示例性的,第一操作可以为输入信息的操作(例如图1A中作用于输入框102的操作),目标信息可以为键盘弹出动效。第一操作还可以为开启弹幕的操作(例如图1C中作用于弹幕控制按钮107的操作),目标信息可以为弹幕信息108。
需要说明的是,本申请实施例对第一操作不作限定。例如,第一操作可以为点击操作。又例如,第一操作可以为长按操作。又例如,第一操作可以为语音操作。
需要说明的是,对于电子设备接收在第一应用的界面上的第一操作的过程的介绍,可以参考S309中的描述,此处不予赘述。
在一些实施例中,在电子设备接收第一操作之后,电子设备可以调用独立渲染线程执行目标渲染事件,该目标渲染事件用于指示对目标信息的显示处理。其中,显示处理可以包括:绘制处理和/或渲染处理。
示例性的,以目标信息为弹幕信息为例,在电子设备接收第一操作之后,电子设备可以调用弹幕渲染线程对弹幕信息进行渲染绘制处理。
需要说明的是,对于电子设备调用独立渲染线程执行目标渲染事件的过程的介绍,可以参考S317中的描述,此处不予赘述。
S902、电子设备获取独立渲染线程的线程标识。
其中,独立渲染线程用于目标信息的显示处理。
一种可能的设计中,独立渲染线程为弹幕渲染线程的情况下,目标信息为弹幕信息。独立渲染线程为键盘弹出渲染线程的情况下,目标信息为键盘弹出动效。独立渲染线程为图标渲染线程的情况下,目标信息为图标显示动效。
一种可能的设计中,独立渲染线程用于执行应用渲染线程分发的目标渲染事件。例如,以独立渲染线程为图标渲染线程(例如hwuiTask线程),应用渲染线程为RenderThread线程为例,RenderThread线程可以调用registerRtFrameCallback()方法为hwuiTask线程设置回调任务callback(即目标渲染事件,对图标显示动效进行传染)。
可选的,该独立渲染线程还可以执行除应用渲染线程以外的其他线程分发的目标渲染事件。示例性的,独立渲染线程还可以执行主线程分发的目标渲染事件。例如,以独立渲染线程为弹幕渲染线程线程(如DanmakuDrawThread线程),视频应用的主线程为ActivityThread线程为例,ActivityThread线程可以为DanmakuDrawThread线程分发指示渲染弹幕信息的任务(即目标渲染事件)。
在一种可能的实现方式中,在电子设备调用独立渲染线程对目标信息进行显示处理的过程中,电子设备可以获取独立渲染线程的线程标识。
需要说明的是,对于电子设备获取独立渲染线程的线程标识的过程的介绍,可以参考S310-S314、S502-S506中的描述,此处不予赘述。
S903、电子设备将独立渲染线程调整至高优先级调度组。
其中,高优先级调度组中线程标识对应的线程的调度优先级高于电子设备中其他线程的调度优先级,其他线程为除高优先级调度组对应的线程以外的线程。
在一种可能的实现方式中,电子设备根据独立渲染线程的线程标识,确定独立渲染线程。之后,电子设备将独立渲染线程调整至高优先级调度组。
需要说明的是,对于电子设备将独立渲染线程调整至高优先级调度组的过程的介绍,可以参考S314-S316中的描述,此处不予赘述。
上述主要从电子设备的角度对本申请实施例提供的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请所公开的实施例描述的各示例的一种线程的调度方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是电子设备软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对线程的调度装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请另一些实施例提供了一种电子设备(如图2A所示的手机200)。该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该电子设备还可以包括摄像头。或者,该电子设备可以外接摄像头。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中手机执行的各个功能或者步骤。该电子设备的结构可以参考图2A所示的手机200的结构。
本申请实施例还提供一种芯片系统,如图10所示,该芯片系统包括至少一个处理器1001和至少一个接口电路1002。处理器1001和接口电路1002可通过线路互联。例如,接口电路1002可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路1002可用于向其它装置(例如处理器1001)发送信号。示例性的,接口电路1002可读取存储器中存储的指令,并将该指令发送给处理器1001。当所述指令被处理器1001执行时,可使得电子设备(如图2A所示的手机200)执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备(如图2A所示的手机200)上运行时,使得该电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种线程的调度方法,其特征在于,应用于电子设备,所述方法包括:
所述电子设备接收在第一应用的界面上的第一操作,所述第一操作用于触发在所述第一应用的界面上显示目标信息;
所述电子设备获取独立渲染线程的线程标识,所述独立渲染线程用于执行应用渲染线程分发的目标渲染事件,所述目标渲染事件用于指示对所述目标信息的显示处理;
所述电子设备将所述独立渲染线程的线程标识存储至所述第一应用的目标线程列表,所述目标线程列表用于存储所述独立渲染线程的线程标识;
所述电子设备根据所述独立渲染线程的线程标识,将所述独立渲染线程调整至高优先级调度组,所述高优先级调度组中的线程的调度优先级高于所述电子设备中其他线程的调度优先级,所述其他线程为除所述高优先级调度组中的线程以外的线程,所述高优先级调度组还包括:所述第一应用的主线程和所述第一应用的应用渲染线程;
所述电子设备接收第三操作,所述第三操作用于触发将所述第一应用调整为后台应用;
响应于所述第三操作,所述电子设备获取所述第一应用的线程信息,所述第一应用的线程信息包括:所述第一应用的主线程的线程标识、所述第一应用的应用渲染线程的线程标识、所述第一应用的目标线程列表;
所述电子设备根据所述第一应用的线程信息,确定所述第一应用的线程,所述第一应用的线程包括:所述独立渲染线程、所述第一应用的主线程、所述第一应用的应用渲染线程;
所述电子设备将所述第一应用的线程调整至其他调度组,所述其他调度组为除所述高优先级调度组以外的调度组,所述其他调度组中的线程的调度优先级低于所述高优先级调度组中的线程的调度优先级;
所述电子设备接收第二操作,所述第二操作用于触发将所述第一应用调整为前台应用;
响应于所述第二操作,所述电子设备获取所述第一应用的线程信息;
所述电子设备根据所述第一应用的线程信息,确定所述第一应用的线程;
所述电子设备将所述第一应用的线程调整至所述高优先级调度组。
2.根据权利要求1所述的方法,其特征在于,在所述电子设备接收在第一应用的界面上的第一操作之后,所述方法还包括:
所述电子设备调用所述独立渲染线程执行所述目标渲染事件;
所述电子设备获取独立渲染线程的线程标识,包括:
在所述电子设备调用所述独立渲染线程对所述目标信息进行显示处理的过程中,所述电子设备获取所述独立渲染线程的线程标识。
3.根据权利要求1或2所述的方法,其特征在于,所述电子设备根据所述独立渲染线程的线程标识,将所述独立渲染线程调整至高优先级调度组,包括:
所述电子设备根据所述独立渲染线程的线程标识,确定所述独立渲染线程;
所述电子设备将所述独立渲染线程调整至所述高优先级调度组。
4.根据权利要求1或2所述的方法,其特征在于,在所述电子设备获取独立渲染线程的线程标识之后,所述方法还包括:
所述电子设备确定所述目标线程列表中是否存在所述独立渲染线程的线程标识;
所述电子设备将所述独立渲染线程存储至所述目标线程列表,包括:
若所述目标线程列表中不存在所述独立渲染线程的线程标识,所述电子设备则将所述独立渲染线程的线程标识存储至所述目标线程列表。
5.根据权利要求1或2所述的方法,其特征在于,在所述电子设备接收第一操作之前,所述方法还包括:
所述电子设备接收第二操作,所述第二操作用于触发将所述第一应用调整为前台应用;
响应于所述第二操作,所述电子设备获取所述第一应用的线程信息,所述第一应用的线程信息包括所述目标线程列表;
所述电子设备根据所述第一应用的线程信息,确定所述第一应用的线程;
所述电子设备将所述第一应用的线程调整至所述高优先级调度组。
6.根据权利要求1或2所述的方法,其特征在于,所述独立渲染线程包括:弹幕渲染线程,和/或,键盘弹出渲染线程,和/或,图标渲染线程。
7.根据权利要求4所述的方法,其特征在于,所述独立渲染线程为弹幕渲染线程的情况下,所述目标信息为弹幕信息;所述独立渲染线程为键盘弹出渲染线程的情况下,所述目标信息为键盘弹出动效;所述独立渲染线程为图标渲染线程的情况下,所述目标信息为图标显示动效。
8.根据权利要求1或2所述的方法,其特征在于,所述显示处理包括:绘制处理和/或渲染处理。
9.根据权利要求1或2所述的方法,其特征在于,所述电子设备包括:所述第一应用和线程识别模块;在所述电子设备接收在第一应用的界面上的第一操作之后,所述方法还包括:
所述第一应用向所述线程识别模块发送第一消息,所述第一消息用于指示获取所述独立渲染线程的线程标识;
所述电子设备获取独立渲染线程的线程标识,包括:
所述线程识别模块接收来自所述第一应用的所述第一消息,获取所述独立渲染线程的线程标识。
10.根据权利要求9所述的方法,其特征在于,所述电子设备还包括:线程信息管理模块;在所述线程识别模块接收来自所述第一应用的所述第一消息,获取所述独立渲染线程的线程标识之后,所述方法还包括:
所述线程识别模块向所述线程信息管理模块发送所述独立渲染线程的线程标识;
所述线程信息管理模块接收来自所述线程识别模块的所述独立渲染线程的线程标识;
所述电子设备将所述独立渲染线程的线程标识存储至所述第一应用的目标线程列表,包括:
若所述线程信息管理模块中不存在所述独立渲染线程的线程标识,所述线程信息管理模块则将所述独立渲染线程的线程标识存储至所述第一应用的目标线程列表。
11.根据权利要求10所述的方法,其特征在于,所述电子设备还包括:线程策略模块和调度分组模块;在若所述线程信息管理模块中不存在所述独立渲染线程的线程标识,所述线程信息管理模块则将所述独立渲染线程的线程标识存储至所述第一应用的目标线程列表之后,所述方法还包括:
所述线程信息管理模块向所述线程策略模块发送第二消息,所述第二消息用于指示所述目标线程列表中新增所述独立渲染线程的线程标识;
所述线程策略模块接收来自所述线程信息管理模块的所述第二消息,根据所述第二消息,确定将所述独立渲染线程调整至高优先级调度组;
所述线程策略模块向所述调度分组模块发送第三消息,所述第三消息用于指示将所述独立渲染线程调整至高优先级调度组;
所述调度分组模块接收来自所述线程策略模块的所述第三消息;
所述电子设备根据所述独立渲染线程的线程标识,将所述独立渲染线程调整至高优先级调度组,包括:
所述调度分组模块根据所述独立渲染线程的线程标识,确定所述独立渲染线程;
所述调度分组模块将所述独立渲染线程调整至所述高优先级调度组。
12.根据权利要求11所述的方法,其特征在于,在所述电子设备接收第二操作之后,所述方法还包括:
所述第一应用向所述线程策略模块发送第四消息,所述第四消息用于指示所述第一应用运行在前台;
所述线程策略模块接收来自所述第一应用的所述第四消息,确定将所述第一应用调整至所述高优先级调度组;
所述电子设备获取所述第一应用的线程信息,包括:
所述线程策略模块向所述线程信息管理模块发送第五消息,所述第五消息用于指示获取所述第一应用的线程信息;
所述线程信息管理模块接收来自所述线程策略模块的所述第五消息,确定所述第一应用的线程信息,并向所述线程策略模块发送所述第一应用的线程信息;
所述线程策略模块接收来自所述线程信息管理模块的所述第五消息;
所述电子设备将所述第一应用的线程调整至所述高优先级调度组,包括:
所述线程策略模块向所述调度分组模块发送第六消息,所述第六消息用于指示将所述第一应用的线程调整至所述高优先级调度组;
所述调度分组模块接收来自所述线程策略模块的所述第六消息,将所述第一应用的线程调整至所述高优先级调度组。
13.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于运行存储器中存储的计算机程序,以使得所述电子设备实现如权利要求1-12任一项所述的方法。
14.一种芯片系统,其特征在于,包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储计算机程序,所述计算机程序在处理器上运行时实现如权利要求1-12任一项所述的方法。
CN202111665048.0A 2021-12-31 2021-12-31 一种线程的调度方法及电子设备 Active CN115016706B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111665048.0A CN115016706B (zh) 2021-12-31 2021-12-31 一种线程的调度方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111665048.0A CN115016706B (zh) 2021-12-31 2021-12-31 一种线程的调度方法及电子设备

Publications (2)

Publication Number Publication Date
CN115016706A CN115016706A (zh) 2022-09-06
CN115016706B true CN115016706B (zh) 2023-05-30

Family

ID=83064945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111665048.0A Active CN115016706B (zh) 2021-12-31 2021-12-31 一种线程的调度方法及电子设备

Country Status (1)

Country Link
CN (1) CN115016706B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130774A (zh) * 2023-04-28 2023-11-28 荣耀终端有限公司 一种线程加速处理方法和装置
CN117076088B (zh) * 2023-09-12 2023-12-15 荣耀终端有限公司 界面显示方法、可读介质和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502320A (zh) * 2018-05-18 2019-11-26 杭州海康威视数字技术股份有限公司 线程优先级调整方法、装置、电子设备及存储介质
CN111813520A (zh) * 2020-07-01 2020-10-23 Oppo广东移动通信有限公司 线程调度方法、装置、存储介质及电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990946A (zh) * 2016-01-21 2017-07-28 阿里巴巴集团控股有限公司 一种界面处理方法、装置和智能终端
CN109992398B (zh) * 2017-12-29 2021-06-25 Oppo广东移动通信有限公司 资源管理方法、装置、移动终端及计算机可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502320A (zh) * 2018-05-18 2019-11-26 杭州海康威视数字技术股份有限公司 线程优先级调整方法、装置、电子设备及存储介质
CN111813520A (zh) * 2020-07-01 2020-10-23 Oppo广东移动通信有限公司 线程调度方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN115016706A (zh) 2022-09-06

Similar Documents

Publication Publication Date Title
WO2021115194A1 (zh) 一种应用图标的显示方法及电子设备
EP4060475A1 (en) Multi-screen cooperation method and system, and electronic device
CN115016706B (zh) 一种线程的调度方法及电子设备
CN111147660B (zh) 一种控件的操作方法及电子设备
CN114489529A (zh) 电子设备的投屏方法及其介质和电子设备
CN113391743B (zh) 一种显示方法及电子设备
CN116126744B (zh) 一种内存回收方法、装置及终端设备
CN116017388B (zh) 一种基于音频业务的弹窗显示方法和电子设备
CN116048833B (zh) 一种线程处理方法、终端设备及芯片系统
WO2023005711A1 (zh) 一种服务的推荐方法及电子设备
CN113805771B (zh) 一种通知提醒方法、终端设备及计算机可读存储介质
CN113760192B (zh) 数据读取方法、装置、存储介质和程序产品
CN113760191B (zh) 数据读取方法、装置、存储介质和程序产品
CN116700660B (zh) 音频播放方法和电子设备
CN116089320B (zh) 垃圾回收方法和相关装置
WO2024032430A1 (zh) 管理内存的方法和电子设备
WO2023029985A1 (zh) 一种桌面中停靠栏的显示方法及电子设备
WO2023174322A1 (zh) 图层处理方法和电子设备
CN115250261A (zh) 一种信息的显示方法及电子设备
CN117909071A (zh) 图像显示方法、电子设备、存储介质和芯片系统
CN117130516A (zh) 一种显示方法及电子设备
CN117724640A (zh) 分屏显示方法、电子设备及存储介质
CN115700431A (zh) 一种桌面的显示方法及电子设备
CN115686765A (zh) 数据处理方法及电子设备
CN117311586A (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