CN117149318A - 一种数据处理方法及电子设备 - Google Patents

一种数据处理方法及电子设备 Download PDF

Info

Publication number
CN117149318A
CN117149318A CN202210569386.2A CN202210569386A CN117149318A CN 117149318 A CN117149318 A CN 117149318A CN 202210569386 A CN202210569386 A CN 202210569386A CN 117149318 A CN117149318 A CN 117149318A
Authority
CN
China
Prior art keywords
application
software system
memory
interface
software
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.)
Pending
Application number
CN202210569386.2A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210569386.2A priority Critical patent/CN117149318A/zh
Publication of CN117149318A publication Critical patent/CN117149318A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

一种数据处理方法,应用于搭载有包括两个软件系统的电子设备。该方法包括:响应于第一操作,通过第一软件系统通知第二软件系统启动第一应用,第一操作为在第一软件系统的显示桌面上触发第一桌面图标的操作;通过第二软件系统为第一应用分配第一内存;通过第二软件系统将第一内存的第一句柄传输至第一软件系统;在第一应用对第一界面中的各个图层渲染完成后,通过第一软件系统并基于第一句柄从第一内存中读取渲染后的第一图层数据;通过第一软件系统对第一图层数据进行合成,以得到第一界面;在第一软件系统所显示的第一窗口中显示第一界面。由此在双软件系统中可以不使用网络协议来传输待显示的图形数据,提升了图像数据的显示效果。

Description

