WO2023221822A1 - 数据处理方法、电子设备和可读存储介质 - Google Patents

数据处理方法、电子设备和可读存储介质 Download PDF

Info

Publication number
WO2023221822A1
WO2023221822A1 PCT/CN2023/092999 CN2023092999W WO2023221822A1 WO 2023221822 A1 WO2023221822 A1 WO 2023221822A1 CN 2023092999 W CN2023092999 W CN 2023092999W WO 2023221822 A1 WO2023221822 A1 WO 2023221822A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
layer
target
sub
engine
Prior art date
Application number
PCT/CN2023/092999
Other languages
English (en)
French (fr)
Inventor
杨永贵
Original Assignee
京东方科技集团股份有限公司
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 京东方科技集团股份有限公司 filed Critical 京东方科技集团股份有限公司
Publication of WO2023221822A1 publication Critical patent/WO2023221822A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Definitions

  • the embodiments of the present disclosure relate to the field of computer technology, and in particular, to a data processing method, electronic device and readable storage medium.
  • Embodiments of the present disclosure provide a data processing method, which is applied to electronic equipment.
  • the electronic equipment includes a processor and a memory.
  • the memory stores basic function packages and data interfaces.
  • Application programs are also installed on the electronic equipment.
  • the application program includes an application function package, the application function package is used to provide application functions corresponding to the application functions of the application program, and the basic function package is used to provide basic functions that implement preset basic functions, wherein at least part of The application functions are implemented based on the basic functions;
  • the method includes the following steps:
  • the basic function package receives the operation input for performing the target operation
  • the basic function package calls the target function corresponding to the target operation in the application function package through the data interface, where the target function is a function in the application function;
  • the basic function package is developed through the first language
  • the data interface is developed through the second language
  • the application function package is developed through the third language
  • the first language, the second language and The third languages are different programming languages.
  • the application program further includes a first engine sub-layer, the first engine sub-layer is used to call a function of the operating system on which the application program is installed to execute the processing result;
  • the method further includes:
  • the application function package returns the processing result to the basic function package, and the basic function package returns the processing result to the first engine sub-layer;
  • the application function package returns the processing result to the first engine sub-layer.
  • the application program further includes a second engine sub-layer, the second engine sub-layer is used to establish a virtual machine, and the virtual machine is used to generate the processing result according to the target function.
  • the application program further includes an interactive communication sub-layer, the interactive communication sub-layer corresponds to the second language, the interactive communication sub-layer includes the data interface, the first engine sub-layer The second engine sub-layer and the second engine sub-layer perform data communication through the interactive communication sub-layer.
  • the first engine sublayer is a Flutter engine sublayer
  • the second engine sublayer is a Java engine sublayer
  • the interactive communication sublayer includes a C function communication sublayer.
  • the target function includes a first target function
  • the first target function includes Java classes and methods
  • the C function communication sublayer includes a first interface function
  • the virtual machine includes a JVM virtual machine. machine
  • the method Before generating the processing result corresponding to the target operation through the target function, the method further includes:
  • the basic function package transmits the calling instructions corresponding to the target operation to the Java engine sub-layer through the first interface function, wherein the data interface includes the first interface function, and the data interface is the The Dart interface established by the Flutter engine sub-layer through the FFI library;
  • the Java engine sub-layer establishes a JVM virtual machine according to the calling instructions
  • the JVM virtual machine searches for the first target function in the application function package
  • Generating processing results corresponding to the target operation through the target function includes:
  • the JVM virtual machine generates a processing result corresponding to the target operation according to the first target function.
  • the objective function further includes a second objective function
  • the C function communicates
  • the sub-layer includes a second interface function
  • the second target function includes one or more items in the C function library and drawing library data corresponding to the application function package
  • the method Before generating the processing result corresponding to the target operation through the target function, the method further includes:
  • the Java engine sub-layer calls a second target function matching the first target function through the second interface function, wherein the first target function is implemented based on the second target function;
  • the JVM virtual machine generates processing results corresponding to the target operation according to the first target function, including:
  • the processing result is obtained by the second objective function matching the first objective function.
  • a server is established in the Flutter engine sub-layer, and a client is established in the Java engine sub-layer.
  • the server and the client communicate through the interactive communication sub-layer based on the TCP protocol. Data communication is used to return the processing results to the Flutter engine sub-layer.
  • a first callback function is registered in the Flutter engine sublayer
  • the interactive communication sublayer includes a second callback function established according to the first callback function
  • the Java engine sublayer uses the The second callback function performs data communication with the Flutter engine sub-layer to return the processing result obtained through the second target function to the Flutter engine sub-layer.
  • the basic function package performs data communication with the interactive communication sub-layer through the FFI mechanism
  • the application function package performs data communication with the interactive communication sub-layer through the JNI mechanism.
  • the target operation is a handwriting operation
  • the processing result includes a canvas generated according to the handwriting operation and image data of the handwriting generated on the canvas.
  • the method further includes:
  • the type of the target operation includes a first type and a second type, wherein the display real-time requirement of the first type of target operation is greater than the display real-time requirement of the second type of target operation. sexual needs;
  • the display delay corresponding to the first mode is smaller than the display delay corresponding to the second mode, and the display image quality corresponding to the second mode is smaller than the display image quality corresponding to the second mode.
  • the processing result of performing the processing in the first mode includes:
  • the handwriting of the handwriting operation is rendered through the graphics display frame.
  • the graphics display framework includes a DRM framework
  • rendering the handwriting of the handwriting operation through the graphics display framework includes:
  • the rendered canvas and the image data are sent to the buffer frame of the DRM framework.
  • the processing result of performing the second mode includes:
  • the first engine sub-layer obtains the processing result
  • the first engine sub-layer renders canvas and image data corresponding to the processing results.
  • the application function package matches the Android system.
  • the operating system running the application program is Kirin system.
  • embodiments of the present disclosure provide an electronic device, including: a memory, a processor, and a program stored on the memory and executable on the processor; the processor is configured to read the memory
  • the program in implements the steps in the data processing method described in any one of the first aspects.
  • embodiments of the present disclosure provide a readable storage medium for storing a program that, when executed by a processor, implements the steps in the data processing method as described in any one of the first aspects.
  • Figure 1 is an architectural diagram of an application program in an embodiment of the present disclosure
  • Figure 2 is a flow chart of a data processing method provided by an embodiment of the present disclosure
  • Figure 3 is a schematic diagram of data interaction applied in the embodiment of the present disclosure.
  • Figure 4 is another schematic diagram of data interaction applied in the embodiment of the present disclosure.
  • FIG. 5 is a schematic flowchart of interface update in an embodiment of the present disclosure.
  • Figure 6 is a schematic diagram of data interaction for image rendering in an embodiment of the present disclosure.
  • Figure 7 is a schematic diagram of the control flow of a DRM device in an embodiment of the present disclosure.
  • Figure 8 is a flow chart of interface drawing in an embodiment of the present disclosure.
  • FIG. 9 is a schematic structural diagram of an electronic device provided by an implementation of the present disclosure.
  • first”, “second”, etc. in the embodiments of the present disclosure are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence.
  • the terms “including” and “having” and any variations thereof are intended to cover non-exclusive inclusions, e.g., a process, method, system, product, or apparatus that encompasses a series of steps or units and need not be limited to those explicitly listed. Those steps or elements may instead include other steps or elements not expressly listed or inherent to the process, method, product or apparatus.
  • Embodiments of the present disclosure provide a data processing method.
  • the technical solution of this embodiment is applied to electronic equipment.
  • the electronic equipment includes a processor and a memory.
  • the memory stores basic function packages and data interfaces.
  • the electronic equipment is also installed with an application program, and the application program includes an application function package.
  • the application program includes an application layer 110 and a framework layer 120.
  • the application layer 110 includes a first application sub-layer 111 developed in a first language.
  • the first language may be Dart language (a program development language), and the first application sub-layer 111 is oriented to Flutter (a user-building language).
  • Flutter a user-building language.
  • Developers of interface toolkit can write UI through Flutter UI (Flutter user interface) and take advantage of its UI rendering advantages.
  • the application layer 110 also includes a second application sub-layer 112 developed through a third language.
  • the third language may be Java language (a program development language).
  • the second application sub-layer 112 is oriented to Java developers. .
  • the second application sub-layer 112 includes an application function package, which is used to provide application functions corresponding to application functions of the application program.
  • the application layer 110 also includes a basic function package, which is used to provide basic functions that implement preset basic functions.
  • the basic function package is a function package that implements the system function interface.
  • the system function can be: interface function package for touch function, Bluetooth and other communication functions, etc.
  • the basic function package includes interface functions for realizing the underlying interaction between the application function package and the electronic device.
  • the basic function package can also include encapsulation functions for some data structures, such as converting touch data sent by the bottom layer into something identifiable by the application function package. data structure.
  • the application layer 110 corresponds to the specific business requirements of the application program, and the user can input various business requirements that the application program can provide based on the corresponding operations.
  • the application layer 110 can be understood as providing a port, and the user can pass the Operation input of different ports to implement different business requirements.
  • the application program can be applied to different operating systems, and in different operating systems, the business logic is the same.
  • the business logic part in the application layer 110 is implemented using Java and C functions. Therefore, when an application is applied to different operating systems, its application layer 110 data is the same, which can reduce application development costs and workload.
  • the C function in this embodiment is developed in a C-type language.
  • the C-type language may specifically include C++, C language, C#, etc., and is not further limited here.
  • the application layer 110 matches the Android system. It can be understood that the Android system is an operating system with a relatively wide range of applications. Therefore, the application layer 110 is directly developed for the Android system and has greater applicability. Stronger, further, when needed for use on other operating systems When applying the program, the application layer 110 of the application program can be directly transplanted. In this way, the developed and packaged application function package can be directly used, thereby eliminating the need to re-develop the application layer 110, which can reduce development costs and shorten the development cycle.
  • the application layer data of the Android system is developed based on the Java language, but its UI components, its rendering mechanism and the running Dalvik virtual machine CPU instructions are based on registers.
  • the operating system running the application program may be Linux (an operating system), Window (an operating system), MacOs (an operating system), etc.
  • the operating system running the application program The operating system can also be Kylin.
  • the framework layer 120 of the application program is used to implement information interaction and support.
  • the framework layer 120 includes a first engine sublayer 121, a second engine sublayer 122 and an interactive communication sublayer 123.
  • the interactive communication sublayer 123 includes a data interface for data transfer and transmission.
  • the first engine sublayer The layer 121 and the second engine sub-layer 122 perform data communication through the interactive communication sub-layer 123.
  • both the first engine sub-layer 121 and the interactive communication sub-layer 123 may be developed in C-type language.
  • the first engine sublayer 121 is a Flutter engine sublayer
  • the second engine sublayer 122 is a Java engine sublayer
  • the interactive communication sublayer 123 includes a data interface
  • the interactive communication sublayer 123 may include C Function communication sublayer.
  • the interactive communication sublayer 123 is used to implement functions such as process communication, storage sharing, and application process management.
  • the Flutter engine sub-layer mainly includes the Dart virtual machine VM and the rendering engine Render.
  • the Dart virtual machine VM is used to manage and establish the Dart virtual machine to run basic function packages through the Dart virtual machine.
  • the Flutter engine sub-layer can also implement platform communication, UI layout, resource management and other functions.
  • the Flutter engine sub-layer is also used to implement embedded management of the platform, specifically including the management of plug-ins, threads, canvases, etc.
  • the Flutter engine sublayer is used to call the functions of the operating system where the application is installed to perform processing results. It can be understood that the Flutter engine sub-layer can directly interact with the operating system through corresponding control instructions to call the functions of the operating system to execute corresponding processing results.
  • the Flutter engine sub-layer can interact with the operating system to ultimately implement the display function by calling display-related hardware (such as graphics cards, display panels, etc.) through the operating system.
  • display-related hardware such as graphics cards, display panels, etc.
  • the application function package sends the instruction to the basic function package, and the basic function package further sends the instruction to the Flutter engine sub-layer, and the Flutter engine sub-layer interacts with the operating system through the corresponding The underlying driver turns on or off the Bluetooth module.
  • the Java engine sublayer is mainly used to implement virtual machine management (JavaVM Manager) and coordinate management of C functions and Java functions (Java/C intermodulation).
  • the Java engine sub-layer is used to create a virtual machine.
  • the created virtual machine may be a JVM virtual machine, and the virtual machine is used to generate the processing result according to the target function.
  • the Java engine sub-layer establishes a JVM virtual machine to obtain corresponding processing results based on the target function through the JVM virtual machine.
  • the basic function package performs data communication with the interactive communication sublayer through the FFI (Foreign Function Interface, Language Interface) mechanism. Specifically, it is implemented through the Dart FFI interface (Dart FFI Interface).
  • the application function package communicates data with the interactive communication sublayer through the JNI (Java Native Interface, Java Native Interface) mechanism. Specifically, it is implemented through the Java JNI Interface (Java JNI Interface).
  • the Flutter engine sub-layer and the Java engine sub-layer serve as an intermediate bridge through the C function communication sub-layer to realize information interaction between the Flutter engine sub-layer and the Java engine sub-layer, so that the original business logic calls Java functions and C functions to generate data flows.
  • the framework layer 120 also includes an engine core (Engine Core) 124 that implements the basic functions of the framework layer 120 .
  • Engine Core engine core
  • the running environment of the application program also includes a bottom layer 130.
  • the bottom layer 130 specifically refers to the bottom layer 130 of the operating system where the application program is installed.
  • control method of the application program includes the following steps:
  • Step 201 The basic function package receives the operation input for executing the target operation.
  • the target operation may be a handwriting operation, a zoom-in operation, a zoom-out operation, etc. Operations, these target operations are implemented through different operation inputs, for example, through interactive devices such as a mouse and a touch pad.
  • Step 202 The basic function package calls the target function corresponding to the target operation in the application function package through the data interface.
  • the basic function package refers to a pre-edited and packaged basic function package (SDK).
  • SDK can be an existing open source SDK and has high versatility.
  • the objective function is one of the application functions included in the application function package.
  • the basic function package corresponds to the first language.
  • the first language is the Dart language.
  • the corresponding basic function package can choose Flutter SDK (an open source foundation provided by Google) developed through the Dart language. Function package), has high versatility and can reduce development work.
  • the target function corresponding to the operation input needs to be called to perform the target operation.
  • the application function package includes multiple functions. When performing a target operation, the target operation can be performed through the target function among the multiple functions included in the application function package.
  • the data interface is developed through the second language
  • the application function package is developed through the third language.
  • the first language, the second language, and the third language are different programming languages.
  • the second language may be a C language
  • the third language may be a Java language
  • the application function package may be a Java function package, more specifically, it may be an Android function package.
  • the interface provided by the Flutter function through the FFI mechanism can only call C functions. It is impossible to call Flutter functions through C functions, and it is impossible to call Flutter functions through Java functions.
  • the application function package is implemented and called through the data interface through the basic function package. It can be understood that the data interface developed in the second language is used as a medium between the SDK corresponding to the first language and the application function package corresponding to the third language. In this way, the target function in the application function package can be called based on the SDK. .
  • Step 203 Generate a processing result corresponding to the target operation through the target function
  • step 203 is specifically performed by the second engine sublayer.
  • the first engine sublayer is the Flutter engine sublayer
  • the second engine sublayer is the Java engine sublayer. .
  • This step 203 may include: the Java engine sublayer returning the processing result to the Flutter engine sublayer.
  • the method further includes:
  • the application function package returns the processing result to the basic function package, and the basic function package returns the processing result to the first engine sub-layer;
  • the application function package returns the processing result to the first engine sub-layer.
  • the processing results are obtained through the JVM virtual machine.
  • the Java engine sub-layer can directly return the processing results to the Flutter engine sub-layer, or it can first return the processing results to the basic function package, and then return the processing results to the Flutter engine sub-layer from the basic function package.
  • the Flutter engine sub-layer After the Flutter engine sub-layer obtains the processing results, it further interacts with the operating system and calls the corresponding functions of the operating system.
  • the first engine sub-layer is developed through the second language.
  • the first engine sub-layer includes the Flutter engine.
  • the first engine sub-layer and the second engine sub-layer may be developed through C-like language.
  • the first application sub-layer is developed through the first language
  • the first engine sub-layer is developed through the second language
  • the first engine sub-layer is used to communicate with the first application sub-layer developed through the first language. to interact.
  • the second engine sub-layer is developed through the second language, and the second engine sub-layer interacts with the second application sub-layer developed through the third language.
  • the first engine sub-layer further interacts directly or indirectly with the operating system to call corresponding functions of the operating system and execute the obtained processing results.
  • the execution processing result is to start the corresponding application program; if the target operation is a writing operation on the handwriting interface, the execution processing result may be to display the handwriting.
  • the objective function includes a first objective function
  • the first objective function includes Java
  • the C function communication sublayer includes the first interface function
  • the virtual machine includes the JVM virtual machine.
  • the basic function package transmits the calling instructions corresponding to the target operation to the Java engine sub-layer through the first interface function, wherein the data interface includes the first interface function, and the data interface is the The Dart interface established by the Flutter engine sub-layer through the FFI library;
  • the Java engine sub-layer establishes a JVM virtual machine according to the calling instructions
  • the JVM virtual machine searches for the first target function in the application function package.
  • step 203 specifically includes:
  • the JVM virtual machine generates a processing result corresponding to the target operation according to the first target function.
  • the FFI library is first introduced to establish the Dart interface.
  • the interface function for introducing FFI and C functions can be established by opening a command.
  • the C function is called through the Flutter engine sub-layer.
  • the jvm.so shared library can be opened with the dlopen instruction, the JNI_CreateJavaVM method is executed to establish the JVM virtual machine, and an instance of the JNIEnv structure is obtained.
  • the search instructions FindClass and GetMethodID find the Java classes and methods in the Android function package.
  • the virtual machine here specifically refers to a virtual machine instance.
  • a virtual machine corresponding to the application is established through the above process. virtual machine.
  • the application can run in the foreground or in the background, and the virtual machine remains running.
  • the virtual machine When exiting the application, shut down the virtual machine corresponding to the application.
  • the target function further includes a second target function
  • the C function communication sublayer includes a second interface function
  • the second target function includes one or more of the C function library and drawing library data corresponding to the application function package.
  • the Java engine sub-layer calls a second target function matching the first target function through the second interface function, wherein the first target function is implemented based on the second target function.
  • step 203 specifically includes:
  • the processing result is obtained by the second objective function matching the first objective function.
  • the shared library of the corresponding C function can be introduced by calling System.loadLibrary, the JNI mechanism can be used to map the interactive interface function, and the corresponding function can be called in the interactive communication sub-layer.
  • C functions and drawing library data for example, can be data in the Skia drawing library to implement specific functions.
  • the Flutter engine sub-layer renders based on the data from the Java engine sub-layer or the interactive communication sub-layer to display the processing results corresponding to the target operation.
  • the second objective function can be understood as a lower-level function than the first objective function.
  • the operation input corresponds to drawing a circle.
  • the necessary data such as the coordinates of the circle center and the length of the radius, are obtained through the first objective function.
  • the first objective function sends the coordinates of the center of the circle and the length of the radius to the second objective function. Based on the lower-level second objective function, the circle can be drawn.
  • the relevant data of the drawn circle is the processing result corresponding to the input of this operation.
  • the second engine sub-layer returns the processing result to the first engine sub-layer.
  • the Java engine sub-layer returns the processing result to the Flutter engine sub-layer.
  • the Flutter engine sub-layer to further execute the processing result, that is, display the drawn circle.
  • the Java engine sub-layer can call back the processing results to the Flutter engine sub-layer in different ways.
  • a server Socket Server
  • a client Socket Client
  • the server can use the bind() method to create a listener. socket, and then listens for incoming connections on the socket, so that after a connection is established between the client and the server, two-way real-time data communication can be achieved.
  • the server and the client can communicate data through the interactive communication sublayer based on the TCP protocol to return the processing results to the Flutter engine sublayer.
  • a function pointer can be used as a parameter to implement the callback function function.
  • the first callback function (Regist Ca11Back Functions) is registered in the Flutter engine sub-layer, and the interactive communication sub-layer includes a second callback established based on the first callback function.
  • Functions (Ca11Back Functions)
  • the Java engine sub-layer communicates data with the Flutter engine sub-layer through the second callback function to return the processing results to the Flutter engine sub-layer.
  • the interactive communication sublayer includes corresponding C functions (C Functions)
  • the Java engine sublayer includes corresponding Java functions (Java Functions).
  • the target operation is a handwriting operation
  • the processing results include the generated canvas and the image data of the handwriting operation handwriting generated on the canvas.
  • the image data refers to a single data corresponding to an object or multiple data. Data sets corresponding to objects or multi-layer images, etc.
  • the specific purpose of executing the processing results is to display the handwriting of handwriting operations.
  • the method further includes:
  • the type of the target operation includes a first type and a second type, wherein the display real-time requirement of the first type of target operation is greater than the display real-time requirement of the second type of target operation. sexual needs;
  • the display delay corresponding to the first mode is smaller than the display delay corresponding to the second mode.
  • the display image quality corresponding to the first mode is lower than the display image quality corresponding to the second mode.
  • target operations can be distinguished and the processing results can be displayed in different ways. It should be understood that different information can be displayed in different ways. For example, for the display of thumbnails, the requirements for real-time display are relatively low. Therefore, the control operation for displaying thumbnails is the second type.
  • the target operation is; for the display of handwriting, the real-time display requirements are relatively high, therefore, the display of handwriting is the first type of target operation.
  • the target operation is a handwriting operation of the first type
  • the touch position of the handwriting operation is tracked in real time in the first mode, and then the handwriting is displayed. so, During the handwriting operation, the display of handwriting has a high real-time performance.
  • the handwriting is re-displayed based on the second mode.
  • the handwriting displayed based on the second mode can be understood as the result of optimizing the touch handwriting. In this way, after a rendering refresh of the display interface, the drawing can be displayed. Relatively good quality processing results.
  • the target operation is a display canvas thumbnail operation in the second type
  • the demand for real-time display is low. Therefore, the corresponding processing result can be directly displayed in the second mode with relatively better image quality.
  • executing the processing result in the second mode includes:
  • the first engine sub-layer obtains the processing result
  • the first engine sub-layer renders canvas and image data corresponding to the processing results.
  • canvas and image data can be returned to Flutter UI for rendering.
  • the first engine sub-layer can obtain the processing results in the two ways described above. Specifically, the application function package can return the processing results to the basic function package, and then the basic function package will process The result is returned to the first engine sub-layer; the application function package can also be used to directly return the processing result to the first engine sub-layer.
  • the first engine sub-layer further interacts with the operating system and displays the corresponding processing results.
  • the display process based on Flutter can be summarized as the following process. After receiving the user's operation input, it is determined whether the image needs to be updated. If more detailed animation is required, the control is first built, and then the interface is rendered. After the interface is rendered, rasterization is performed to update the interface.
  • the Flutter interface rendering process is divided into three stages: layout, drawing and synthesis. Among them, layout and drawing are completed in the Flutter framework, and synthesis is completed in the Flutter engine sub-layer. Finally, the rendering results are passed to the bottom layer to drive the display device. display of content.
  • the data processing link in related technologies requires data communication and rendering through Java functions, Dart functions, and C functions.
  • the delay of this data link is relatively high.
  • the screen display delay is at the second level.
  • performing the processing in the first mode includes:
  • the handwriting of the handwriting operation is rendered through the graphics display frame.
  • Canvas and image data can be sent to the graphics display framework in different ways.
  • the obtained canvas and image data can be directly saved as files and then copied and sent to the graphics display framework.
  • the pointers of the canvas and image data can also be directly pointed to the graphics display frame.
  • the pointers specifically refer to maintaining the address information of the canvas and image data. In this way, the data transmission speed can be improved.
  • the user performs a drawing operation on the Flutter UI interface, and transfers the trajectory information to the Java engine sub-layer for handwriting synthesis and beautification.
  • the processed data is transferred to the C function to form a canvas and image through the Skia graphics painting library. data. In this way, the speed of image rendering and drawing can be increased, the drawing delay can be maintained at the millisecond level, and the effect of visually synchronous drawing can be achieved.
  • the graphics display framework includes a DRM (Direct Rendering Manager) framework, and pointing the pointers of the canvas and the image data to the graphics display framework includes:
  • the rendered canvas and the image data are sent to the buffer frame of the DRM framework.
  • the DRM framework can provide hardware-oriented buffering. Based on the DRM framework, the user can store the image data information to be displayed, and can also monitor the buffered data changes and convert the image data into a display panel driven data structure, such as T -Data structures that can be used by the con board.
  • a display panel driven data structure such as T -Data structures that can be used by the con board.
  • the Java module specifically includes the Java JVM virtual machine and related Java functions (Java Function, abbreviated as Java Fun),
  • the processed data is passed to the C function module and processed through drawing library data such as Skia to form a canvas and data structure.
  • Flutter Engine For data that does not need to be displayed in real time, it can be returned to the Flutter UI and sent to the Flutter Engine (Flutter Engine) for rendering through the Flutter UI.
  • LibDRM is introduced to establish a DRM channel and use OCTL
  • the interface is connected to the DRM device and points the canvas and image data pointers to the DRM buffer frame to achieve synchronous drawing.
  • DRM Device If there is data that needs to be displayed in real time, first open the DRM device (DRM Device). Specifically, you can open the DRM device running based on the DRM framework through the drmOpen or open function. Next, detect the DRM device. Ability, retrieval of resources (Resource), establishment of connection (Connector), encoding (Encoder), building buffer frame (DRM Frame Buffer or Frame Buffer), CRTC preparation and interface drawing.
  • the CRTC Cathode Ray Tube Controller
  • DRM Data Retriel Transmission Control
  • the CRTC Cathode Ray Tube Controller in the DRM device refers to the data pipeline, which is used to mix and transmit display data.
  • DUMB Buffer simple buffer
  • DRM Frame Buffer prepares a map (mapping), and perform a map operation to complete the construction of the buffer frame.
  • CRTC reads the image to be displayed from the DRM Frame Buffer and outputs it to the Encoder according to the corresponding format, thereby realizing the drawing and display of the interface.
  • the DRM device during the interface drawing process of the DRM device, it first determines the matrix drawing interface, and then calls the matrix drawing interface of the corresponding device. Next, it selects the corresponding rasterization algorithm, and then performs the algorithm according to the selected rasterization algorithm. Implemented to complete the drawing of the image. For example, a rectangle with a skylight can be realized by drawing multiple horizontal lines. By drawing horizontal lines, the image is drawn. For the color of the image, the corresponding coordinates can be determined, and then the specified coordinates are opened and written in the memory. Enter the extended data, and finally, transfer the above data to the instruction set AVX.
  • DirectFB is a lightweight graphics library that provides hardware graphics acceleration, input device processing and abstraction.
  • DirectFB is designed for embedded systems. It achieves the highest hardware acceleration performance with minimal resource overhead.
  • DirectFB and DRM can be integrated in the display framework.
  • image rendering can be performed based on DirectFB and DRM at the same time.
  • DirectFB is in If it is not in effect, the image can be rendered separately through the DRM framework.
  • the technical solution of this embodiment can be summarized as, if real-time display is not required, it can be implemented based on the second mode. Specifically, the processing results are returned to the Flutter engine sublayer through the Java engine sublayer, and the The image is optimized and processed to obtain an image with better quality, and then the Flutter engine sub-layer interacts with the operating system, and the graphics display framework is called by the operating system to display the processing results.
  • the Flutter engine sub-layer can optimize the image and help improve the display effect.
  • the data transmission link is long and the display delay is on the order of seconds, which is clearly visible to the naked eye.
  • the Java engine sub-layer directly returns the processing results to the graphics display framework.
  • the data transmission link is shorter, the real-time performance of the display is higher, and the display delay can usually reach the millisecond level, which is visually inconvenient for ordinary users. In effect, real-time display can be achieved.
  • the display result is re-optimized according to the above-mentioned second mode.
  • an image with higher quality can be rendered and displayed, taking into account the display effect and real-time display.
  • the electronic device may include a processor 901 , a memory 902 , and a program 9021 stored on the memory 902 and executable on the processor 901 .
  • An embodiment of the present disclosure also provides a readable storage medium.
  • a computer program is stored on the readable storage medium.
  • the computer program is executed by a processor, any of the steps in the method embodiment corresponding to Figure 1 can be implemented, and can achieve the same technical effect, so to avoid repetition, we will not repeat them here.
  • the storage medium such as read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk, etc.
  • each module above is only a division of logical functions. In actual implementation, it can be fully or partially integrated into a physical entity, or it can also be physically separated. And these modules can all be implemented in the form of software calls through processing components; they can also all be implemented in hardware. It can also be realized in the form of some modules calling software through processing elements, and some modules can be realized in the form of hardware.
  • the determination module can be a separate processing element, or can be integrated into a chip of the above device.
  • it can also be stored in the memory of the above device in the form of program code, and can be processed by a certain processing element of the above device. Call and execute the functions of the above determined modules.
  • the implementation of other modules is similar.
  • each step of the above method or each of the above modules can be completed by instructions in the form of hardware integrated logic circuits or software in the processor element.
  • each module, unit, sub-unit or sub-module may be one or more integrated circuits configured to implement the above method, such as: one or more application specific integrated circuits (Application Specific Integrated Circuit, ASIC), or one or Multiple microprocessors (digital signal processor, DSP), or one or more field programmable gate arrays (Field Programmable Gate Array, FPGA), etc.
  • ASIC Application Specific Integrated Circuit
  • DSP digital signal processor
  • FPGA Field Programmable Gate Array
  • the processing element can be a general-purpose processor, such as a central processing unit (Central Processing Unit, CPU) or other processors that can call the program code.
  • these modules can be integrated together and implemented in the form of a system-on-a-chip (SOC).
  • SOC system-on-a-chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供一种数据处理方法、电子设备和可读存储介质。数据处理方法包括以下步骤:所述基础函数包接收执行目标操作的操作输入;基础函数包通过数据接口调用应用函数包中与所述目标操作对应的目标函数,其中,所述目标函数为所述应用函数中的函数;通过所述目标函数生成与所述目标操作对应的处理结果。

