A cloud Android application running method and system, electronic device and storage medium

By sharing target containers and optimizing resource allocation in cloud physical machines, the problem of Android Runtime taking up too much memory is solved, and more efficient cloud Android application operation and updates are achieved.

CN118295731BActive Publication Date: 2025-09-02MOORE THREADS TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202410404585.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-04-03
Publication Date
2025-09-02
Estimated Expiration
2044-04-03

AI Technical Summary

Technical Problem

When providing an Android application running environment on non-Android operating systems, Android Runtime takes up a large amount of memory, resulting in limited number of cloud Android applications deployed in a single physical machine.

Method used

By sharing target containers in cloud physical machines, the memory consumption of Android Runtime is reduced, multiple cloud Android applications can share the same container, and use virtual display synthesizer and vsync scheduler for picture rendering and load balancing, and optimize GPU resource allocation.

Benefits of technology

It improves the memory utilization of a single physical machine, supports running more cloud Android applications, and shortens application update time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN118295731B_ABST
    Figure CN118295731B_ABST
Patent Text Reader

Abstract

The present disclosure relates to a cloud Android application operation method and system, electronic device, and storage medium. The method is applied to the cloud, where a physical machine in the cloud includes multiple cloud Android applications and a target container shared by the multiple cloud Android applications, and the target container is used to provide an Android runtime environment. The method includes: receiving an application launch request sent by a client, where the application launch request includes a target identifier, and the target identifier is used to identify a target cloud Android application and a target user who needs to launch the target cloud Android application; responding to the application launch request based on the target container, launching the target cloud Android application and rendering a display screen corresponding to the target cloud Android application; returning the display screen corresponding to the target cloud Android application to the client, and the client is used to display the display screen corresponding to the target cloud Android application to the target user. The disclosed embodiments can effectively run the target cloud Android application on the physical machine in the cloud, and effectively experience the target cloud Android application on the client.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of computer technology, and in particular to a cloud Android application running method and system, an electronic device, and a storage medium. Background Art

[0002] In order to allow users to experience the use of cloud Android applications anytime, anywhere, it is necessary to solve the problem of providing an operating environment for Android applications on non-Android operating systems. The solution adopted in the related art can be to deploy the Android runtime (Android Runtime) environment in a container to provide an operating environment for Android applications. Since the container and the host operating system share the Linux Kernel, it is only necessary to deploy the Android runtime (ART, Android Runtime) in the container without deploying a complete Android operating system (in addition to including Android Runtime, it is also necessary to include Android Linux Kernel, etc.). However, the core processes included in Android Runtime will take up a large amount of memory, resulting in a limited number of cloud Android applications that can be deployed and run in a single physical machine. Summary of the Invention

[0003] The present disclosure proposes a cloud Android application running method and system, an electronic device, and a technical solution for a storage medium.

[0004] According to one aspect of the present disclosure, a cloud Android application running method is provided, which is applied to a cloud, wherein a physical machine in the cloud includes multiple cloud Android applications and a target container shared by the multiple cloud Android applications, and the target container is used to provide an Android runtime environment; the method includes: receiving an application startup request sent by a client, wherein the application startup request includes a target identifier, the target identifier is used to identify a target cloud Android application, and a target user who needs to start the target cloud Android application, and the target cloud Android application is one of the multiple cloud Android applications; responding to the application startup request based on the target container, starting the target cloud Android application, and rendering a display screen corresponding to the target cloud Android application; returning the display screen corresponding to the target cloud Android application to the client, wherein the client is used to display the display screen corresponding to the target cloud Android application to the target user.

[0005] In one possible implementation, the physical machine includes a login server; the receiving of the application startup request sent by the client includes: based on the login server, performing login authentication on the target user's login on the client, and after the login authentication is passed, sending an application list to the client, wherein the application list includes application identifiers of cloud Android applications that can be started by the target user; receiving the application startup request returned by the client, wherein the application startup request is generated based on the target user's selection operation on the application list on the client.

[0006] In a possible implementation, the method further includes: based on the login server and according to the application startup request, creating a target application server instance APP server corresponding to the target cloud Android application, wherein the target APP server includes the target identifier.

[0007] In one possible implementation, the target container includes a core service and a virtual display synthesizer; the target container responds to the application start request, starts the target cloud Android application, and renders a display screen corresponding to the target cloud Android application, including: sending the application start request to the core service based on the target APP server; when it is determined that the target container currently supports starting the target cloud Android application, starting the target cloud Android application based on the core service; after starting the target cloud Android application, creating a target output instance output corresponding to the target cloud Android application based on the virtual display synthesizer, wherein the target output includes the target identifier; based on the target output, rendering a display screen corresponding to the target cloud Android application.

[0008] In one possible implementation, returning the display screen corresponding to the target cloud Android application to the client includes: based on the target output and according to the target identifier, sending the display screen corresponding to the target cloud Android application to the target APP server; based on the target APP server, performing image encoding on the display screen corresponding to the target cloud Android application, and sending the encoding result to the client, wherein the client decodes the encoding result to obtain the display screen corresponding to the target cloud Android application.

[0009] In one possible implementation, the virtual display synthesizer includes a vertical synchronization vsync scheduler and multiple output lists; the method further includes: based on the vsync scheduler, assigning a vsync trigger moment to each output list, wherein different output lists have different vsync trigger moments assigned; based on the vsync scheduler, at the vsync trigger moment corresponding to the target output list, in response to the target output list being non-empty, triggering each output in the target output list to send a vsync signal to the corresponding cloud Android application, wherein the target output list is the output list where the target output is located.

[0010] In one possible implementation, the method further includes: determining, based on the vsync scheduler, the current tolerable rendering load corresponding to the target container according to the remaining rendering load of each output list, and determining that the target container currently supports launching the target cloud Android application when the current tolerable rendering load corresponding to the target container is greater than the rendering load required by the target cloud Android application.

[0011] In one possible implementation, the rendering based on the target output obtains a display screen corresponding to the target cloud Android application, including: determining the target output list corresponding to the target output based on the vsync scheduler; at the vsync trigger moment corresponding to the target output list, sending a vsync signal to the target cloud Android application based on the target output, wherein the vsync signal is used to trigger the rendering operation corresponding to the target cloud Android application to obtain the display screen corresponding to the target cloud Android application.

[0012] In one possible implementation, determining the target output list corresponding to the target output based on the vsync scheduler includes: determining, based on the vsync scheduler, whether there is at least one candidate output list in the multiple output lists whose remaining rendering load meets the rendering load requirement of the target cloud Android application; in the case that there is at least one candidate output list, based on the vsync scheduler, determining the candidate output list with the largest remaining rendering load as the target output list.

[0013] In a possible implementation, the method further includes: in the absence of a candidate output list, based on the vsync scheduler, clearing all outputs in the multiple output lists, and sorting all outputs in the multiple output lists and the target output from large to small according to rendering load requirements to obtain an output sequence; for any output in the output sequence, based on the vsync scheduler, load balancing and redistributing the output according to a preset allocation principle, wherein the preset allocation principle is used to control the load balancing between the multiple output lists after the output is allocated; in the case that each output in the output sequence successfully completes the load balancing redistribution, based on the vsync scheduler, determining the output list where the target output is located as the target output list.