一种数据处理方法及电子设备
技术领域
本申请涉及终端技术领域,尤其涉及一种数据处理方法及电子设备。
背景技术
操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序,用于处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。通常情况下,不同操作系统所擅长的领域不同,即不同操作系统的生态设计环境有所偏向。以Android系统为例,通常仅支持剪影、美图等轻量级设计软件,对于代码编辑器(VScode)、Java集成开发工具(Intellij IDEA)、三维图形图像软件(Blender)、计算机辅助设计软件(computer aided design,CAD)等更加专业的设计软件的支持效果不佳。因此,操作系统的生态设计环境丰富程度尚需提升。
为了解决这一技术问题,丰富操作系统的生态设计环境,一方面可以针对某一操作系统开发合适的应用软件,但是软件开发耗时较久,且软件稳定性还需要不断测试与维护,导致时间成本过高。另一方面,可以通过使某一操作系统兼容另一操作系统以支持另一操作系统的应用软件,来丰富操作系统的生态设计环境。但使用这一方式的操作系统在显示图形数据时,通常需要网络协议来传输待显示的图形数据后再做显示,在网络传输带宽的影响下,图形数据显示效果会有一定程度的降低。
发明内容
本申请提供了一种数据处理方法、电子设备、计算机可读存储介质、计算机程序产品及芯片系统,能够在实现第一操作系统兼容第二操作系统的应用的同时,不需要网络协议来传输待显示的图形数据,以实现第一操作系统生态设计环境丰富度的提升,以及显示图形数据时显示效果的提升。
第一方面,本申请提供一种数据处理方法。该方法可以应用于电子设备。该电子设备上可以搭载有第一软件系统和第二软件系统。第二软件系统基于第一软件系统运行,第二软件系统中安装有第一应用,第一软件系统的显示桌面上显示有第一应用的第一桌面图标。该方法包括:响应于第一操作,通过第一软件系统通知第二软件系统启动第一应用,第一操作为在第一软件系统的显示桌面上触发第一桌面图标的操作;通过第二软件系统为第一应用分配第一内存,第一内存为第一应用对其所需显示的第一界面中的各个图层进行渲染所需的内存;通过第二软件系统将第一内存的第一句柄传输至第一软件系统;在第一应用对第一界面中的各个图层渲染完成后,通过第一软件系统并基于第一句柄从第一内存中读取渲染后的第一图层数据;通过第一软件系统对第一图层数据进行合成,以得到第一界面;在第一软件系统所显示的第一窗口中显示第一界面,第一窗口为在第一系统中用于显示第一应用的界面的窗口。
这样,在第一软件系统中启动第二软件系统中的应用时,第一软件系统可以直接读取到第二软件系统中第一应用已渲染的图层,并对渲染后的图层进行合成和显示,从而可以不使用网络协议传递图层数据,而是直接通过第一应用侧申请的内存句柄进行传递,避免了网络传输带宽的影响,提升了显示图形数据时的显示效果。
在一种可能的实现方式中,第一软件系统为安卓系统,第二软件系统为Linux系统,第一应用为Linux应用。
在一种可能的实现方式中,通过第二软件系统将第一内存的第一句柄传输至第一软件系统,具体包括:通过第二软件系统中的合成器compositor将第一句柄发送至第一软件系统中的应用活动app activity;其中,app activity由第一软件系统中的代理安卓应用程序包APK创建,且与第一应用相关联。由此以使得第一软件系统获知到第二软件系统为第一应用分配的内存地址。
在一种可能的实现方式中,通过第一软件系统并基于第一句柄从第一内存中读取渲染后的第一图层数据之前,该方法还包括:compositor获取第一应用发送的第一消息,第一消息用于指示第一内存可进行图层合成;compositor向app activity发送第二消息,第二消息至少用于指示app activity对第一图层数据进行合成。由此以使得第一软件系统可以获知到到对图层数据进行合成的时机,进而在特定的时刻读取第一内存中的图层数据,避免频繁读取第一内存中的数据。
在一种可能的实现方式中,通过第一软件系统并基于第一句柄从第一内存中读取渲染后的第一图层数据,具体包括:app activity将第一句柄转换为第一指针;appactivity基于第一指针,从第一内存中读取第一图层数据。
在一种可能的实现方式中,通过第一软件系统对目标图层数据进行合成,具体包括:app activity对第一图层数据进行格式转换,以得到第二图层数据;app activity将第二图层数据发送至第一软件系统中的系统服务surface flinger;surface flinger对第二图层数据进行合成,得到第一界面。
在一种可能的实现方式中,该方法还可以包括:当第一应用需要显示第二界面时,通过第二软件系统为第一应用分配第二内存,第二内存为第一应用对第二界面中的各个图层进行渲染所需的内存;通过第二软件系统将第二内存的第二句柄传输至第一软件系统;在第一应用对第二界面中的各个图层均渲染完成后,通过第二软件系统并基于第二句柄从第二内存中读取渲染后的第三图层数据;通过第一软件系统对第三图层数据进行合成,以得到第二界面;通过第一软件系统将第一窗口中的第一界面替换为第二界面。由此以使得在第一软件系统中完成第一应用的界面切换。
第二方面,本申请提供一种电子设备,包括:处理器,处理器用于运行存储器中存储的计算机程序,以使得电子设备实现第一方面或第一方面的任一种可能的实现方式所描述的方法。
第三方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现第一方面或第一方面的任一种可能的实现方式所描述的方法。
第四方面,本申请提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备实现第一方面或第一方面的任一种可能的实现方式所描述的方法。
第五方面,本申请提供一种芯片,包括至少一个处理器和接口;至少一个处理器通过接口获取程序指令或者数据;至少一个处理器用于执行程序行指令,以实现第一方面或第一方面的任一种可能的实现方式所描述的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的一种电子设备搭载的软件系统的系统架构图;
图2是本申请实施例提供的一种在安卓系统的桌面上显示Linux系统的应用的图标的示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图;
图4是本申请实施例提供的另一种数据处理方法的流程示意图;
图5是图4中所示的数据处理方法的处理过程示意图;
图6是本申请实施例提供的一种电子设备的结构示意图;
图7为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是或者的关系,例如A/B表示A或者B。
本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一响应消息和第二响应消息等是用于区别不同的响应消息,而不是用于描述响应消息的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
一般的,以Android系统为例,当前Android系统中的应用软件主流为娱乐化应用软件,设计类与办公类专业化应用软件不足,使得Android系统的生态设计环境丰富度不足。而Linux系统对于专业的设计软件的良好的支持,因此,可以在Android系统中运行Linux系统,以提升Android系统的生态设计环境丰富度。这样,在电子设备上即可以同时搭载有Android系统和Linux系统,且电子设备的主系统可以为Android系统。
其中,当电子设备同时搭载有Android系统和Linux系统,且电子设备的主系统可以为Android系统时,一般是在Android系统中配置有虚拟机或容器,并将Linux系统安装在该虚拟机或容器中。当需要使用Linux系统时,可以在虚拟机或容器中运行Linux系统,由此以实现在Android系统中兼容Linux系统。另外,在使用Linux系统过程中,在图形显示融合方面,基本都是Linux系统通过网络协议来将图形数据传递到Android系统。示例性的,网络协议可以为虚拟网络计算(virtual network computing,VNC)协议或者远程桌面(remotedesktop protocol,RDP)协议等。
但Linux系统通过网络协议(比如VNC协议或者RDP协议等)向Android系统传输图形数据的本质是:Linux系统将图形数据处理后经网络通道传输至Android系统。在图形数据传输过程中,传输的数据量受限于网络通道带宽。当图形数据量大时,为了保证图形数据显示的实时性,可能需要进行数据压缩以降低图形数据的质量。而当需要保证图形数据的质量时,可能图形数据显示的实时性会降低。因此,在Android系统上难以达到对Linux系统中应用进行高分辨率、低延迟响应的图形显示体验,导致显示效果降低。
有鉴于此,本申请提出了一种数据处理方法,能够在实现第一操作系统兼容第二操作系统的应用的同时,不需要网络协议来传输待显示的图形数据,以实现第一操作系统生态设计环境丰富度的提升,以及显示图形数据时显示效果的提升。
下述以电子设备搭载有Android系统,并通过容器运行Linux系统为例,对电子设备的软件系统架构进行说明。
示例性的,图1示出了一种电子设备搭载的软件系统的系统架构,该电子设备的第一软件系统为安卓(Android)系统,第二软件系统为Linux系统。如图1所示,安卓系统和Linux系统均采用Linux内核(Linux kernel)。而且,安卓系统还可以包括:应用框架层(Application Framework)和应用层;Linux系统包括:窗口服务(weston)和多个应用程序。
其中,安卓系统的应用框架层可以包括:输入管理服务(input manager service,IMS)、活动管理服务(activity manager service,AMS)、窗口管理服务(window managerservice,WMS)和系统服务(surface flinger)。其中,IMS主要用于管理电子设备检测到的输入操作,AMS主要用于管理各个应用程序的活动(activity),WMS主要用于管理各个应用程序的窗口,系统服务(surface flinger)可以是图层合成的系统服务,其主要用于负责合成安卓系统所有显示图层的服务进程。
安卓系统的应用层可以包括:桌面启动器(launcher)和代理安卓应用程序包(android application package,APK)。桌面启动器主要用于显示和管理电子设备上的应用程序(application,App)。代理APK主要用于与Linux系统进行数据交互,显示Linux系统中安装的应用程序,运行Linux系统中的应用程序等。
需要说明的是,电子设备的安卓系统还可以包括图1中并未示出的硬件抽象层和系统运行库,系统运行库可以包括:安卓运行库,安卓运行库可以包括核心库和虚拟机,系统运行库还可以包括:C库或C++库,在此不再赘述。
Linux系统的应用程序可以包括:X11应用程序(X11 APP)和/或wayland应用程序(wayland app)。其中,X11应用程序为与旧版X11协议相匹配的应用程序,wayland应用程序为与新版wayland协议相匹配的应用程序。
另外,Linux系统的窗口服务(weston)可以包括:系统界面管理器(desktop-shell)、兼容应用协议(xwayland)、合成器(compositor)和后端合成器(compositorbackend)。其中,系统界面管理器可以用于管理Linux系统的全局界面;兼容应用协议可以用于在与各个wayland应用相匹配的基础上兼容各个X11应用;合成器可以用于对应用程序的各个图层进行组合,得到合成完毕的界面;后端合成器可以用于处理合成完毕的界面,和/或,可以用于与安卓系统中的代理APK进行通信等。
本申请实施例中,在电子设备的安卓系统中可以开启应用层的代理APK。安卓系统可以通过代理APK与Linux系统进行数据交互,在安卓系统的桌面上显示Linux系统中已安装的应用程序的图标,运行Linux系统中的应用程序等。
进一步地,继续参阅图1,图1中还示出了代理APK的软件架构,如图1所示,代理APK软件架构可以包括:通信层(native)、管理层(myservice)和活动层(activity)。
其中,native作为代理APK与Linux系统之间的通信通道,用于向Linux系统传输信息,也可以接收Linux系统反馈的信息。例如,通过native可以向Linux系统发送用于启动位于Linux系统的应用程序的控制指令,也可以向Linux系统发送检测到的输入事件,还可以接收Linux系统反馈的窗口显示信息(如刷新显示的界面)或窗口管理信息(如调整显示的大小或位置)等等。
myservice主要用于对app activity进行管理,例如,建立某个app activity或销毁某个app activity等,以实现对app activity的生命周期的管理。示例性的,myservice还可以用于与linux系统的容器进行通道连接,并对在安卓系统上运行的linux应用的窗口、会话、输入等进行初始化工作。
activity中可以包括:主(main)activity和应用(app)activity。main activity为代理APK的主程序,主要用于与Linux系统进行数据交互,以获取到Linux系统中已安装的应用的图标信息、应用标识和应用的可执行路径等,并将这些信息注册到桌面启动器(launcher)中,从而可以在安卓系统的桌面中生成并显示Linux系统中已安装的应用的图标,并使得可以通过在安卓系统的桌面中对Linux系统中的应用图标进行操作,以在安卓系统的桌面中运行Linux系统中的应用。例如,如图2的(A)所示,安卓桌面中显示多个应用图标,如,Android App1的图标、Android App2的图标、代理APK的图标等。继续参阅图2的(A),用户点击安卓桌面中的代理APK的图标后,代理APK中的main activity可以与Linux交互,并将与Linux系统中已安装的应用相关的信息注册到安卓系统中,从而可以在安卓系统中显示Linux系统中的应用图标,即显示如图2的(B)所示的界面。在一些实施例中,应用的图标信息可以为Linux系统的桌面中所显示的应用的图标的信息,应用标识可以为应用程序的名称、身份(identification,ID)或其他用于唯一指示该应用程序的信息,应用的可执行路径可以为应用程序在Linux系统中所在的存储位置。
app activity可以为在安卓系统中与Linux系统中运行的应用程序相对应的activity,或者,与在安卓系统中运行的Linux系统中的应用程序中的子菜单相对应的activity。例如,用户在安卓系统的桌面中对Linux系统中的应用图标进行操作后,安卓系统可以建立一个与用户所选择的应用相对应的app activity。另外,当安卓系统的桌面中已显示Linux系统中的应用运行的窗口时,当用户在该窗口下选择该应用中的一个子菜单时,安卓系统中也可以创建一个与该子菜单相对应的activity。示例性的,应用程序相对应的activity可以理解为是与该应用程序的主界面对应的activity,应用程序的子菜单可以理解为是该应用程序的主界面下的子界面。
其中,每个app activity均可以采集触发的输入事件,并通过native向Linux系统发送采集的输入事件,以及通过native接收Linux系统基于输入事件反馈的信息,再根据Linux系统反馈的信息,对app activity当前显示的界面进行刷新(如显示悬浮框、图标闪烁和颜色变化等),或者,对app activity显示的窗口进行调整(如对窗口的大小或位置进行调整)等等。
接下来基于上文所描述的内容,对本申请实施例提供的数据处理方法进行介绍。
示例性的,图3示出了一种数据处理方法。在图3中,为便于描述,将以电子设备上可以搭载有安卓系统和Linux系统,且安卓系统可以为电子设备的主系统进行介绍;当然,电子设备上搭载的也可以是其他的系统,电子设备上的主系统也可以是其他的系统,此处不做限定。如图3所示,该数据处理方法可以包括以下步骤:
在S301,电子设备检测到用户对安装在安卓系统中的代理APK触发的开启操作后,可以启动代理APK的main activity(main activity 1)。
在S302,main activity 1判断安卓系统是否满足Linux系统的运行环境。其中,当安卓系统满足Linux系统的运行环境时,执行S304;否则,执行S303。
main activity 1在判断安卓系统是否满足Linux系统的运行环境时,可以先由安卓系统中的安装目录,确定出安卓系统中是否运行Linux系统所需的容器的安装目录。当安卓系统中存在运行Linux系统所需的容器的安装目录时,由于容器中一般均预置有Linux系统,因此,可以确定安卓系统满足Linux系统的运行环境。当安卓系统中不存在运行Linux系统所需的容器的安装目录时,可以再判断安卓系统中是否存在与Linux系统相关的镜像包。当存在与Linux系统相关的镜像包时,可以自动安装该镜像包,以使得在安卓系统中安装上Linux系统。当不存在与Linux系统相关的镜像包时,表明此时安卓系统不满足Linux系统的运行环境,因此可以提示用户自行安装Linux系统。例如,如图4的(A)所示,用户点击“代理APK”后,main activity 1判断出安卓系统不满足Linux系统的运行环境时,可以在安卓系统的桌面上弹出提示框41,该提示框中可以告知用户需要自行安装Linux系统,即显示图4的(B)所示的界面。
在S303,提示用户安装Linux系统。在用户成功安装Linux系统之后,可以自动或用户手动再进入S304。
在S304,main activity 1与Linux系统交互,获取到Linux系统中已安装的应用程序的应用图标、应用标识和应用的可执行路径等应用信息。
当Linux系统未运行时,main activity 1可以向Linux系统发送启动指令,以启动Linux系统。在Linux系统启动后,main activity 1可以向Linux系统发送第一消息,该第一消息可以用于获取Linux系统中已安装的应用程序的应用图标、应用标识和应用的可执行路径等应用信息。Linux系统获取到第一消息后,可以向main activity 1发送第二消息,该第二消息中可以包括Linux系统上已安装的应用程序的应用图标、应用标识和应用的可执行路径等应用信息。其中,main activity 1可以通过代理APK中的native与Linux系统进行通信,两者之间的通信协议可以但不限于为自由远程桌面协议(free remote desktopprotocol,FreeRDP)。
在S305,main activity 1将获取到的Linux系统中已安装的应用程序的应用图标、应用标识和应用的可执行路径等应用信息,注册到安卓系统的桌面启动器(launcher)中,以在安卓系统的桌面中生成Linux系统中应用的桌面图标。
在一些实施例中,main activity 1在完成在安卓系统的桌面中生成Linux系统中应用的桌面图标后,其可以自动结束运行。
至此,在安卓系统的桌面中即可以显示出Linux系统中应用的桌面图标,比如,此时安卓系统的桌面上所显示的画面可以如图2的(B)所示。
在完成在安卓系统的桌面中生成Linux系统中应用的桌面图标后,用户即可以在安卓系统的桌面中选择Linux系统中应用的桌面图标,以在安卓系统中启动Linux系统中的应用。详见下文描述。
示例性的,图4示出了另一种数据处理方法。在图4中,为便于描述,将以电子设备上可以搭载有安卓系统和Linux系统,且安卓系统可以为电子设备的主系统进行介绍;当然,电子设备上搭载的也可以是其他的系统,电子设备上的主系统也可以是其他的系统,此处不做限定。如图4所示,该数据处理方法可以包括以下步骤:
在S401,电子设备检测到用户对安卓桌面中生成的Linux系统的桌面图标中的目标应用的图标的触发事件,可以在代理APK中创建一个main activity。
当用户需要启动Linux系统中的目标应用时,用户可以在电子设备的安卓系统的桌面中对Linux系统中的目标应用的桌面图标进行操作(比如点击操作等)后,电子设备可以通过安卓系统中的桌面启动器(launcher)检测到该触发事件,以及由安卓系统中的活动管理服务AMS在代理APK中创建一个main activity。示例性的,目标应用可以为X11 app,也可以为wayland app。
在S402,main activity通知Linux系统启动Linux系统中的目标应用,以及通知代理APK建立一个与目标应用关联的app activity。
main activity可以向Linux系统发送目标消息,该目标消息中可以包括目标应用的应用标识和目标应用的可执行路径等信息。该目标消息可以用于通知Linux系统启动Linux系统中的目标应用。另外,main activity还可以通知代理APK建立一个与目标应用关联的app activity。在main activity完成上述工作后,其可以自动结束运行。
在S403,Linux系统获知到目标消息后,通知其内的目标应用启动。目标应用在启动时,可以向Linux系统内的合成器(compositor)申请画布(surface),以及向Linux系统申请目标内存,并将该画布与目标内存进行绑定。其中,该画布可以用于绘制与目标应用所需显示的应用界面相关的图层。
另外,在目标应用启动过程中,Linux系统可以先向Weston请求窗口,Weston可以根据配置的数据为目标应用分配窗口。其中,Weston分配的窗口可以对应有窗口标识、窗口尺寸和窗口位置等窗口信息,窗口标识用于唯一指示该窗口,窗口尺寸用于表示该窗口的大小,窗口位置用于指示显示该窗口的位置。Weston可以将其分配的窗口信息发送至安卓系统中与目标应用关联的app activity,以由app activity在Android系统中构建出目标窗口。
在S404,目标应用将目标内存的内存句柄发送至Linux系统中的合成器(compositor)。示例性的,当目标应用的类型为X11 app时,目标应用可以通过weston中的xwayland将目标内存的内存句柄发送至合成器(compositor);当目标应用的类型为wayland app时,目标应用可以直接将目标内存的内存句柄发送至合成器(compositor)。可以理解的是,发送内存句柄的时间也可以为在申请到目标内存时,或者是其他时间,具体可以根据实际情况而定,此处不做限定。
在S405,合成器(compositor)可以将目标内存的内存句柄发送至安卓系统中的app activity。示例性的,合成器(compositor)可以通过后端合成器(compositorbackend)与安卓系统进行通信。
在S406,目标应用可以调用相关渲染接口,比如开放图形库(open graphicslibrary,OpenGL)接口等,在目标内存中进行图层渲染。
在S407,目标应用向合成器(compositor)发送提交消息。示例性的,该提交消息可以是wayland协议中约定的commit消息。该提交消息可以用于指示目标内存可进行图层合成。
在S408,合成器(compositor)向安卓系统中的app activity发送合成送显的消息。其中,该消息可以用于指示app activity对渲染后的图层数据进行合成,并显示。
在S409,安卓系统中的app activity基于内存句柄,从目标内存中读取渲染后的图层数据,并对图层数据进行格式转换。
示例性的,安卓系统中的app activity可以通过系统内存映射接口(比如mmap等)将内存句柄转换为内存指针。接着,app activity可以由该内存指针获知到目标内存的物理地址,进而可以从目标内存中读取到渲染后的图层数据。另外,app activity在读取到渲染后的图层数据后,可以对图层数据进行格式转换,以使得图层数据符合Android系统的要求。
在S410,安卓系统中的app activity将转换格式后的图层数据提交至Android系统内的系统服务(surface flinger)。
在S411,Android系统内的系统服务(surface flinger)可以对转换格式后的图层数据进行合成,以得到目标应用当前所需显示的目标界面。
在S412,Android系统内的系统服务(surface flinger)可以将目标界面直接经过硬件层送显。示例性的,系统服务(surface flinger)将目标界面发送至硬件层中的显示屏进行显示。其中,显示屏可以在app activity创建的目标窗口中显示目标界面。
由此,在安卓系统中启动Linux系统中的应用时,安卓系统中的代理APK可以直接读取到linux系统中目标应用已渲染的图层,并对渲染后的图层进行合成和显示,从而可以不使用网络协议传递图层数据,而是直接通过Linux应用侧申请的内存句柄进行传递,通过延长Linux应用的内存句柄的生命周期,融合过程中不存在图形合成内存拷贝,性能几乎无损失,接近原生系统运行Linux应用,提升了显示图形数据时的显示效果。
在一些实施例中,Linux系统还可以在目标内存的信息发生变更时,将变更信息发送至安卓系统,以使得安卓系统可以基于变更信息,更好的读取目标内存中的图层数据。示例性的,目标内存的变更信息可以包括以下一项或多项:目标内存的尺寸,目标内存中描述的图片格式,目标内存偏移,或者,目标内存的有效区域。
在一些实施例中,若前述描述的是目标应用第1次申请内存,则当目标应用第N(N≥2)次申请内存时,目标应用可以参照前述的方法将其申请到的内存的句柄发送至安卓系统中的app activity。另外,当目标应用在其申请到的内存中完成图层渲染后,目标应用也可以参照前述的方法通知app activity进行合成送显。app activity获取到目标应用发送的通知后,其可以基于其获取到的内存句柄读取相应的内存中的图层数据,并参照前述的方法使得Android系统内的系统服务(surface flinger)进行合成送显。
可以理解的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为便于理解,下面举例描述图4中所描述的方法的实施过程。
示例性的,图5示出了一种数据处理方法的处理过程。如图5所示,在安卓系统中启动Linux应用后,Linux应用可以在Linux系统中申请内存,并将内存的句柄发送到安卓系统。接着,Linux应用可以在其申请到的内存中进行图层渲染,并在渲染完成后,提交图层合成。之后,Linux系统可以将提交送显的消息发送至安卓系统,以由安卓系统进行图层合成并送显。
在安卓系统中,安卓系统中可以进行无窗口应用启动,以及基于Linux系统内创建的Linux应用的窗口,在其内创建出用于显示Linux应用的目标窗口(即图中所示的窗口创建更新)。安卓系统获取到Linux应用申请到的内存的句柄后,可以由该句柄,获取到Linux应用申请到的内存的物理地址,进而可以读取到目标应用渲染后的图层数据。
安卓系统获取到Linux系统发送的提交送显的消息后,可以从Linux应用申请到的内存中读取到目标应用渲染后的图层数据,并对该图层数据进行合成,并送显。
示例性的,在Linux系统中可以不做实际合成和送显,而是由安卓系统进行实际合成和送显。另外,在安卓系统中可以不做渲染和提交合成,而仅在Linux系统中做渲染和提交合成。
对应于上文实施例所述的数据处理方法,本申请实施例还提供了一种数据处理装置,该装置具有实现上文所描述的数据处理方法的功能,在此不再赘述。
可以理解的是,本申请实施例中涉及的电子设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digitalassistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备等。电子设备的示例性实施例包括但不限于搭载iOS、android、Windows、鸿蒙系统(Harmony OS)或者其他操作系统的电子设备,其中,本申请实施例中对该电子设备的具体类型不作特殊限制。
下面介绍本申请实施例涉及的电子设备。请参阅图6,图6是本申请实施例提供的一种电子设备的结构示意图。其中,该电子设备可以但不限于搭载有至少两个软件系统,比如搭载有安卓系统和Linux系统。
如图6所示,该电子设备600可以包括处理器610、存储器620和显示屏630。
其中,处理器610可以是通用处理器或者专用处理器。例如,处理器610可以包括中央处理器(central processing unit,CPU)和/或基带处理器。其中,基带处理器可以用于处理通信数据,CPU可以用于实现相应的控制和处理功能,执行软件程序,处理软件程序的数据。
示例性地,处理器610可以包括一个或多个处理单元。处理器610可以包括应用处理器(application processor,AP)、调制解调器(modem)、图形处理器(graphicsprocessing unit,GPU)、图像信号处理器(image signal processor,ISP)、控制器、视频编解码器、数字信号处理器(digital signal processor,DSP)、基带处理器、和/或神经网络处理器(neural-network processing unit,NPU)等中的一项或多项。其中,不同的处理器可以是独立的器件,也可以集成在一个或多个处理器中。
存储器620可以存储有程序,程序可被处理器610运行,使得处理器610执行本申请实施例中描述的方法。存储器620还可以存储有数据。处理器610可以读取存储器620中存储的数据。存储器620和处理器610可以单独设置。可选地,存储器620也可以集成在处理器610中。
显示屏630用于显示图像,视频等。显示屏630包括显示面板。显示面板可以采用液晶显示屏(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)等。示例性的,显示屏630可以但不限于折叠屏,即能够折叠的显示屏。示例性的,显示屏630可以用于显示安卓应用的图标和/或Linux应用的图标等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备600的具体限定。在本申请另一些实施例中,电子设备600可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
基于上述实施例中的描述的方法,本申请实施例还提供了一种芯片。请参阅图7,图7为本申请实施例提供的一种芯片的结构示意图。如图7所示,芯片700包括一个或多个处理器701以及接口电路702。可选的,芯片700还可以包含总线703。其中:
处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、神经网络处理器(Neural Network Processing Unit,NPU)、数字通信器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
接口电路702可以用于数据、指令或者信息的发送或者接收,处理器701可以利用接口电路702接收的数据、指令或者其它信息,进行加工,可以将加工完成信息通过接口电路702发送出去。
可选的,芯片700还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(NVRAM)。其中,该存储器可以与处理器701耦合。
可选的,存储器存储了可执行软件模块或者数据结构,处理器701可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
可选的,接口电路702可用于输出处理器701的执行结果。
需要说明的,处理器701、接口电路702各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
应理解,上述方法实施例的各步骤可以通过处理器中的硬件形式的逻辑电路或者软件形式的指令完成。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。