Description

数据处理方法、电子设备和可读存储介质
相关申请的交叉引用
本公开主张在2022年5月18日在中国提交的中国专利申请号No.202210546962.1的优先权,其全部内容通过引用包含于此。
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种数据处理方法、电子设备和可读存储介质。
背景技术
为了满足不同的使用需求,同一应用程序可能需要在不同的操作系统上使用,而针对不同的操作系统,应用程序的实现方式是不同的,这导致针对不同的操作系统对应用程序进行有针对性的开发。
发明内容
本公开实施例提供一种数据处理方法,应用于电子设备,所述电子设备包括处理器和存储器,所述存储器存储有基础函数包和数据接口,所述电子设备上还安装有应用程序,所述应用程序包括应用函数包,所述应用函数包用于提供与所述应用程序的应用功能对应的应用函数,所述基础函数包用于提供实现预设基础功能的基础函数,其中,至少部分所述应用功能是基于所述基础功能实现的;
所述方法包括以下步骤:
所述基础函数包接收执行目标操作的操作输入;
基础函数包通过数据接口调用应用函数包中与所述目标操作对应的目标函数,其中,所述目标函数为所述应用函数中的函数;
通过所述目标函数生成与所述目标操作对应的处理结果;
其中,所述基础函数包通过第一语言开发,所述数据接口通过第二语言开发,所述应用函数包通过第三语言开发,所述第一语言、所述第二语言和 所述第三语言分别为不同的程序语言。
在一些实施例中,所述应用程序还包括第一引擎子层,所述第一引擎子层用于调用安装所述应用程序的操作系统的功能以执行所述处理结果;
所述通过所述目标函数生成与所述目标操作对应的处理结果之后,所述方法还包括:
所述应用函数包将所述处理结果返回所述基础函数包,所述基础函数包将所述处理结果返回所述第一引擎子层;或者
所述应用函数包将所述处理结果返回所述第一引擎子层。
在一些实施例中,所述应用程序还包括第二引擎子层,所述第二引擎子层用于建立虚拟机,所述虚拟机用于根据所述目标函数生成所述处理结果。
在一些实施例中,所述应用程序还包括交互通信子层,所述交互通信子层与所述第二语言相对应,所述交互通信子层包括所述数据接口,所述第一引擎子层和所述第二引擎子层通过所述交互通信子层进行数据通信。
在一些实施例中,所述第一引擎子层为Flutter引擎子层,所述第二引擎子层为Java引擎子层,所述交互通信子层包括C函数通信子层。
在一些实施例中,所述目标函数包括第一目标函数,,所述第一目标函数包括Java的类和方法,所述C函数通信子层包括第一接口函数,所述虚拟机包括JVM虚拟机;
所述通过所述目标函数生成与所述目标操作对应的处理结果之前,所述方法还包括:
所述基础函数包通过所述第一接口函数向所述Java引擎子层传输与所述目标操作对应的调用指令,其中,所述数据接口包括所述第一接口函数,所述数据接口是所述Flutter引擎子层通过FFI库建立的Dart接口;
所述Java引擎子层根据所述调用指令建立JVM虚拟机;
所述JVM虚拟机在所述应用函数包中查找第一目标函数;
所述通过所述目标函数生成与所述目标操作对应的处理结果,包括:
所述JVM虚拟机根据所述第一目标函数生成与所述目标操作对应的处理结果。
在一些实施例中,所述目标函数还包括第二目标函数,所述C函数通信 子层包括第二接口函数,所述第二目标函数包括与所述应用函数包对应的C函数库和绘图库数据中的一项或多项;
所述通过所述目标函数生成与所述目标操作对应的处理结果之前,所述方法还包括:
所述Java引擎子层通过所述第二接口函数调用与所述第一目标函数匹配的第二目标函数,其中,所述第一目标函数是基于所述第二目标函数实现的;
所述JVM虚拟机根据所述第一目标函数生成与所述目标操作对应的处理结果,包括:
通过与所述第一目标函数匹配的所述第二目标函数获得所述处理结果。
在一些实施例中,所述Flutter引擎子层中建立有服务端,所述Java引擎子层中建立有客户端,所述服务端和所述客户端基于TCP协议通过所述交互通信子层进行数据通信以将所述处理结果返回所述Flutter引擎子层。
在一些实施例中,所述Flutter引擎子层中注册有第一回调函数,所述交互通信子层包括根据所述第一回调函数建立的第二回调函数,所述Java引擎子层通过所述第二回调函数与所述Flutter引擎子层进行数据通信以将通过所述第二目标函数获得的所述处理结果返回所述Flutter引擎子层。
在一些实施例中,所述基础函数包通过FFI机制与所述交互通信子层进行数据通信,所述应用函数包通过JNI机制与所述交互通信子层进行数据通信。
在一些实施例中,所述目标操作为手写操作,所述处理结果包括根据所述手写操作生成的画布和在所述画布上生成的所述手写操作笔迹的图像数据。
在一些实施例中,所述通过所述目标函数生成与所述目标操作对应的处理结果之后,所述方法还包括:
获取所述目标操作的类型,所述目标操作的类型包括第一类型和第二类型,其中,所述第一类型的目标操作的显示实时性需求大于所述第二类型的目标操作的显示实时性需求;
在所述目标操作的类型为所述第一类型的情况下,以第一模式执行所述处理结果,并在所述目标操作结束后,以第二模式执行所述处理结果;
在所述目标操作的类型为所述第二类型的情况下,以第二模式执行所述处理结果;
其中,所述第一模式对应的显示延时小于所述第二模式对应的显示延时,所述第二模式对应的显示画质小于所述第二模式对应的显示画质。
在一些实施例中,所述以第一模式执行所述处理结果包括:
将所述画布和所述图像数据发送至图形显示框架;
通过所述图形显示框架渲染所述手写操作的笔迹。
在一些实施例中,所述图形显示框架包括DRM框架,所述通过所述图形显示框架渲染所述手写操作的笔迹,包括:
通过LibDRM库渲染所述画布和所述图像数据;
将渲染后的所述画布和所述图像数据发送至所述DRM框架的缓冲帧。
在一些实施例中,所述以第二模式执行所述处理结果包括:
所述第一引擎子层获取所述处理结果;
所述第一引擎子层渲染与所述处理结果对应的画布和图像数据。
在一些实施例中,所述应用函数包与安卓系统匹配。
在一些实施例中,运行所述应用程序的操作系统为麒麟系统。
第二方面,本公开实施例提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;所述处理器,用于读取存储器中的程序实现如第一方面中任一项所述的数据处理方法中的步骤。
第三方面,本公开实施例提供了一种可读存储介质,用于存储程序,所述程序被处理器执行时实现如第一方面中任一项所述的数据处理方法中的步骤。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开一实施例中应用程序的架构图;
图2是本公开实施例提供的数据处理方法的流程图;
图3是本公开实施例中应用的数据交互示意图;
图4是本公开实施例中应用的数据又一交互示意图;
图5是本公开实施例中界面更新的流程示意图;
图6是本公开实施例中图像绘制的数据交互示意图;
图7是本公开实施例中DRM设备的控制流程示意图;
图8是本公开实施例中界面绘制的流程图;
图9是本公开实施提供的电子设备的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开实施例中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,本申请中使用“和/或”表示所连接对象的至少其中之一,例如A和/或B和/或C,表示包含单独A,单独B,单独C,以及A和B都存在,B和C都存在,A和C都存在,以及A、B和C都存在的7种情况。
本公开实施例提供一种数据处理方法。
本实施例的技术方案应用于电子设备,电子设备包括处理器和存储器,存储器存储有基础函数包和数据接口,电子设备上还安装有应用程序,应用程序包括应用函数包。
如图1所示,在其中一些实施例中,应用程序包括应用层110和框架层 120。
应用层110包括通过第一语言开发的第一应用子层111,本实施例中,第一语言可以是Dart语言(一种程序开发语言),第一应用子层111面向Flutter(一种构建用户界面的工具包)的开发者,开发者可以通过Flutter UI(Flutter用户界面)编写UI,发挥其UI渲染优势。
应用层110还包括通过第三语言开发的第二应用子层112,本实施例中,第三语言可以是Java语言(一种程序开发语言),该第二应用子层112面向Java的开发者。
第二应用子层112包括应用函数包,该应用函数包用于提供与应用程序的应用功能对应的应用函数。在一些实施例中,应用层110还包括基础函数包,基础函数包用于提供实现预设基础功能的基础函数。
基础函数包是实现系统功能接口的函数包,所述系统功能可以是:触控功能,蓝牙等通信功能的接口函数包等。
基础函数包包括用于实现应用函数包与电子设备的底层交互的接口函数,基础函数包还可以包括对一些数据结构体的封装功能,例如将底层发送的触摸数据转变为应用函数包可识别的数据结构。
本实施例中,应用层110对应应用程序的具体业务需求,用户可以基于相应的操作输入以应用程序所能提供的各业务需求中,这样,应用层110可以理解为提供一个端口,用户通过针对不同端口的操作输入以实行不同的业务需求。
本实施例中,应用程序可以应用于不同的操作系统,而在不同的操作系统中,其业务逻辑是相同的,实施时,应用层110中的业务逻辑部分采用Java和C函数实现因此,当应用程序应用于不同操作系统时,其应用层110数据是相同的,能够降低应用程序的开发成本和工作量。
需要注意的是,本实施例中的C函数是以C类语言开发的,C类语言具体可以包括C++、C语言、C#等,此处不做进一步限定。
在一些实施例中,应用层110与安卓(Android)系统匹配,可以理解的是,安卓系统为应用范围相对较广的一种操作系统,因此,应用层110直接针对安卓系统开发,适用性更强,进一步的,当需要在其他操作体统上使用 应用程序时,可以直接移植应用程序的应用层110,这样,可以直接利用已开发封装好的应用函数包,从而不需要重新开发应用层110,能够降低开发成本,缩短开发周期。
相关技术中,安卓系统的应用层数据基于Java语言开发,但是其UI组件其渲染机制以及运行的Dalvik虚拟机CPU指令基于寄存器的,某些操作系统,例如麒麟系统需要根据通用寄存器重新定制适配,因此相关技术中的安卓系统的应用程序的移植难度相对较大。
在一些实施例中,运行应用程序的操作系统具体可以是Linux(一种操作系统)、Window(一种操作系统)、MacOs(一种操作系统)等,在一些实施例中,运行应用程序的操作系统还可以是银河麒麟系统(Kylin)。
应用程序的框架层120用于实现信息的交互与支持。在一些实施例中,框架层120包括第一引擎子层121、第二引擎子层122和交互通信子层123,交互通信子层123包括数据接口,以进行数据中转和传输,第一引擎子层121和第二引擎子层122通过交互通信子层123进行数据通信。
需要注意的是,第一引擎子层121和交互通信子层123均可以是以C类语言开发的。
具体的,在一些实施例中,第一引擎子层121为Flutter引擎子层,第二引擎子层122为Java引擎子层,交互通信子层123包括数据接口,交互通信子层123可以包括C函数通信子层。
如图1所示,交互通信子层123用于实现进程通信、存储共享、应用进程管理等功能。
请继续参阅图1,Flutter引擎子层主要包括Dart虚拟机VM、渲染引擎Render,其中,Dart虚拟机VM用于管理和建立Dart虚拟机,以通过Dart虚拟机运行基础函数包。Flutter引擎子层还能够实现平台通信、UI布局、资源管理等功能。进一步的,Flutter引擎子层还用于实现平台的嵌入管理,具体的,包括插件、线程和画布等的管理等。
Flutter引擎子层用于调用安装应用程序的操作系统的功能以执行处理结果。可以理解为,该Flutter引擎子层能够通过相应的控制指令直接与操作系统进行交互,以调用操作系统的功能执行相应的处理结果。
示例性的,如果执行的操作为手写操作,则Flutter引擎子层可以与操作系统交互,以通过操作系统调用与显示相关的硬件(例如显卡、显示面板等)最终实现显示功能。
又如,如果执行的操作为点击蓝牙开关,则应用函数包将指令发送至基础函数包,基础函数包将指令进一步发送至Flutter引擎子层,Flutter引擎子层与操作系统进行交互,通过相应的底层驱动开启或关闭蓝牙模块。
Java引擎子层主要用于实现虚拟机管理(JavaVM Manager)、对于C函数和Java函数的协调管理(Java/C intermodulation)。
Java引擎子层用于建立虚拟机,所建立的虚拟机具体可以是JVM虚拟机,该虚拟机用于根据目标函数生成所述处理结果。
需要理解的是,应用函数包对应的Java函数需要依赖JVM虚拟机运行,本实施例中,Java引擎子层建立JVM虚拟机,以通过JVM虚拟机基于目标函数获得相应的处理结果。
在一些实施例中,基础函数包通过FFI(Foreign Function Interface,语言交互接口)机制与所述交互通信子层进行数据通信,具体的,是通过Dart FFI接口(Dart FFI Interface)实现的。应用函数包通过JNI(Java Native Interface,Java本地接口)机制与交互通信子层进行数据通信,具体的,是通过Java JNI接口(Java JNI Interface)实现的。
Flutter引擎子层和Java引擎子层通过C函数通信子层做中间桥,实现Flutter引擎子层和Java引擎子层之间的信息交互,达到原有业务逻辑调用Java函数和C函数生成数据流,提供给Flutter引擎可以识别的数据结构,进行渲染处理。
在一些实施例中,框架层120还包括实现框架层120基础功能的引擎核心(Engine Core)124。
在一些实施例中,应用程序的运行环境还包括底层130,底层130具体指的是安装该应用程序的操作系统的底层130。
在一个实施例中,如图2所示,该应用程序的控制方法包括以下步骤:
步骤201:所述基础函数包接收执行目标操作的操作输入。
本实施例中,目标操作可以是手写操作、放大操作、缩小操作等不同的 操作,这些目标操作通过不同的操作输入实现,示例性的,可以是通过鼠标、触摸板等交互设备实现。
步骤202:基础函数包通过数据接口调用应用函数包中与所述目标操作对应的目标函数。
本实施例中,基础函数包指的是预先编辑好,并打包封装的基础函数包(SDK),该SDK可以选择现有的开源SDK,具有较高的通用性。
目标函数为应用函数包所包括的各应用函数中的一个。
基础函数包与第一语言相对应,在一个示例性的实施例中,该第一语言为Dart语言,相应的基础函数包可以选择通过Dart语言开发的Flutter SDK(谷歌公司提供的一种开源基础函数包),具有较高的通用性,且能够减少开发工作。
对于应用程序来说,执行某一操作输入时,是通过具体的函数实现的,因此,需要调用与操作输入对应的目标函数以执行目标操作。
应用函数包中包括多个函数,当执行目标操作时,可以通过应用函数包包括的多个函数中的目标函数执行该目标操作。
本实施例中,数据接口通过第二语言开发,应用函数包通过第三语言开发,第一语言、第二语言和第三语言分别为不同的程序语言。
在一个示例性的实施例中,第二语言可以是C类语言,第三语言可以是Java语言,应用函数包为Java函数包,更为具体的,可以是安卓函数包。
基于第一语言开发的软件或软件模块和第三语言开发的软件或软件模块之间的数据是无法直接相互识别和调用的。
相关技术中,Flutter函数通过FFI机制提供的接口只能调用C函数,无法实现通过C函数调用Flutter函数,且无法通过Java函数调用Flutter函数。
本实施例的技术方案中,通过基础函数包通过数据接口实现与调用应用函数包。可以理解为,将通过第二语言开发的数据接口,作为通过第一语言对应的SDK和第三语言对应的应用函数包之间的媒介,这样,能够实现基于SDK调用应用函数包中的目标函数。
步骤203:通过所述目标函数生成与所述目标操作对应的处理结果;
在调用目标函数之后,通过该目标函数执行运算或数据处理,获得相应 的处理结果。
在一些实施例中,该步骤203具体是由第二引擎子层执行的,在一个示例性的实施例中,第一引擎子层为Flutter引擎子层,第二引擎子层为Java引擎子层。
该步骤203可以包括:Java引擎子层将所述处理结果返回Flutter引擎子层。
在一些实施例中,在步骤203之后,该方法还包括:
所述应用函数包将所述处理结果返回所述基础函数包,所述基础函数包将所述处理结果返回所述第一引擎子层;或者
所述应用函数包将所述处理结果返回所述第一引擎子层。
可以理解的是,本实施例的技术方案中,通过JVM虚拟机获得的处理结果。Java引擎子层可以将该处理结果直接返回Flutter引擎子层,也可以将该处理结果先返回基础函数包,然后由基础函数包返回Flutter引擎子层。
Flutter引擎子层获得处理结果之后,进一步与操作系统进行交互,调用操作系统的相应功能。
第一引擎子层通过第二语言开发,示例性的,在第一语言为Dart语言时,第一引擎子层包括Flutter引擎。第一引擎子层和第二引擎子层可以是通过C类语言开发的。
需要注意的是,第一应用子层是通过第一语言开发的,第一引擎子层是通过第二语言开发的,第一引擎子层用于与通过第一语言开发的第一应用子层进行交互。
类似的,第二引擎子层是通过第二语言开发的,第二引擎子层与通过第三语言开发的第二应用子层进行交互。
第一引擎子层进一步与操作系统直接或间接交互,以调用操作系统的相应功能,执行所获得的处理结果。
示例性的,如果目标操作为点击应用程序的图标,则执行处理结果为启动相应的应用程序,如果目标操作为在手写界面上的书写操作,则执行处理结果具体可以是显示手写笔迹。
在一些实施例中,目标函数包括第一目标函数,第一目标函数包括Java 的类和方法,C函数通信子层包括第一接口函数,虚拟机包括JVM虚拟机,上述步骤203之前,该方法还包括:
所述基础函数包通过所述第一接口函数向所述Java引擎子层传输与所述目标操作对应的调用指令,其中,所述数据接口包括所述第一接口函数,所述数据接口是所述Flutter引擎子层通过FFI库建立的Dart接口;
所述Java引擎子层根据所述调用指令建立JVM虚拟机;
所述JVM虚拟机在所述应用函数包中查找第一目标函数。
相应的,上述步骤203具体包括:
所述JVM虚拟机根据所述第一目标函数生成与所述目标操作对应的处理结果。
如图3所示,本实施例中,首先引入FFI库以建立Dart接口,具体的,可以通过开启指令建立以引入FFI和C函数的接口函数。
接下来,通过Flutter引擎子层调用C函数,具体的,在一个实施例中,可以dlopen指令打开jvm.so共享库,执行JNI_CreateJavaVM方法建立JVM虚拟机,并获得JNIEnv结构的实例,通过JNIEnv结构的查找指令FindClass和GetMethodID找到安卓函数包中Java的类和方法。
一般来说,应用程序未启动时,尚未建立与该应用程序对应的虚拟机,这里的虚拟机具体指的是一个虚拟机实例,当一个应用程序启动时,通过上述过程建立与该应用程序对应的虚拟机。
在应用程序运行过程中,具体的,可以是前台运行,也可以是后台运行,虚拟机保持运行状态。当退出该应用程序时,关闭与该应用程序对应的虚拟机。
在一些实施例中,目标函数还包括第二目标函数,C函数通信子层包括第二接口函数,第二目标函数包括与应用函数包对应的C函数库和绘图库数据中的一项或多项,上述步骤203之前,该方法还包括:
所述Java引擎子层通过所述第二接口函数调用与所述第一目标函数匹配的第二目标函数,其中,所述第一目标函数是基于所述第二目标函数实现的。
相应的,上述步骤203具体包括:
通过与所述第一目标函数匹配的所述第二目标函数获得所述处理结果。
请继续参阅图3,在一些实施例中,在Java函数中,可以通过调用System.loadLibrary引入对应的C函数的共享库,利用JNI机制映射交互接口函数,在交互通信子层内调取对应的C函数和绘图库数据,例如可以是Skia绘图库中的数据,以实现具体的功能。
最后,将结果同步返回给Java引擎子层合成后再同步返给Flutter引擎子层或异步回调回Flutter引擎子层。
后续,Flutter引擎子层根据Java引擎子层或交互通信子层的数据进行渲染,以完成目标操作对应的处理结果的显示。
需要理解的是,本实施例中,第二目标函数可以理解为比第一目标函数更为底层的函数。
以操作输入对应绘制一个圆形做示例性说明,实施时,通过第一目标函数获取必要的数据,例如圆心坐标和半径的长度。第一目标函数将圆心坐标和半径的长度发送至第二目标函数,基于更为底层的第二目标函数,能够实现圆的绘制。
所绘制的圆形的相关数据即为本次操作输入对应的处理结果,第二引擎子层将处理结果返回第一引擎子层,也就是说,Java引擎子层将处理结果返回Flutter引擎子层,以供Flutter引擎子层进一步执行该处理结果,即显示绘制得到的圆形。
本实施例中,Java引擎子层可以通过不同的方式回调处理结果至Flutter引擎子层。
如图4所示,在一些实施例中,Flutter引擎子层中建立有服务端(Socket Server),Java引擎子层中建立有客户端(Socket Client),服务端可以使用bind()方法创建监听套接字,然后监听套接字上的传入连接,这样,客户端和服务端之间建立连接后,能够实现双向实时数据通信。这样,服务端和客户端能够基于TCP协议通过交互通信子层进行数据通信以将处理结果返回Flutter引擎子层。
在另外一些实施例中,可以利用函数指针(FPointer)作为参数,实现回调函数功能。具体的,Flutter引擎子层中注册有第一回调函数(Regist Ca11Back Functions),交互通信子层包括根据第一回调函数建立的第二回调 函数(Ca11Back Functions),Java引擎子层通过第二回调函数与Flutter引擎子层进行数据通信以将处理结果返回Flutter引擎子层。其中,交互通信子层中包括相应的C函数(C Functions),Java引擎子层中包括相应的Java函数(Java Functions)。
在一些实施例中,目标操作为手写操作,处理结果包括生成的画布和在画布上生成的手写操作笔迹的图像数据,这里,图像数据指的可以是一个对象对应的单一数据,也可以是多个对象或多层图像等对应的数据集,执行处理结果具体需要达到的目的为显示手写操作的笔迹。
在一些实施例中,在步骤203之后,该方法还包括:
获取所述目标操作的类型,所述目标操作的类型包括第一类型和第二类型,其中,所述第一类型的目标操作的显示实时性需求大于所述第二类型的目标操作的显示实时性需求;
在所述目标操作的类型为所述第一类型的情况下,以第一模式执行所述处理结果,并在所述目标操作结束后,以第二模式执行所述处理结果;
在所述目标操作的类型为所述第二类型的情况下,以第二模式执行所述处理结果;
其中,所述第一模式对应的显示延时小于所述第二模式对应的显示延时。
进一步的,在一些实施例中,所述第一模式对应的显示画质小于所述第二模式对应的显示画质。
本实施例中,可以对目标操作进行区分,并通过不同的方式实现处理结果的显示。需要理解的是,针对不同的信息,可以以不同的方式显示,示例性的,对于缩略图的显示,对于其显示实时性的要求相对较低,因此,显示缩略图的控制操作为第二类型的目标操作;而对于手写笔迹的显示,其显示实时性要求较高,因此,对于手写笔迹的显示为第一类型的目标操作。
针对上述第一类型的显示操作和第二类型的显示操作,本实施例中进一步设定了不同的处理模式以执行处理结果。
以目标操作为手写操作做示例性说明。
具体而言,在目标操作为第一类型中的手写操作的情况下,在手写过程中,以第一模式实时跟踪手写操作的触控位置,然后显示手写笔迹。这样, 手写操作进行过程中,手写笔迹的显示具有较高的实时性。
在手写操作结束之后,基于第二模式重新显示手写笔迹,基于第二模式显示的手写笔迹可以理解为对触控笔迹进行优化后的结果,这样,进行一次显示界面的渲染刷新之后,能够显示画质相对较好的处理结果。
在目标操作为第二类型中的显示画布缩略图操作时,对于显示实时性的需求较低,因此,可以直接以画质相对较好的第二模式显示相应的处理结果。
在一个实施例中,以第二模式执行所述处理结果包括:
所述第一引擎子层获取所述处理结果;
所述第一引擎子层渲染与所述处理结果对应的画布和图像数据。
本实施例中,针对实时性要求较低的数据,可以将画布和图像数据返回Flutter UI进行渲染。
需要理解的是,所述第一引擎子层获取所述处理结果可以通过以上描述的两种方式实现,具体的,可以是应用函数包将处理结果返回基础函数包,然后由基础函数包将处理结果返回第一引擎子层;还可以是应用函数包将处理结果直接返回第一引擎子层。
第一引擎子层进一步与操作系统进行交互,显示相应的处理结果。
如图5所示,基于Flutter的显示过程可以概括为以下流程,在接收到用户的操作输入,确定是否需需要更新图像,在需要更细动画的情况下,首先构建控件,然后进行界面渲染,在界面渲染之后,进行光栅化处理以进行界面的更新显示。
Flutter界面渲染过程分为布局、绘制和合成三个阶段,其中,布局和绘制在Flutter框架中完成,合成则交由Flutter引擎子层中完成,最后将渲染结果传递到底层,以驱动显示设备实现内容的显示。
然而相关技术中的数据处理链路中,需要通过Java函数、Dart函数和C函数进行数据的通信和渲染,这一数据链路的延迟较高,一般来说,画面显示延迟在秒级别。
在一些实施例中,以第一模式执行所述处理结果包括:
将所述画布和所述图像数据发送至图形显示框架;
通过所述图形显示框架渲染所述手写操作的笔迹。
画布和图像数据可以通过不同的方式发送至图形显示框架。
在其中一些实施例中,可以直接将获取的画布和图像数据保存为文件之后复制并发送至图形显示框架。在另外一些实施例中,还可以直接将画布和图像数据的指针指向图形显示框架,这里,指针具体指的是保持画布和图像数据的地址信息,这样,能够提高数据传输速度。
本实施例中,用户在Flutter UI界面执行画图操作,将轨迹信息传递给Java引擎子层,进行笔迹合成和美化,加工处理后的数据传递到C函数,以通过Skia图形绘画库形成画布和图像数据。这样,能够提高图像渲染绘制的速度,使得绘制延迟维持在毫秒级别,实现视觉上同步绘制的效果。
在一些实施例中,所述图形显示框架包括DRM(Direct Rendering Manager,直接渲染管理器)框架,所述将所述画布和所述图像数据的指针指向图形显示框架,包括:
通过LibDRM库渲染所述画布和所述图像数据;
将渲染后的所述画布和所述图像数据发送至所述DRM框架的缓冲帧。
本实施例中,DRM框架能够提供面向硬件的缓冲,用户基于DRM框架能够存储待显示的图像数据信息,并且还能监听缓冲的数据变化,将图像数据转变为显示面板驱动的数据结构,例如T-con板可使用的数据结构。
本实施例中,通过LibDRM库渲染画布和图像数据,能够获得显示装置的硬件能够识别的数据,通过LibDRM库渲染后的画布和图像数据保存在缓冲帧中,进一步的,基于显示装置的硬件能够实现手写操作的笔迹的显示。
以用户进行手写操作做示例性说明。如图6和图7所示,实施时,用户在应用(Applications)的操作界面(Flutter UI)上进行手写操作,手写的轨迹信息传输至Java模块,在Java模块中进行笔迹美化。这里,Java模块具体包括Java JVM虚拟机以及相关的Java函数(Java Function,缩写为Java Fun),
处理后的数据传递至C函数模块,通过Skia等绘图库数据进行处理,形成画布和数据结构。
对于不需要实时显示的数据,可以将其返回Flutter UI,通过Flutter UI发送至Flutter引擎(Flutter Engine)进行渲染。
对于需要实时显示的数据,则引入LibDRM,建立DRM通道,通过OCTL 接口连接到DRM设备,将画布和图像数据指针指向DRM的缓冲帧上,达到同步绘制。
请同时参阅图6和图7,如果存在需要实时显示的数据,首先开启DRM设备(DRM Device),具体的可以通过drmOpen或open函数开启基于DRM框架运行的DRM设备,接下来,检测DRM设备的能力、检索资源(Resource)、建立连接(Connector)、进行编码(Encoder)、构建缓冲帧(DRM Frame Buffer或Frame Buffer)、CRTC准备和界面绘制。
DRM设备中的CRTC(Cathode Ray Tube Controller,阴极管射线控制器)指代数据管道,用于混合和传输显示数据。
实施时,构建缓冲帧过程中,首先创建DUMB Buffer(简单缓存器),然后添加DRM Frame Buffer、准备map(映射)、进行map操作,以完成缓冲帧的构建。CRTC从DRM Frame Buffer中读出待显示的图像,并按照相应的格式输出给Encoder,从而实现界面的绘制和显示。
如图8所示,DRM设备在界面绘制过程中,首先确定矩阵绘制接口,然后调用相应设备的矩阵绘制接口,接下来,选择相应的光栅化算法,然后根据所选择的光栅化算法进行算法的实现,以完成图像的绘制。示例性的,对于带天窗的矩形可以绘制多条横线的方式实现,通过绘制横线,完成图像的绘制,对于图像的颜色,可以确定相应的坐标,然后从指定的坐标开设在内存中写入延伸数据,最后,将上述数据传输至指令集AVX。
需要理解的是,在一些实施例中,需要基于不同的图形显示框架进行图像处理、渲染和显示,示例性的,可以是DirectFB、DRM等显示框架。DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,DirectFB是为嵌入式系统而设计,它是以最小的资源开销来实现最高的硬件加速性能。
实施时,可以在显示框架中集成DirectFB和DRM,对于支持DirectFB和DRM的显示系统,可以同时基于DirectFB和DRM进行图像渲染,但是,在某些操作系统中,例如麒麟系统AArch64系统中,DirectFB处于不生效状态,则可以通过DRM框架单独进行图像渲染。
本实施例的技术方案可以概括为,如果不需要实时显示,基于第二模式实现。具体的,则通过Java引擎子层将处理结果返回Flutter引擎子层,并对 图像进行优化处理,获得画质较好的图像,然后由Flutter引擎子层与操作系统进行交互,通过操作系统调用图形显示框架,实现处理结果的显示。
这一过程中,Flutter引擎子层能够对图像进行优化,有助于提高显示效果,但是这一过程中,数据传输链路较长,显示延迟的数量级在秒级别,肉眼明显可见。
如果需要提高显示实时性,则Java引擎子层直接将处理结果返回至图形显示框架,这样,数据传输链路较短,显示实时性较高,显示延迟通常可以达到毫秒级别,在一般用户的视觉效果上,能够达到实时显示。
这一过程中,缺少了对于手写笔迹的图像的优化操作,因此,所显示的手写笔迹的图像的画质相对较差。
在手写操作结束之后,重新按照上述第二模式重新对显示结果进行优化,这一,在进行一次画面的刷新后,能够渲染显示画质较高的图像,兼顾了显示效果和显示实时性。
本公开实施例还提供一种电子设备。请参见图9,电子设备可以包括处理器901、存储器902及存储在存储器902上并可在处理器901上运行的程序9021。
程序9021被处理器901执行时可实现上述方法实施例中的任意步骤及达到相同的有益效果,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法的全部或者部分步骤是可以通过程序指令相关的硬件来完成,所述的程序可以存储于一可读取介质中。
本公开实施例还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时可实现上述图1对应的方法实施例中的任意步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
所述的存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
需要说明的是,应理解以上各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件 的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,确定模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上确定模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,各个模块、单元、子单元或子模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
以上所述是本公开实施例的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本公开的保护范围。