[0014] In a possible implementation, the method further includes: when at least one output load balancing redistribution fails in the output sequence, determining, based on the vsync scheduler, that the target container currently does not support starting the target cloud Android application.

[0015] In one possible implementation, the method further includes: based on the target APP server, receiving a target event operation request executed by the target user on the client, wherein the target event operation request includes a text input operation request and an event input operation request; based on the core service, sending the target event operation request to the target cloud Android application through the Android function module in the target container, and returning the event processing result to the target APP server; based on the target APP server, returning the event processing result to the client.

[0016] According to one aspect of the present disclosure, a cloud Android application running system is provided, the system comprising: a cloud and a client, wherein a physical machine of the cloud comprises a plurality of cloud Android applications, and a target container shared by the plurality of cloud Android applications, the target container being used to provide an Android runtime environment; the client being used to send an application start request to the cloud, wherein the application start request comprises a target identifier, the target identifier being used to identify a target cloud Android application, and a target user who needs to start the target cloud Android application, the target cloud Android application being one of the plurality of cloud Android applications; the target container being used to start the target cloud Android application in response to the application start request, and to render a display screen corresponding to the target cloud Android application; the client being used to display the display screen corresponding to the target cloud Android application to the target user.

[0017] According to one aspect of the present disclosure, an electronic device is provided, comprising: a processor; and a memory for storing processor-executable instructions; wherein the processor is configured to call the instructions stored in the memory to execute the above method.

[0018] According to one aspect of the present disclosure, a computer-readable storage medium is provided, on which computer program instructions are stored. When the computer program instructions are executed by a processor, the above method is implemented.

[0019] In an embodiment of the present disclosure, a cloud Android application runtime system includes a physical machine on the cloud side, including multiple cloud Android applications and a target container shared by the multiple cloud Android applications for providing an Android runtime environment. Compared to deploying multiple containerized Android runtimes on a single physical machine to provide an Android runtime environment, sharing the target container can reduce Android runtime memory consumption, allowing the remaining memory of a single physical machine to support running more cloud Android applications. In an actual application scenario, an application launch request is received from a client in the cloud Android application runtime system to the cloud side. The application launch request includes a target identifier to identify a target cloud Android application to be launched and a target user to launch the target cloud Android application. The target cloud Android application is one of the multiple cloud Android applications. The target container on the cloud side responds to the application launch request, launches the target cloud Android application, and renders a display screen corresponding to the target cloud Android application. Then, the display screen corresponding to the target cloud Android application is returned to the client side, so that the client side displays the display screen corresponding to the target cloud Android application to the target user, thereby effectively running the target cloud Android application on the physical machine on the cloud side and allowing the target user to effectively experience the target cloud Android application on the client side.

[0020] It should be understood that the above general description and the following detailed description are only exemplary and explanatory, rather than limiting the present disclosure. Other features and aspects of the present disclosure will become clear from the following detailed description of exemplary embodiments with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0021] The accompanying drawings herein are incorporated into and constitute a part of the specification. These drawings illustrate embodiments consistent with the present disclosure and, together with the specification, are used to explain the technical solutions of the present disclosure.

[0022] Figure 1 A schematic diagram showing a cloud Android application running system in related technology.

[0023] Figure 2 A flowchart of a cloud Android application running method according to an embodiment of the present disclosure is shown.

[0024] Figure 3 A schematic diagram of a cloud Android application running system according to an embodiment of the present disclosure is shown.

[0025] Figure 4 A block diagram of a cloud Android application running system according to an embodiment of the present disclosure is shown.

[0026] Figure 5 A block diagram of an electronic device according to an embodiment of the present disclosure is shown. DETAILED DESCRIPTION

[0027] Various exemplary embodiments, features, and aspects of the present disclosure will be described in detail below with reference to the accompanying drawings. The same reference numerals in the accompanying drawings represent elements with the same or similar functions. Although various aspects of the embodiments are shown in the accompanying drawings, the drawings are not necessarily drawn to scale unless otherwise indicated.

[0028] The word “exemplary” is used exclusively herein to mean “serving as an example, example, or illustration.” Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments.

[0029] The term "and / or" herein simply describes an association relationship between associated objects, indicating that three relationships can exist. For example, "A and / or B" can represent the existence of three situations: A alone, A and B simultaneously, and B alone. Furthermore, the term "at least one" herein refers to any combination of at least two of any one or more of a plurality of items. For example, "at least one of A, B, and C" can represent any one or more elements selected from the set consisting of A, B, and C.

[0030] In addition, numerous specific details are provided in the following detailed description to better illustrate the present disclosure. Those skilled in the art will appreciate that the present disclosure can be practiced without certain specific details. In some instances, methods, means, components, and circuits well known to those skilled in the art are not described in detail in order to highlight the main points of the present disclosure.

[0031] Figure 1 A schematic diagram of a cloud Android application operating system in the related art is shown. Figure 1 As shown, in the related technology, multiple containers (container 1 to container 3) are deployed in a single physical machine in the cloud. The Android runtime (Android Runtime) in each container can provide an Android environment (Android Environment) for cloud Android applications. Multiple containers share the operating system (Host Linux OS) of the physical machine. A container engine (Container Engine) is also set in the physical machine to manage multiple containers. However, the core processes contained in the containerized Android Runtime will take up a large amount of memory, for example, generally 200 to 300M, resulting in the physical machine's remaining memory being able to support the number of cloud Android applications running being limited. Android Runtime

[0032] To address related technical issues, the present disclosure provides a method for running cloud Android applications that reduces the memory consumption of a containerized Android Runtime, allowing the remaining memory on a physical machine to support running more cloud Android applications. The method for running cloud Android applications provided by the present disclosure is described in detail below.

[0033] Figure 2 The flowchart of a cloud Android application running method according to an embodiment of the present disclosure is shown. The method is applied to the cloud of a cloud Android application running system, where a physical machine in the cloud includes multiple cloud Android applications and a target container shared by multiple cloud Android applications, and the target container is used to provide an Android runtime environment (Android Runtime). Figure 2 As shown, the method may include:

[0034] In step S21, an application startup request sent by the client is received, wherein the application startup request includes a target identifier, which is used to identify a target cloud Android application and a target user who needs to start the target cloud Android application, and the target cloud Android application is one of multiple cloud Android applications.

[0035] In step S22 , based on the target container responding to the application start request, the target cloud Android application is started, and a display screen corresponding to the target cloud Android application is rendered.

[0036] In step S23, the display screen corresponding to the target cloud Android application is returned to the client, wherein the client is used to display the display screen corresponding to the target cloud Android application to the target user.

[0037] In an embodiment of the present disclosure, a cloud Android application runtime system includes a physical machine on the cloud side, including multiple cloud Android applications and a target container shared by the multiple cloud Android applications for providing an Android runtime environment. Compared to deploying multiple containerized Android runtimes on a single physical machine to provide an Android runtime environment, sharing the target container can reduce Android runtime memory consumption, allowing the remaining memory of a single physical machine to support running more cloud Android applications. In an actual application scenario, an application launch request is received from a client in the cloud Android application runtime system to the cloud side. The application launch request includes a target identifier to identify a target cloud Android application to be launched and a target user to launch the target cloud Android application. The target cloud Android application is one of the multiple cloud Android applications. The target container on the cloud side responds to the application launch request, launches the target cloud Android application, and renders a display screen corresponding to the target cloud Android application. Then, the display screen corresponding to the target cloud Android application is returned to the client side, so that the client side displays the display screen corresponding to the target cloud Android application to the target user, thereby effectively running the target cloud Android application on the physical machine on the cloud side and allowing the target user to effectively experience the target cloud Android application on the client side.