Claims (11)

1.一种数据处理方法,其特征在于,应用于电子设备,所述电子设备搭载第一软件系统和第二软件系统,所述第二软件系统基于所述第一软件系统运行,所述第二软件系统中安装有第一应用,所述第一软件系统的显示桌面上显示有所述第一应用的第一桌面图标;所述方法包括:
响应于第一操作,通过所述第一软件系统通知所述第二软件系统启动所述第一应用,所述第一操作为在所述第一软件系统的显示桌面上触发所述第一桌面图标的操作;
通过所述第二软件系统为所述第一应用分配第一内存,所述第一内存为所述第一应用对其所需显示的第一界面中的各个图层进行渲染所需的内存;
通过所述第二软件系统将所述第一内存的第一句柄传输至所述第一软件系统;
在所述第一应用对所述第一界面中的各个图层渲染完成后,通过所述第一软件系统并基于所述第一句柄从所述第一内存中读取渲染后的第一图层数据;
通过所述第一软件系统对所述第一图层数据进行合成,以得到所述第一界面;
在所述第一软件系统所显示的第一窗口中显示所述第一界面,所述第一窗口为在所述第一系统中用于显示所述第一应用的界面的窗口。
2.根据权利要求1所述的方法,其特征在于,所述第一软件系统为安卓系统,所述第二软件系统为Linux系统,所述第一应用为Linux应用。
3.根据权利要求1或2所述的方法,其特征在于,所述通过所述第二软件系统将所述第一内存的第一句柄传输至所述第一软件系统,具体包括:
通过所述第二软件系统中的合成器compositor将所述第一句柄发送至所述第一软件系统中的应用活动app activity;其中,所述app activity由所述第一软件系统中的代理安卓应用程序包APK创建,且与所述第一应用相关联。
4.根据权利要求3所述的方法,其特征在于,所述通过所述第一软件系统并基于所述第一句柄从所述第一内存中读取渲染后的第一图层数据之前,所述方法还包括:
所述compositor获取所述第一应用发送的第一消息,所述第一消息用于指示所述第一内存可进行图层合成;
所述compositor向所述app activity发送第二消息,所述第二消息至少用于指示所述app activity对所述第一图层数据进行合成。
5.根据权利要求3或4所述的方法,其特征在于,所述通过所述第一软件系统并基于所述第一句柄从所述第一内存中读取渲染后的第一图层数据,具体包括:
所述app activity将所述第一句柄转换为第一指针;
所述app activity基于所述第一指针,从所述第一内存中读取所述第一图层数据。
6.根据权利要求3-5任一所述的方法,其特征在于,所述通过所述第一软件系统对所述目标图层数据进行合成,具体包括:
所述app activity对所述第一图层数据进行格式转换,以得到第二图层数据;
所述app activity将所述第二图层数据发送至所述第一软件系统中的系统服务surface flinger;
所述surface flinger对所述第二图层数据进行合成,得到所述第一界面。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
当所述第一应用需要显示第二界面时,通过所述第二软件系统为所述第一应用分配第二内存,所述第二内存为所述第一应用对所述第二界面中的各个图层进行渲染所需的内存;
通过所述第二软件系统将所述第二内存的第二句柄传输至所述第一软件系统;
在所述第一应用对所述第二界面中的各个图层均渲染完成后,通过所述第二软件系统并基于所述第二句柄从所述第二内存中读取渲染后的第三图层数据;
通过所述第一软件系统对所述第三图层数据进行合成,以得到所述第二界面;
通过所述第一软件系统将所述第一窗口中的所述第一界面替换为所述第二界面。
8.一种电子设备,其特征在于,包括:处理器,所述处理器用于运行存储器中存储的计算机程序,以使得所述电子设备实现如权利要求1-7任一所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一所述的方法。
10.一种计算机程序产品,其特征在于,当计算机程序产品在电子设备上运行时,使得所述电子设备实现如权利要求1-7任一所述的方法。
11.一种芯片,其特征在于,包括至少一个处理器和接口;
所述至少一个处理器通过所述接口获取程序指令或者数据;
所述至少一个处理器用于执行所述程序行指令,以实现如权利要求1-7任一所述的方法。
CN202210569386.2A 2022-05-24 2022-05-24 一种数据处理方法及电子设备 Pending CN117149318A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210569386.2A CN117149318A (zh) 2022-05-24 2022-05-24 一种数据处理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210569386.2A CN117149318A (zh) 2022-05-24 2022-05-24 一种数据处理方法及电子设备