Claims (19)

  1. 一种数据处理方法,应用于电子设备,所述电子设备包括处理器和存储器,所述存储器存储有基础函数包和数据接口,所述电子设备上还安装有应用程序,所述应用程序包括应用函数包,所述应用函数包用于提供与所述应用程序的应用功能对应的应用函数,所述基础函数包用于提供实现预设基础功能的基础函数,其中,至少部分所述应用功能是基于所述基础功能实现的;
    所述方法包括以下步骤:
    所述基础函数包接收执行目标操作的操作输入;
    基础函数包通过数据接口调用应用函数包中与所述目标操作对应的目标函数,其中,所述目标函数为所述应用函数中的函数;
    通过所述目标函数生成与所述目标操作对应的处理结果;
    其中,所述基础函数包通过第一语言开发,所述数据接口通过第二语言开发,所述应用函数包通过第三语言开发,所述第一语言、所述第二语言和所述第三语言分别为不同的程序语言。
  2. 根据权利要求1所述的方法,其中,所述应用程序还包括第一引擎子层,所述第一引擎子层用于调用安装所述应用程序的操作系统的功能以执行所述处理结果;
    所述通过所述目标函数生成与所述目标操作对应的处理结果之后,所述方法还包括:
    所述应用函数包将所述处理结果返回所述基础函数包,所述基础函数包将所述处理结果返回所述第一引擎子层;或者
    所述应用函数包将所述处理结果返回所述第一引擎子层。
  3. 根据权利要求2所述的方法,其中,所述应用程序还包括第二引擎子层,所述第二引擎子层用于建立虚拟机,所述虚拟机用于根据所述目标函数生成所述处理结果。
  4. 根据权利要求3所述的方法,其中,所述应用程序还包括交互通信子层,所述交互通信子层与所述第二语言相对应,所述交互通信子层包括所述 数据接口,所述第一引擎子层和所述第二引擎子层通过所述交互通信子层进行数据通信。
  5. 如权利要求4所述的方法,其中,所述第一引擎子层为Flutter引擎子层,所述第二引擎子层为Java引擎子层,所述交互通信子层包括C函数通信子层。
  6. 如权利要求5所述的方法,其中,所述目标函数包括第一目标函数,所述第一目标函数包括Java的类和方法,所述C函数通信子层包括第一接口函数,所述虚拟机包括JVM虚拟机;
    所述通过所述目标函数生成与所述目标操作对应的处理结果之前,所述方法还包括:
    所述基础函数包通过所述第一接口函数向所述Java引擎子层传输与所述目标操作对应的调用指令,其中,所述数据接口包括所述第一接口函数,所述数据接口是所述Flutter引擎子层通过FFI库建立的Dart接口;
    所述Java引擎子层根据所述调用指令建立JVM虚拟机;
    所述JVM虚拟机在所述应用函数包中查找第一目标函数;
    所述通过所述目标函数生成与所述目标操作对应的处理结果,包括:
    所述JVM虚拟机根据所述第一目标函数生成与所述目标操作对应的处理结果。
  7. 如权利要求6所述的方法,其中,所述目标函数还包括第二目标函数,所述C函数通信子层包括第二接口函数,所述第二目标函数包括与所述应用函数包对应的C函数库和绘图库数据中的一项或多项;
    所述通过所述目标函数生成与所述目标操作对应的处理结果之前,所述方法还包括:
    所述Java引擎子层通过所述第二接口函数调用与所述第一目标函数匹配的第二目标函数,其中,所述第一目标函数是基于所述第二目标函数实现的;
    所述JVM虚拟机根据所述第一目标函数生成与所述目标操作对应的处理结果,包括:
    通过与所述第一目标函数匹配的所述第二目标函数获得所述处理结果。
  8. 如权利要求5至7中任一项所述的方法,其中,所述Flutter引擎子层 中建立有服务端,所述Java引擎子层中建立有客户端,所述服务端和所述客户端基于TCP协议通过所述交互通信子层进行数据通信以将所述处理结果返回所述Flutter引擎子层。
  9. 如权利要求7所述的方法,其中,所述Flutter引擎子层中注册有第一回调函数,所述交互通信子层包括根据所述第一回调函数建立的第二回调函数,所述Java引擎子层通过所述第二回调函数与所述Flutter引擎子层进行数据通信以将通过所述第二目标函数获得的所述处理结果返回所述Flutter引擎子层。
  10. 如权利要求4至7中任一项所述的方法,其中,所述基础函数包通过FFI机制与所述交互通信子层进行数据通信,所述应用函数包通过JNI机制与所述交互通信子层进行数据通信。
  11. 如权利要求2所述的方法,其中,所述目标操作为手写操作,所述处理结果包括根据所述手写操作生成的画布和在所述画布上生成的所述手写操作笔迹的图像数据。
  12. 如权利要求11所述的方法,其中,所述通过所述目标函数生成与所述目标操作对应的处理结果之后,所述方法还包括:
    获取所述目标操作的类型,所述目标操作的类型包括第一类型和第二类型,其中,所述第一类型的目标操作的显示实时性需求大于所述第二类型的目标操作的显示实时性需求;
    在所述目标操作的类型为所述第一类型的情况下,以第一模式执行所述处理结果,并在所述目标操作结束后,以第二模式执行所述处理结果;
    在所述目标操作的类型为所述第二类型的情况下,以第二模式执行所述处理结果;
    其中,所述第一模式对应的显示延时小于所述第二模式对应的显示延时。
  13. 如权利要求12所述的方法,其中,所述以第一模式执行所述处理结果包括:
    将所述画布和所述图像数据发送至图形显示框架;
    通过所述图形显示框架渲染所述手写操作的笔迹。
  14. 如权利要求13所述的方法,其中,所述图形显示框架包括DRM框架, 所述通过所述图形显示框架渲染所述手写操作的笔迹,包括:
    通过LibDRM库渲染所述画布和所述图像数据;
    将渲染后的所述画布和所述图像数据发送至所述DRM框架的缓冲帧。
  15. 如权利要求12至14中任一项所述的方法,其中,所述以第二模式执行所述处理结果包括:
    所述第一引擎子层获取所述处理结果;
    所述第一引擎子层渲染与所述处理结果对应的画布和图像数据。
  16. 如权利要求1至7中任一项所述的方法,其中,所述应用函数包与安卓系统匹配。
  17. 如权利要求1至7中任一项所述的方法,其中,运行所述应用程序的操作系统为麒麟系统。
  18. 一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;所述处理器,用于读取存储器中的程序实现如权利要求1至17中任一项所述的数据处理方法中的步骤。
  19. 一种可读存储介质,用于存储程序,所述程序被处理器执行时实现如权利要求1至17中任一项所述的数据处理方法中的步骤。