[0038] In addition, in the related art, when multiple containerized Android Runtimes are deployed on a single physical machine, the same cloud Android application needs to be installed in each container, resulting in a large data memory usage of the cloud Android application on the single physical machine. Once an application update occurs, each container needs to be updated, resulting in a long time consumption. In the disclosed embodiment, by sharing the target container, the same cloud Android application only needs to be installed once on a single physical machine, which can reduce the data memory usage of the cloud Android application on the single physical machine. When a cloud Android application needs to be updated, since only one copy of the cloud Android application is installed on the single physical machine, the update operation only needs to be performed once, greatly shortening the application update time.

[0039] In one possible implementation, the physical machine includes a login server; receiving an application startup request sent by a client, including: based on the login server, performing login authentication on the target user's login on the client, and after the login authentication is passed, sending an application list to the client, wherein the application list includes application identifiers of cloud Android applications that the target user can start; receiving an application startup request returned by the client, wherein the application startup request is generated based on the target user's selection operation on the application list on the client.

[0040] A login server is deployed in the cloud physical machine so that the login server can effectively manage the user's login on the client. After the target user passes the login authentication, the application identifier of the cloud Android application that the target user can start is sent to the client for the target user to select.

[0041] In a possible implementation, the method further includes: based on the login server and according to the application startup request, creating a target APP server corresponding to the target cloud Android application, wherein the target APP server includes a target identifier.

[0042] Based on the target user's application launch request to launch the target cloud Android app, a target app server is created to prepare for the subsequent launch of the target cloud Android app for the target user. During the launch of the target user and the subsequent operation of the target cloud Android app, data transmission is achieved through communication between the target app server and the client.

[0043] Figure 3 A schematic diagram of a cloud Android application running system according to an embodiment of the present disclosure is shown. Figure 3 As shown, the physical machine in the cloud includes a login server. After a user logs in on a client, the client communicates with the login server, which authenticates the user's login (e.g., verifies the login account and password) to ensure that the user can log in securely to the cloud. The specific process of login authentication can be found in related technical implementations and is not specifically limited in this disclosure.