Publications (1)

Publication Number Publication Date
CN117149318A true CN117149318A (zh) 2023-12-01

Family

ID=88910640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210569386.2A Pending CN117149318A (zh) 2022-05-24 2022-05-24 一种数据处理方法及电子设备

Country Status (1)

Country Link
CN (1) CN117149318A (zh)

Similar Documents

Publication Publication Date Title
JP5620506B2 (ja) アプリケーション画像の表示方法及び装置
CN112269603B (zh) 一种在Linux上兼容运行Android应用的图形显示方法与装置
WO2019007216A1 (zh) 一种图层处理方法及装置
US8473958B2 (en) Adjusting client display devices based on settings included in a notification from remote virtual machine host prior to connection establishment
CN107292807B (zh) 一种图形合成方法、窗口设置方法及系统
US11954515B1 (en) Managing signals from multiple virtual machines and controlling hardware directly or through an API by a host operating system
KR20150080567A (ko) 다중-플랫폼 모바일 및 다른 컴퓨팅 디바이스 및 방법
CN113051047B (zh) 识别安卓系统绘制线程的方法、装置、移动终端及存储介质
CN116821040B (zh) 基于gpu直接存储器访问的显示加速方法、装置及介质
JP7048663B2 (ja) コード実行方法、装置、レンダリングデバイス、記憶媒体、及びプログラム
US11750749B1 (en) Method to use native scanning properties dialog to scan in scanner redirection
US9058759B2 (en) Virtual display device drivers compatible with windows display driver model
US20110225403A1 (en) Operating system and method of running thereof
WO2023221822A1 (zh) 数据处理方法、电子设备和可读存储介质
WO2023169221A1 (zh) 一种跨系统运行应用程序的方法及电子设备
US20230122396A1 (en) Enabling shared graphics and compute hardware acceleration in a virtual environment
CN117149318A (zh) 一种数据处理方法及电子设备
WO2017167125A1 (zh) 一种图形合成方法、信息交互方法及系统
CN114860401A (zh) 异构云桌面调度系统、方法、服务系统、装置及介质
EP2782010A1 (en) Hierarchical resource management
US11748123B2 (en) Transforming a remote desktop into a remote application
CN113886007B (zh) Kvm虚拟化系统配置方法、管理方法、系统及介质
US11829791B2 (en) Providing device abstractions to applications inside a virtual machine
CN110278331B (zh) 系统属性的反馈方法、装置、终端及存储介质
CN115167875A (zh) 基于Web移动操作系统的Android应用方法及系统

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