PCT/CN2023/092999 2022-05-18 2023-05-09 数据处理方法、电子设备和可读存储介质 WO2023221822A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210546962.1A CN114924837A (zh) 2022-05-18 2022-05-18 数据处理方法、电子设备和可读存储介质
CN202210546962.1 2022-05-18

Publications (1)

Publication Number Publication Date
WO2023221822A1 true WO2023221822A1 (zh) 2023-11-23

Family

ID=82807826

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/092999 WO2023221822A1 (zh) 2022-05-18 2023-05-09 数据处理方法、电子设备和可读存储介质

Country Status (2)

Country Link
CN (1) CN114924837A (zh)
WO (1) WO2023221822A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924837A (zh) * 2022-05-18 2022-08-19 京东方科技集团股份有限公司 数据处理方法、电子设备和可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659028A (zh) * 2019-09-30 2020-01-07 北京达佳互联信息技术有限公司 数据处理系统、方法、装置、电子设备及存储介质
US20200057660A1 (en) * 2017-03-08 2020-02-20 Alibaba Group Holding Limited Method and system for rendering user interfaces
CN113076209A (zh) * 2021-06-08 2021-07-06 贝壳技术有限公司 通信方法、装置、电子设备及存储介质
CN114461411A (zh) * 2020-11-10 2022-05-10 腾讯科技(深圳)有限公司 业务处理系统、方法、设备及介质
CN114924837A (zh) * 2022-05-18 2022-08-19 京东方科技集团股份有限公司 数据处理方法、电子设备和可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200057660A1 (en) * 2017-03-08 2020-02-20 Alibaba Group Holding Limited Method and system for rendering user interfaces
CN110659028A (zh) * 2019-09-30 2020-01-07 北京达佳互联信息技术有限公司 数据处理系统、方法、装置、电子设备及存储介质
CN114461411A (zh) * 2020-11-10 2022-05-10 腾讯科技(深圳)有限公司 业务处理系统、方法、设备及介质
CN113076209A (zh) * 2021-06-08 2021-07-06 贝壳技术有限公司 通信方法、装置、电子设备及存储介质
CN114924837A (zh) * 2022-05-18 2022-08-19 京东方科技集团股份有限公司 数据处理方法、电子设备和可读存储介质