[0044] The cloud Android application operating system can include multiple clients, and the same user can log in to the cloud through different clients. Figure 3 As shown, user 1 can log in to the cloud based on login information (e.g., user 1's login account and login password) on client 1, or can log in to the cloud based on the same login information on client 2; user 2 can log in to the cloud based on login information (e.g., user 2's login account and login password) on client 3; and so on, user m can log in to the cloud based on login information (e.g., user m's login account and login password) on client n.

[0045] In one example, after the target user successfully logs in to the client, the target user's corresponding application list can be obtained from the cloud to display the target user's cloud Android applications that can be launched. After the target user performs an operation on the application list, an application launch request for the target user is generated and sent to the cloud.

[0046] The method of launching a cloud Android application needs to be executed for different users. Different users have different user handles (userhandle) for launching applications. Among them, userhandle is used to uniquely identify the user's identity information. Combined with the application ID of the cloud Android application that the user needs to launch, a unique identifier for this application launch request is generated, which is used to identify the user corresponding to this application launch request and the cloud Android application that needs to be launched. The specific form of the target identifier can be set in different forms according to actual needs. For example, it can be a combination of the user identifier (userhandle) and the application ID of the cloud Android application that needs to be launched, or it can be a hash value of the user identifier and the application ID of the cloud Android application that needs to be launched. This disclosure does not make specific restrictions on this.

[0047] For example, the application list corresponding to the target user includes: the application identifier of cloud Android application 1 (APP1), the application identifier of cloud Android application 2 (APP2), and the application identifier of cloud Android application 3 (APP3). After the target user performs a selection operation and selects the application identifier of APP2, an application start request for the target user is generated. The application start request includes the target identifier: the user identifier of the target user and the application identifier of APP2, indicating that the application start request is used to request to start APP2 for the target user.

[0048] After receiving the target user's application launch request, the login server creates a target APP server corresponding to the target cloud Android application to be launched for the target user. The target APP server includes a target identifier that identifies the target user and the target cloud Android application. For example, in response to the target user's application launch request to launch APP2, the login server creates a target APP server. The target APP server includes the target identifiers: the target user's user identifier and the application identifier of APP2.

[0049] by Figure 3 For example, when user 1 starts APP1 based on client 1, user 1 starts APP2 based on client 2, and user 2 starts APP2 based on client 3, Figure 3 As shown, the login server creates APP server 1 (including user ID of user 1 and application ID of APP 1), APP server 2 (including user ID of user 1 and application ID of APP 2), and APP server 3 (including user ID of user 2 and application ID of APP 2). The same process is repeated here. The same user cannot launch multiple identical cloud Android applications simultaneously, but can launch multiple different cloud Android applications simultaneously. Different users can launch the same cloud Android application simultaneously.

[0050] In one possible implementation, the target container includes core services and a virtual display synthesizer; based on the target container responding to the application start request, the target cloud Android application is started, and the display screen corresponding to the target cloud Android application is rendered, including: based on the target APP server, the application start request is sent to the core service; when it is determined that the target container currently supports starting the target cloud Android application, the target cloud Android application is started based on the core service; after starting the target cloud Android application, the target output corresponding to the target cloud Android application is created based on the virtual display synthesizer, wherein the target output includes a target identifier; based on the target output, the display screen corresponding to the target cloud Android application is rendered.

[0051] By setting core services in the target container, the start and stop of different cloud Android applications can be effectively controlled based on the shared target container; compared with the Android native display compositor in the containerized Android Runtnime in the related art, which can only render the screen for one cloud Android application, resulting in the problem of setting up multiple different containers to run different cloud Android applications, the embodiment of the present disclosure sets a virtual display compositor in the shared target container, and the virtual display compositor can effectively render corresponding display screens for different cloud Android applications.

[0052] In the cloud Android application system of the embodiment of the present disclosure, only one target container or a small number of target containers can be deployed on a single physical machine. Each target container can be shared by multiple cloud Android applications installed on the single physical machine, thereby effectively reducing the memory consumption of the Android Runtime and allowing the remaining memory of a single physical machine to support the running of more cloud Android applications.

[0053] After creating a target app server for the target user to launch the target cloud Android app, the system determines whether the target container currently supports launching the target cloud Android app. If so, the system launches the target cloud Android app for the target user based on the core service. After launching the target cloud Android app, the virtual display compositor creates a corresponding target output, enabling subsequent rendering of the target cloud Android app launched by the target user based on the target output.

[0054] After creating the target app server and target output, the entire communication link is established for the target user on the client to launch the target cloud Android app on the cloud. Communication between the client and the target app server, and between the target app server and the target output, is achieved based on the target identifiers that identify the target user and the target cloud Android app.

[0055] like Figure 3 As shown, the physical machine also includes a container manager for managing the target container, and the target container shares the operating system of the physical machine. The target container includes core services (Core Service) and a virtual display compositor (VirtualSurface Flinger). The core service in the target container starts APP1 and APP2 for user 1, and starts APP2 for user 2. The virtual display compositor in the target container creates output1 (including: user ID of user 1 and application ID of APP1), output2 (including: user ID of user 1 and application ID of APP2), and output3 (including: user ID of user 2 and application ID of APP2. Among them, output1 performs screen rendering for APP1 started by user 1, output2 performs screen rendering for APP2 started by user 1, and output3 performs screen rendering for APP2 started by user 2.

[0056] According to Android's rendering process, after the app completes rendering, it submits the graphics cache to the virtual display compositor. The virtual display compositor then synthesizes all the graphics rendered by the app using the corresponding output and submits the synthesized graphics cache to the corresponding app server. If the app only renders one layer of graphics, no compositing is performed; the graphics cache for that single layer is directly submitted to the corresponding app server. The specific rendering and compositing process can be found in related art and is not specifically limited in this disclosure.

[0057] In one example, after starting the target cloud Android application for the target user and creating the target output, the target cloud Android application will submit the rendered graphics cache to the virtual display compositor according to the Android drawing process. At this time, the virtual display compositor synthesizes all the graphics rendered by the target cloud Android application through the corresponding target output, and submits the synthesized graphics cache to the corresponding target APP server.

[0058] In one possible implementation, the display screen corresponding to the target cloud Android application is returned to the client, including: based on the target output, according to the target identifier, sending the display screen corresponding to the target cloud Android application to the target APP server; based on the target APP server, performing image encoding on the display screen corresponding to the target cloud Android application, and sending the encoding result to the client, wherein the client is used to decode the encoding result to obtain the display screen corresponding to the target cloud Android application.

[0059] The target APP server can act as an image encoder to effectively encode the display screen corresponding to the target cloud Android application. The target APP server then communicates with the client and sends the encoding result to the client, so that the client can decode the encoding result to obtain the display screen corresponding to the target cloud Android application and then display it to the target user.

[0060] Since multiple cloud Android applications installed on a single physical machine share the GPU of the physical machine, in the GPU time-division multiplexing scenario, in order to avoid too many cloud Android applications using the GPU for rendering on the same slice at the same time, resulting in excessive GPU occupancy, it is necessary to reasonably schedule the rendering operations of multiple cloud Android applications that have been started.

[0061] In one possible implementation, the virtual display synthesizer includes a vsync scheduler and multiple output lists; the method also includes: based on the vsync scheduler, assigning a vsync trigger time to each output list, wherein different output lists have different vsync trigger times assigned; based on the vsync scheduler, at the vsync trigger time corresponding to the target output list, in response to the target output list being non-empty, triggering each output in the target output list to send a vsync signal to the corresponding cloud Android application, wherein the target output list is the output list where the target output is located.

[0062] A vsync scheduler and multiple output lists are set in the virtual display synthesizer so that the outputs corresponding to multiple cloud Android applications that have been started can be reasonably allocated to multiple output lists through the vsync scheduler. Different output lists are assigned different vsync trigger times, so that different output lists correspond to different time slices, thereby staggering the rendering operations between the cloud Android applications corresponding to the outputs included in different output lists, thereby balancing the system load.

[0063] In one example, the maximum number of output lists depends on the application frame rate (fps) supported by the current Android runtime environment provided by the target container and the average per-frame rendering time (ms) of the cloud Android application with the highest GPU rendering load among multiple cloud Android applications on the current physical machine. For example, the maximum number of output lists (N) can be determined using the following formula: N = (1000ms / application frame rate (fps) / average per-frame rendering time (ms) of the cloud Android application with the highest GPU rendering load, rounded down).

[0064] The application frame rate supported by the current Android runtime environment provided by the target container may be 30fps, 60fps, 90fps, etc., which is not specifically limited in this disclosure. A single Android runtime environment only supports one application frame rate.

[0065] For example, if the application frame rate supported by the current Android runtime environment provided by the target container is 30 fps, and the average rendering time per frame of the cloud Android application with the highest GPU rendering load among multiple cloud Android applications is 2.5 ms, the maximum number of output lists in the target container, N, is rounded down to (1000 / 30 / 2.5) = 13.

[0066] For example, if the application frame rate supported by the current Android runtime environment provided by the target container is 60fps, and the average rendering time per frame of the cloud Android application with the highest GPU rendering load among multiple cloud Android applications is 2.5ms, the maximum number of output lists in the target container, N, is rounded down to (1000 / 60 / 2.5) = 6.

[0067] In one example, the maximum tolerable rendering load of each output list = (1000 ms / application frame rate fps / maximum number N of output lists).

[0068] For example, when the application frame rate supported by the current Android runtime environment provided by the target container is 60 fps and the maximum number of output lists N in the target container is 6, the maximum tolerable rendering load of each output list is (1000 / 60 / 6) = 2.6.

[0069] In one example, the rendering load required by each cloud Android application on the current physical machine is related to the GPU occupancy rate of the cloud Android application when performing off-screen rendering when running independently in the current Android runtime environment provided by the target container. For example, if the GPU occupancy rate of cloud Android application 1 (APP1) when running independently in the current Android runtime environment provided by the target container is 10% when performing off-screen rendering, the rendering load required by APP1 can be determined to be 0.1.

[0070] In one example, for any cloud Android application on the current physical machine, after the cloud Android application is updated, the rendering load required by the cloud Android application needs to be recalculated.

[0071] In one example, for any cloud Android application on the current physical machine, the rendering load required for different versions of the cloud Android application is stored in a preset configuration file, and the data structure can be {"app_id":[{"version_0",0.2},{"version_1",0.4},{"version_2",0.4}]}.

[0072] In one example, the Vsync scheduler slices a frame into multiple time slices. Here, a frame time = (1000ms / application frame rate fps), and the number of time slices is the same as the maximum number of output lists N. Therefore, each output list can occupy a separate time slice. For any output list, the start time of the time slice corresponding to that output list is the vsync trigger time for that output list.

[0073] In one example, for any output list, the output list can include an active state and an inactive state. When the output list is in the active state, it means that the output list is not empty, that is, the output list includes at least one output. When the output list is in the inactive state, it means that the output list is empty, that is, the output list does not include any output.

[0074] For any output list, at the vsync trigger time corresponding to the output list, determine whether the output list is not empty. If the output list is not empty, trigger each output in the output list to send a vsync signal to the corresponding cloud Android application, so that the cloud Android application corresponding to each output in the output list calls the GPU for rendering during the time slice corresponding to the output list; if the output list is empty, the output list does not participate in scheduling, that is, no vsync signal is triggered.

[0075] For example, if the application frame rate supported by the current Android runtime environment provided by the target container is 30fps, a frame time of 33ms is achieved. If the maximum number of output lists N in the target container is 13, the 33ms frame time can be sliced ​​into 13 time slices, each approximately 2.54ms long. The first time slice of each frame time starts at the vsync trigger time of output list 1. At this time, if output list 1 is not empty, each output in output list 1 is triggered to send a vsync signal to the corresponding cloud Android application. The second time slice of each frame time starts at the vsync trigger time of output list 2. At this time, if output list 2 is not empty, each output in output list 2 is triggered to send a vsync signal to the corresponding cloud Android application. This continues in this manner until the thirteenth time slice of each frame time starts at the vsync trigger time of output list 13. At this time, if output list 13 is not empty, each output in output list 13 is triggered to send a vsync signal to the corresponding cloud Android application.

[0076] For the operation of starting the target cloud Android application for the target user, based on the vsync scheduler, at the vsync trigger moment corresponding to the target output list, in response to the target output list being non-empty, each output in the target output list is triggered to send a vsync signal to the corresponding cloud Android application, thereby effectively realizing the target output sending a vsync signal to the target cloud Android application to trigger the execution of the rendering operation on the target cloud Android application.

[0077] In one possible implementation, the method further includes: determining, based on the vsync scheduler, the current tolerable rendering load corresponding to the target container according to the remaining rendering load of each output list, and determining that the target container currently supports launching the target cloud Android application when the current tolerable rendering load corresponding to the target container is greater than the rendering load required by the target cloud Android application.

[0078] When the target user needs to launch the target cloud Android application, for any output list, the vsync scheduler determines the remaining rendering load of the output list based on the rendering load required by each output in the output list. Furthermore, based on the remaining rendering load of each output list, the target container's corresponding current tolerable rendering load can be determined. If the target container's corresponding current tolerable rendering load is greater than the rendering load required by the target cloud Android application, the target container is determined to currently support launching the target cloud Android application, so that the core service in the target container can launch the target cloud Android application.

[0079] In one possible implementation, based on the target output, a display screen corresponding to the target cloud Android application is rendered, including: based on the vsync scheduler, determining the target output list corresponding to the target output; at the vsync trigger moment corresponding to the target output list, a vsync signal is sent to the target cloud Android application based on the target output, wherein the vsync signal is used to trigger the rendering operation corresponding to the target cloud Android application to obtain the display screen corresponding to the target cloud Android application.

[0080] After starting the target cloud Android application for the target user and creating the corresponding target output, the corresponding target output list is assigned to the target output so that a vsync signal can be sent to the target cloud Android application at the vsync trigger moment corresponding to the target output list, thereby effectively triggering the corresponding rendering operation of the target cloud Android application and obtaining the corresponding display screen of the target cloud Android application.

[0081] In one possible implementation, based on the vsync scheduler, a target output list corresponding to the target output is determined, including: based on the vsync scheduler, determining whether there is at least one candidate output list in multiple output lists whose remaining rendering load meets the rendering load requirements of the target cloud Android application; if there is at least one candidate output list, based on the vsync scheduler, determining the candidate output list with the largest remaining rendering load as the target output list.

[0082] The vsync scheduler first determines whether there is at least one candidate output list whose remaining rendering load meets the rendering load requirements of the target cloud Android application based on the remaining rendering load in each current output list. If a candidate output list exists, the candidate output list with the largest remaining rendering load can be determined as the target output list that is most suitable for the target output. The target output can then be directly assigned to the target output list. Subsequently, the target output can be scheduled on the time slice corresponding to the target output list to complete the screen rendering of the target cloud Android application.

[0083] In a possible implementation, the method further includes: in the absence of a candidate output list, based on the vsync scheduler, clearing all outputs in multiple output lists, and sorting all outputs in the multiple output lists and the target output from large to small according to the rendering load requirements to obtain an output sequence; for any output in the output sequence, based on the vsync scheduler, load balancing and redistributing the output according to a preset allocation principle, wherein the preset allocation principle is used to control the load balancing between multiple output lists after the output is allocated; when each output in the output sequence successfully completes the load balancing redistribution, based on the vsync scheduler, determining the output list where the target output is located as the target output list.

[0084] If the vsync scheduler determines that there is no candidate output list that meets the requirements, it can clear all outputs in multiple output lists, and sort all outputs in multiple output lists and target outputs from large to small according to rendering load requirements to obtain an output sequence. Then, for each output in the output sequence, load balancing and redistribution can be performed based on the preset distribution principle. If all outputs in the output sequence successfully complete the load balancing redistribution, the distribution of the target output is effectively completed, and the output list where the target output is located can be determined as the target output list. Subsequently, the target output can be scheduled on the time slice corresponding to the target output list to complete the screen rendering of the target cloud Android application.

[0085] In one example, first, the output data of each current output list is saved; then, all output lists are cleared, and all outputs and target outputs in all output lists are sorted from large to small according to rendering load requirements to obtain an output sequence, and then each output in the output sequence is redistributed in order from large to small according to rendering load requirements.

[0086] In one example, for any reallocated output, a suitable output list can be assigned to the output according to the following dichotomy. Specifically: when the target container includes N output lists (outputlist1 to outputlistN), outputlist1 to outputlistN are divided into left and right parts. For example, when N is an even number, outputlist1 to outputlist(N / 2) are divided into the left half, and outputlist{(N / 2)+1} to outputlistN are divided into the right half; when N is an odd number, outputlist1 to outputlist[(N+1) / 2] are divided into the left half, and outputlist{[(N+1) / 2]+1} to outputlistN are divided into the right half.

[0087] Then, the total rendering load of the left half and the total rendering load of the right half are calculated respectively, and the half with the smaller total rendering load is determined. The two parts are divided repeatedly. If the total rendering load is equal, the left half is selected first, until an output list is found whose remaining rendering load can meet the output currently being load distributed. The output is then added to the output list to participate in vsync scheduling to achieve load balancing among the N output lists after the output is assigned.

[0088] After performing the load balancing redistribution described above for all outputs in the output sequence, if the redistribution is successful, ensuring a relatively balanced rendering load for each output list within each time slice of a frame, the output list containing the target output is determined as the target output list. The target output can then be scheduled for the corresponding time slice to complete the rendering of the target cloud Android application.

[0089] In a possible implementation, the method further includes: when at least one output load balancing redistribution fails in the output sequence, determining, based on the vsync scheduler, that the target container currently does not support starting the target cloud Android application.

[0090] After performing the aforementioned load balancing on all outputs in the output list, if at least one output fails to be allocated, it can be determined that the target container currently does not support launching the target cloud Android application. In this case, the output data for each output list is restored based on the data saved before the load balancing reallocation, and a prompt message is returned to the target app server to inform the target app server that the target container currently does not support launching the target cloud Android application.

[0091] In one example, when the current target container does not currently support launching the target cloud Android application, the target APPserver can determine whether there are other target containers on the current physical machine that can provide the Android runtime environment, and repeat the above operations to determine whether the target cloud Android application can be successfully launched.

[0092] After the target cloud Android application is successfully started and the target output corresponding to the target cloud Android application is successfully assigned to the target output list to participate in vsync scheduling, the target output can be scheduled on the time slice corresponding to the target output list to complete the screen rendering of the target cloud Android application.

[0093] In one example, Android Runtnime in the target container can provide basic Android service capabilities, for example, Android Runtnime in the target container supports running Window Manager Service (WMS), Package Manager Service (PMS), Activity Manager Service (AMS), Input Manager Service (IMS), etc. in the target container. Figure 3 As shown, the target container includes WMS, AMS, PMS, and IMS.

[0094] Among them, WMS is responsible for managing all windows of the system. It is mainly responsible for allocating windows and handling the hierarchical relationship between windows; PMS is responsible for managing the information of cloud Android applications installed in the system. It provides a series of query interfaces that can obtain information about installed cloud Android applications, as well as interfaces for installing, uninstalling and updating the cloud Android application; AMS is responsible for managing the life cycle, task stack, switching between processes and activities of cloud Android applications. It works with PMS to ensure that cloud Android applications can run correctly and interact with users; IMS is a system service used to handle various user operations and abstract the event input system. Its main function is to collect and distribute input events, including device plugging and unplugging, touch events, etc. In addition to WMS, AMS, PMS, and IMS, the modules that provide basic Android service capabilities in the target container can also set other modules according to actual conditions. This disclosure does not make specific restrictions on this.

[0095] In one possible implementation, the method further includes: based on the target APP server, receiving a target event operation request executed by a target user on the client, wherein the target event operation request includes a text input operation request and an event input operation request; based on the core service, sending the target event operation request to the target cloud Android application through the Android function module in the target container, and returning the event processing result to the target APP server; based on the target APP server, returning the event processing result to the client.

[0096] For text input operation requests, the core service acts as a transit bridge, forwarding the text input operation request of the target cloud Android application to the client through the target APP Server, so that the input method is started on the client, and then the input result is returned to the target cloud Android application through the channel.

[0097] For event input operation requests, such as key touch events, the client passes the key touch events to the core service via the target APP Server, and the core service passes them to the target cloud Android application for processing through the event injection capability of WMS.

[0098] In addition to the aforementioned text input and event input requests, target event operation requests may also include other event operation requests, which are not specifically limited in this disclosure. For any event, the core service acts as a transit bridge to enable data transmission between the client and the target cloud Android application. For specific event processing, please refer to the relevant Android implementation methods, which are not specifically limited in this disclosure.

[0099] According to an embodiment of the present disclosure, a cloud Android application runtime system includes a physical machine on the cloud side, including multiple cloud Android applications and a target container shared by the multiple cloud Android applications for providing an Android runtime environment. Compared to deploying multiple containerized Android runtimes on a single physical machine to provide an Android runtime environment, sharing the target container can reduce Android runtime memory consumption, allowing the remaining memory of a single physical machine to support running more cloud Android applications. In an actual application scenario, an application launch request is received from a client in the cloud Android application runtime system to the cloud side. The application launch request includes a target identifier to identify a target cloud Android application to be launched and a target user to launch the target cloud Android application. The target cloud Android application is one of the multiple cloud Android applications. The target container on the cloud side responds to the application launch request, launches the target cloud Android application, and renders a display screen corresponding to the target cloud Android application. Then, the display screen corresponding to the target cloud Android application is returned to the client side, so that the client side displays the display screen corresponding to the target cloud Android application to the target user, thereby effectively running the target cloud Android application on the physical machine on the cloud side and allowing the target user to effectively experience the target cloud Android application on the client side.

[0100] It is understood that the above-mentioned various method embodiments mentioned in this disclosure can be combined with each other to form combined embodiments without violating the principle logic. Due to space limitations, this disclosure will not go into details. It is understood by those skilled in the art that in the above-mentioned methods of specific implementation, the specific execution order of each step should be determined by its function and possible internal logic.

[0101] In addition, the present disclosure also provides a cloud Android application operating system, an electronic device, a computer-readable storage medium, and a program, all of which can be used to implement any cloud Android application operating method provided by the present disclosure. The corresponding technical solutions and descriptions are referred to the corresponding records in the method section and will not be repeated here.

[0102] Figure 4 FIG. 1 is a block diagram of a cloud Android application running system according to an embodiment of the present disclosure. Figure 4 As shown, the system 40 includes: a cloud and a client, wherein the physical machine in the cloud includes multiple cloud Android applications and a target container shared by the multiple cloud Android applications, and the target container is used to provide an Android runtime environment;

[0103] The client is configured to send an application launch request to the cloud, wherein the application launch request includes a target identifier, which is used to identify a target cloud Android application and a target user who needs to launch the target cloud Android application, and the target cloud Android application is one of multiple cloud Android applications;

[0104] The target container is used to start the target cloud Android application in response to the application start request, and render a display screen corresponding to the target cloud Android application;

[0105] The client is used to display the corresponding display screen of the target cloud Android application to the target user.

[0106] In one possible implementation, the physical machine includes a login server;

[0107] The login server is used to authenticate the target user's login to the client and send an application list to the client after the login authentication is passed, wherein the application list includes the application identifiers of the cloud Android applications that the target user can start;

[0108] The client is configured to generate an application start request based on a target user's selection operation on the application list, and send the application start request to the login server.

[0109] In a possible implementation, the login server is used to create a target APP server corresponding to the target cloud Android application according to the application startup request, wherein the target APP server includes a target identifier.

[0110] In one possible implementation, the target container includes core services and a virtual display compositor;

[0111] Target APP server, used to send application startup requests to core services;

[0112] The core service is used to launch the target cloud Android application if it is determined that the target container currently supports launching the target cloud Android application;

[0113] A virtual display synthesizer is used to create a target output corresponding to the target cloud Android application after starting the target cloud Android application, wherein the target output includes a target identifier;

[0114] Target output is used to render the display screen corresponding to the target cloud Android application.

[0115] In one possible implementation, the target output is used to send the display screen corresponding to the target cloud Android application to the target APP server according to the target identifier;

[0116] The target APP server is used to encode the display screen corresponding to the target cloud Android application and send the encoding result to the client;

[0117] The client is used to decode the encoding result to obtain the display screen corresponding to the target cloud Android application.

[0118] In one possible implementation, the virtual display compositor includes a vsync scheduler and multiple output lists;

[0119] The vsync scheduler is used to assign a vsync trigger time to each output list, where different output lists are assigned different vsync trigger times;

[0120] The vsync scheduler is used to trigger each output in the target output list to send a vsync signal to the corresponding cloud Android application in response to the target output list being non-empty at the vsync trigger moment corresponding to the target output list, wherein the target output list is the output list where the target output is located.

[0121] In one possible implementation, the vsync scheduler is used to determine the current tolerable rendering load corresponding to the target container based on the remaining rendering load of each output list, and to determine whether the target container currently supports launching the target cloud Android application when the current tolerable rendering load corresponding to the target container is greater than the rendering load required by the target cloud Android application.

[0122] In one possible implementation, a vsync scheduler is used to determine a target output list corresponding to a target output;

[0123] The target output is used to send a vsync signal to the target cloud Android application at the vsync trigger moment corresponding to the target output list, wherein the vsync signal is used to trigger the rendering operation corresponding to the target cloud Android application to obtain the display screen corresponding to the target cloud Android application.

[0124] In one possible implementation, the vsync scheduler is configured to determine whether there is at least one candidate output list among the multiple output lists whose remaining rendering load satisfies the rendering load requirement of the target cloud Android application;

[0125] The vsync scheduler is used to determine the candidate output list with the largest remaining rendering load as the target output list when there is at least one candidate output list.

[0126] In one possible implementation, the vsync scheduler is configured to clear all outputs in the multiple output lists if no candidate output list exists, and sort all outputs and the target output in the multiple output lists from largest to smallest according to rendering load requirements to obtain an output sequence;

[0127] The vsync scheduler is used to redistribute the load of any output in the output sequence according to the preset distribution principle. The preset distribution principle is used to control the load balancing between multiple output lists after the output is allocated.

[0128] The vsync scheduler is used to determine the output list where the target output is located as the target output list when each output in the output sequence successfully completes load balancing redistribution.

[0129] In a possible implementation, the vsync scheduler is configured to determine that the target container currently does not support launching the target cloud Android application when at least one output load balancing redistribution fails in the output sequence.

[0130] In a possible implementation, the target APP server is configured to receive a target event operation request executed by a target user on a client, and send the target event operation request to a core service, where the target event operation request includes a text input operation request and an event input operation request;

[0131] The core service is used to send the target event operation request to the target cloud Android application through the Android function module in the target container, and return the event processing result to the target APP server;

[0132] The target APP server is used to return the event processing results to the client.

[0133] This method has a specific technical connection with the internal structure of the computer system, and can solve the technical problem of how to improve the hardware computing efficiency or execution effect (including reducing the amount of data storage, reducing the amount of data transmission, increasing the hardware processing speed, etc.), thereby obtaining the technical effect of improving the internal performance of the computer system in accordance with the laws of nature.

[0134] In some embodiments, the functions or modules included in the device provided by the embodiments of the present disclosure can be used to execute the method described in the above method embodiments. The specific implementation can refer to the description of the above method embodiments. For the sake of brevity, it will not be repeated here.

[0135] The present disclosure also provides a computer-readable storage medium having computer program instructions stored thereon, wherein the computer program instructions implement the above method when executed by a processor. The computer-readable storage medium may be a volatile or non-volatile computer-readable storage medium.

[0136] An embodiment of the present disclosure further proposes an electronic device, comprising: a processor; and a memory for storing instructions executable by the processor; wherein the processor is configured to call the instructions stored in the memory to execute the above method.

[0137] An embodiment of the present disclosure also provides a computer program product, including computer-readable code, or a non-volatile computer-readable storage medium carrying computer-readable code. When the computer-readable code runs in a processor of an electronic device, the processor in the electronic device executes the above method.

[0138] The electronic device may be provided as a terminal, a server, or other forms of devices.

[0139] Figure 5 FIG. 1 is a block diagram of an electronic device according to an embodiment of the present disclosure. Figure 5 , the electronic device 1900 can be provided as a server or a terminal device. Figure 5 The electronic device 1900 includes a processing component 1922, which further includes one or more processors, and a memory resource represented by a memory 1932 for storing instructions executable by the processing component 1922, such as an application. The application stored in the memory 1932 may include one or more modules, each corresponding to a set of instructions. In addition, the processing component 1922 is configured to execute the instructions to perform the above-described method.

[0140] The electronic device 1900 may further include a power supply component 1926 configured to perform power management of the electronic device 1900, a wired or wireless network interface 1950 configured to connect the electronic device 1900 to a network, and an input / output interface 1958. The electronic device 1900 may operate based on an operating system stored in the memory 1932, such as a Microsoft Server operating system (Windows Server 2003). TM ), a graphical user interface operating system launched by Apple (Mac OS X TM ), a multi-user, multi-process computer operating system (Unix TM ), a free and open source Unix-like operating system (Linux TM ), an open-source Unix-like operating system (FreeBSD TM ) or similar.

[0141] In an exemplary embodiment, a non-volatile computer-readable storage medium is also provided, such as a memory 1932 including computer program instructions that can be executed by the processing component 1922 of the electronic device 1900 to perform the above method.

[0142] The present disclosure may be a system, method and / or computer program product. The computer program product may include a computer-readable storage medium carrying computer-readable program instructions for causing a processor to implement various aspects of the present disclosure.

[0143] Computer-readable storage media can be a tangible device that can hold and store the instructions used by the instruction execution device. Computer-readable storage media can be, for example, (but not limited to) an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. More specific examples (non-exhaustive list) of computer-readable storage media include: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device, for example, a punch card or a convex structure in a groove on which instructions are stored, and any suitable combination thereof. Computer-readable storage media used herein is not interpreted as a transient signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagated by waveguides or other transmission media (for example, light pulses by fiber optic cables), or electrical signals transmitted by wires.

[0144] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to be stored in the computer-readable storage medium in each computing / processing device.

[0145] The computer program instructions for performing the operations of the present disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, and conventional procedural programming languages ​​such as "C" language or similar programming languages. Computer-readable program instructions may be executed entirely on a user's computer, partially on a user's computer, as an independent software package, partially on a user's computer, partially on a remote computer, or entirely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., utilizing an Internet service provider to connect via the Internet). In some embodiments, an electronic circuit, such as a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may be personalized by utilizing the state information of the computer-readable program instructions. The electronic circuit may execute the computer-readable program instructions, thereby realizing various aspects of the present disclosure.

[0146] Various aspects of the present disclosure are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It should be understood that each block of the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.

[0147] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device, thereby producing a machine, so that when these instructions are executed by the processor of the computer or other programmable data processing device, a device is generated that implements the functions / actions specified in one or more blocks in the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium, where these instructions cause the computer, programmable data processing device, and / or other device to operate in a specific manner. Thus, the computer-readable medium storing the instructions comprises an article of manufacture that includes instructions for implementing various aspects of the functions / actions specified in one or more blocks in the flowchart and / or block diagram.

[0148] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device so that a series of operational steps are performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to implement the functions / actions specified in one or more blocks in the flowchart and / or block diagram.

[0149] The flow charts and block diagrams in the accompanying drawings show the possible architecture, functions and operations of the systems, methods and computer program products according to multiple embodiments of the present disclosure. In this regard, each box in the flow chart or block diagram can represent a part of a module, program segment or instruction, and the part of the module, program segment or instruction contains one or more executable instructions for realizing the prescribed logical function. In some alternative implementations, the functions marked in the box can also occur in a sequence different from that marked in the accompanying drawings. For example, two consecutive boxes can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each box in the block diagram and / or flow chart, and the combination of the boxes in the block diagram and / or flow chart can be implemented by a dedicated hardware-based system that performs the prescribed function or action, or can be implemented by a combination of dedicated hardware and computer instructions.

[0150] The computer program product may be implemented in hardware, software, or a combination thereof. In one embodiment, the computer program product is implemented as a computer storage medium. In another embodiment, the computer program product is implemented as a software product, such as a software development kit (SDK).

[0151] The above description of the various embodiments tends to emphasize the differences between the various embodiments. The same or similar aspects can be referenced with each other and will not be repeated herein for the sake of brevity.

[0152] Those skilled in the art will understand that in the above-mentioned method of the specific implementation method, the writing order of each step does not mean a strict execution order and does not constitute any limitation on the implementation process. The specific execution order of each step should be determined by its function and possible internal logic.

[0153] If the technical solution of this application involves personal information, the product that applies the technical solution of this application has clearly informed the personal information processing rules and obtained the individual's voluntary consent before processing personal information. If the technical solution of this application involves sensitive personal information, the product that applies the technical solution of this application has obtained the individual's separate consent before processing sensitive personal information, and at the same time meets the "explicit consent" requirement. For example, on personal information collection devices such as cameras, a clear and prominent sign is set to inform that the personal information collection scope has been entered and personal information will be collected. If the individual voluntarily enters the collection scope, it is deemed that they agree to the collection of their personal information; or on the personal information processing device, when the personal information processing rules are notified by obvious signs / information, the individual's authorization is obtained through pop-up information or by asking the individual to upload their personal information; among which, the personal information processing rules may include information such as the personal information processor, the purpose of personal information processing, the processing method, and the type of personal information processed.

[0154] While various embodiments of the present disclosure have been described above, the above descriptions are illustrative, non-exhaustive, and not intended to be limiting of the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is selected to best explain the principles of the embodiments, their practical applications, or improvements to existing technologies, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A cloud Android application running method, characterized in that: The method is applied to a cloud, where a physical machine in the cloud includes multiple cloud Android applications and a target container shared by the multiple cloud Android applications, where the target container is used to provide an Android runtime environment; the method includes: Receive an application startup request sent by a client, wherein the application startup request includes a target identifier, the target identifier is used to identify a target cloud Android application, and a target user who needs to start the target cloud Android application, and the target cloud Android application is one of the multiple cloud Android applications; The target container responds to the application start request, starts the target cloud Android application, and renders a display screen corresponding to the target cloud Android application; Returning the display screen corresponding to the target cloud Android application to the client, wherein the client is used to display the display screen corresponding to the target cloud Android application to the target user; The target container includes a virtual display synthesizer; the virtual display synthesizer includes a vertical synchronization vsync scheduler and multiple output instance output lists; The method also includes: based on the vsync scheduler, allocating the output corresponding to each started cloud Android application to the corresponding output list according to a preset allocation principle, wherein the preset allocation principle is used to control the load balancing between the multiple output lists; based on the vsync scheduler, allocating a vsync trigger time for each output list, wherein different output lists have different vsync trigger times allocated; based on the vsync scheduler, at the vsync trigger time corresponding to any output list, in response to the output list being non-empty, triggering each output in the output list to send a vsync signal to the corresponding cloud Android application.

2. The method according to claim 1, characterized in that The physical machine includes a login server; The receiving the application startup request sent by the client includes: Based on the login server, perform login authentication on the target user at the client, and after the login authentication is passed, send an application list to the client, wherein the application list includes application identifiers of cloud Android applications that can be started by the target user; The application start request returned by the client is received, wherein the application start request is generated based on a selection operation of the target user on the application list on the client.

3. The method according to claim 2, characterized in that The method further comprises: Based on the login server and according to the application start request, a target application server instance APP server corresponding to the target cloud Android application is created, wherein the target APP server includes the target identifier.

4. The method according to claim 3, characterized in that The target container includes core services; The step of responding to the application start request based on the target container, starting the target cloud Android application, and rendering a display screen corresponding to the target cloud Android application includes: Based on the target APP server, sending the application startup request to the core service; When it is determined that the target container currently supports launching the target cloud Android application, launching the target cloud Android application based on the core service; After starting the target cloud Android application, creating a target output instance output corresponding to the target cloud Android application based on the virtual display synthesizer, wherein the target output includes the target identifier; Based on the target output, a display screen corresponding to the target cloud Android application is rendered.

5. The method according to claim 4, characterized in that The returning the display screen corresponding to the target cloud Android application to the client includes: Based on the target output, according to the target identifier, the display screen corresponding to the target cloud Android application is sent to the target APP server; Based on the target APP server, image encoding is performed on the display screen corresponding to the target cloud Android application, and the encoding result is sent to the client, wherein the client is used to decode the encoding result to obtain the display screen corresponding to the target cloud Android application.

6. The method according to claim 1, wherein The method further comprises: Based on the vsync scheduler, the current tolerable rendering load corresponding to the target container is determined according to the remaining rendering load of each output list, and when the current tolerable rendering load corresponding to the target container is greater than the rendering load required by the target cloud Android application, it is determined that the target container currently supports launching the target cloud Android application.

7. The method according to claim 1, characterized in that The rendering based on the target output to obtain a display screen corresponding to the target cloud Android application includes: Determine the target output list corresponding to the target output based on the vsync scheduler; At the vsync triggering moment corresponding to the target output list, a vsync signal is sent to the target cloud Android application based on the target output, wherein the vsync signal is used to trigger the rendering operation corresponding to the target cloud Android application to obtain the display screen corresponding to the target cloud Android application.

8. The method according to claim 7, characterized in that The determining, based on the vsync scheduler, the target output list corresponding to the target output includes: Based on the vsync scheduler, determining whether there is at least one candidate output list among the multiple output lists whose remaining rendering load meets the rendering load requirement of the target cloud Android application; In the case that there is at least one candidate output list, based on the vsync scheduler, the candidate output list with the largest remaining rendering load is determined as the target output list.

9. The method according to claim 8, characterized in that The method further comprises: If no candidate output list exists, based on the vsync scheduler, clear all outputs in the multiple output lists, and sort all outputs in the multiple output lists and the target output from largest to smallest according to rendering load requirements to obtain an output sequence; For any output in the output sequence, based on the vsync scheduler, load balancing and redistributing the output according to a preset allocation principle, wherein the preset allocation principle is used to control the load balancing among the multiple output lists after the output is allocated; In a case where each output in the output sequence successfully completes load balancing redistribution, based on the vsync scheduler, the output list where the target output is located is determined as the target output list.

10. The method according to claim 9, characterized in that The method further comprises: In a case where at least one output load balancing redistribution fails in the output sequence, it is determined based on the vsync scheduler that the target container currently does not support starting the target cloud Android application.

11. The method according to claim 4, characterized in that The method further comprises: Based on the target APP server, receiving a target event operation request executed by the target user on the client, wherein the target event operation request includes a text input operation request and an event input operation request; Based on the core service, the target event operation request is sent to the target cloud Android application through the Android function module in the target container, and the event processing result is returned to the target APP server; Based on the target APP server, the event processing result is returned to the client.

12. A cloud Android application operating system, characterized in that: The system includes: a cloud and a client, wherein a physical machine in the cloud includes multiple cloud Android applications and a target container shared by the multiple cloud Android applications, and the target container is used to provide an Android runtime environment; The client is configured to send an application startup request to the cloud, wherein the application startup request includes a target identifier, the target identifier is used to identify a target cloud Android application and a target user who needs to start the target cloud Android application, and the target cloud Android application is one of the multiple cloud Android applications; The target container is configured to start the target cloud Android application in response to the application start request, and render a display screen corresponding to the target cloud Android application; The client is used to display the display screen corresponding to the target cloud Android application to the target user; The target container includes a virtual display synthesizer, and the virtual display synthesizer includes a vsync scheduler and multiple output lists; The vsync scheduler is specifically used to: allocate the output corresponding to each started cloud Android application to the corresponding output list according to a preset allocation principle, wherein the preset allocation principle is used to control the load balancing between the multiple output lists; allocate a vsync trigger time for each output list, wherein different output lists are allocated different vsync trigger times; at the vsync trigger time corresponding to any output list, in response to the output list being non-empty, trigger each output in the output list to send a vsync signal to the corresponding cloud Android application.

13. An electronic device, characterized in that: include: processor; a memory for storing processor-executable instructions; The processor is configured to call the instructions stored in the memory to execute the method according to any one of claims 1 to 11.

14. A computer-readable storage medium having computer program instructions stored thereon, characterized in that: When the computer program instructions are executed by a processor, the method according to any one of claims 1 to 11 is implemented.

Citation Information

Patent Citations

  • Application deployment method and system based on cloud computing platform

    CN104793946A

  • Extending a programmable logic controller with apps

    CN107407918A

  • Method and system for realizing cloud application window list of Android mobile terminal by simulating local App

    CN114253652A

  • Method and device for optimizing Android container display system and electronic equipment

    CN116360928A

  • Application starting method and device, electronic equipment and computer readable storage medium

    CN117270987A