Also Published As

Publication number Publication date
CN114924837A (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
US11494010B2 (en) Touch support for remoted applications
CN112269603B (zh) 一种在Linux上兼容运行Android应用的图形显示方法与装置
US9146762B2 (en) Specialized virtual machine to virtualize hardware resource for guest virtual machines
EP2622463B1 (en) Instant remote rendering
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
CN112114916B (zh) 一种在Linux操作系统上兼容运行Android应用的方法和装置
JP2013542515A (ja) 異環境間リダイレクション
WO2012044828A2 (en) User interaction support across cross-environment applications
WO2012163221A1 (zh) 显示处理方法、装置及计算机系统
US10319068B2 (en) Texture not backed by real mapping
WO2023221822A1 (zh) 数据处理方法、电子设备和可读存储介质
US20240143395A1 (en) Method and device for identifying android system drawing thread, and mobile terminal and storage medium
CN116821040B (zh) 基于gpu直接存储器访问的显示加速方法、装置及介质
WO2023087778A1 (zh) 窗口信息处理方法、装置、电子设备及存储介质
JP7482223B2 (ja) アプレットページレンダリング方法、装置、電子機器、および記憶媒体
US10733689B2 (en) Data processing
US10678553B2 (en) Pro-active GPU hardware bootup
WO2019079940A1 (zh) 图形处理方法及相关装置和设备
WO2023284625A1 (zh) 应用的跨平台显示方法、可读介质和电子设备
WO2023173896A1 (zh) 通信方法、电子设备及可读存储介质
CN117149318A (zh) 一种数据处理方法及电子设备
Chen et al. MSA: A Novel App Development Framework for Transparent Multi-Screen Support on Android Apps
CN117372597A (zh) 动画渲染方法、装置、电子设备及可读存储介质
US20080127048A1 (en) Method And System Of Accessing Display Window Memory
CN117369935A (zh) 用于libGDX引擎的多视图渲染方法、装置及设备

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23806774

Country of ref document: EP

Kind code of ref document: A1