IP Library Granted Patent US 10,908,948
Granted Patent B2
US 10,908,948 · App. 15/945,080 · Granted Feb 2, 2021

Multiple application instances in operating systems that utilize a single process for application execution

Inventors: Yuping Wei (Beijing, CN); Ke Xiao (Beijing, CN); Hongsheng Li (Beijing, CN); An Min Gong (Beijing, CN); Wenshuo Chen (Beijing, CN)
Assignee: VMWARE, INC
G06F9/4881
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,908,948
App. No.
15/945,080
Granted
Feb 2, 2021
Kind
B2
Abstract

Various examples for providing multiple instances of a client application in operating systems that limit execution of the client application to a single process are disclosed. A client device can include an operating system natively configured to generate a single process for an execution of the client application on the client device. A client application can be configured to, in the single process, generate sub-processes for execution of separate instances of the client application. The client application can include at least one user interface that permits creation of, termination of, or toggling between various instances of the client application.

Claims (59)

1. A system for providing multiple instances of a client application, comprising:

a client device comprising at least one hardware processor; and

program instructions executable in the client device that, when executed by the client device, cause the client device to:

provide an operating system natively configured to generate a single process for an execution of the client application on the client device based on an interpretation of a manifest file of the client application;

in response to an indication to execute the client application, generate the single process for the execution of a default routine of the client application, wherein the default routine of the client application is configured to, in the single process:

generate a first sub-process for execution of a first instance of the client application, the first sub-process being a first sub-routine extending from the default routine and having a corresponding process attribute in the manifest file;

generate a second sub-process for execution of a second instance of the client application, the second sub-process being a second sub-routine extending from the default routine and having a corresponding process attribute in the manifest file; and

maintain a first state of the first instance and a second state of the second instance; and

display at least one user interface that permits a selection of the first instance of the client application or the second instance of the client application.

2. The system of claim 1 , wherein the client application comprises a startup activity routine that is performed in response to an initial execution of the client application in the single process, the startup activity routine being configured to:

provide the at least one user interface that permits the selection of the first instance of the client application or the second instance of the client application; or

make active the first instance of the client application or the second instance of the client application.

3. The system of claim 2 , wherein the selection of the first instance of the client application in the at least one user interface makes the first instance of the client application active in the operating system; and

wherein the selection of the second instance of the client application in the at least one user interface makes the second instance of the client application active in the operating system.

4. The system of claim 2 , wherein the client application comprises:

a first startup activity sub-routine of the startup activity routine for execution of the first instance of the client application in the first sub-process; and

a second startup activity sub-routine of the startup activity routine for execution of the second instance of the client application in the second sub-process.

5. The system of claim 1 , wherein the first sub-process and the second sub-process each comprise an onDestroy routine comprising code that, when executed upon termination of a respective one of the multiple instances, returns an identifier corresponding to a terminated one of the multiple instances.

6. The system of claim 1 , wherein:

the first instance of the client application and the second instance of the client application are a portion of a plurality of instances of the client application; and

the program instructions, when executed by the client device, further cause the client device to maintain a list comprising a plurality of data structures, individual ones of the plurality of data structures in the list corresponding to active ones of the plurality of instances of the client application.

7. The system of claim 1 , wherein the operating system is a mobile operating system.

8. A non-transitory computer-readable medium for providing multiple instances of a client application embodying program code executable in a client device that, when executed by the client device, causes the client device to:

provide an operating system natively configured to generate a single process for an execution of the client application on the client device based on an interpretation of a manifest file of the client application;

in response to an indication to execute the client application, generate the single process for the execution of a default routine of the client application, wherein the default routine of the client application is configured to, in the single process:

generate a first sub-process for execution of a first instance of the client application, the first sub-process being a first sub-routine extending from the default routine and having a corresponding process attribute in the manifest file;

generate a second sub-process for execution of a second instance of the client application, the second sub-process being a second sub-routine extending from the default routine and having a corresponding process attribute in the manifest file; and

maintain a first state of the first instance and a second state of the second instance; and

display at least one user interface that permits a selection of the first instance of the client application or the second instance of the client application.

9. The non-transitory computer-readable medium of claim 8 , wherein the client application comprises a startup activity routine that is performed in response to an initial execution of the client application in the single process, the startup activity routine being configured to:

provide the at least one user interface that permits the selection of the first instance of the client application or the second instance of the client application; or

make active the first instance of the client application or the second instance of the client application.

10. The non-transitory computer-readable medium of claim 9 , wherein the selection of the first instance of the client application in the at least one user interface makes the first instance of the client application active in the operating system; and

wherein the selection of the second instance of the client application in the at least one user interface makes the second instance of the client application active in the operating system.

11. The non-transitory computer-readable medium of claim 9 , wherein the client application comprises:

a first startup activity sub-routine of the startup activity routine for execution of the first instance of the client application in the first sub-process; and

a second startup activity sub-routine of the startup activity routine for execution of the second instance of the client application in the second sub-process.

12. The non-transitory computer-readable medium of claim 8 , wherein the first sub-process and the second sub-process each comprise an onDestroy routine comprising code that, when executed upon termination of a respective one of the multiple instances, returns an identifier corresponding to a terminated one of the multiple instances.

13. The non-transitory computer-readable medium of claim 8 , wherein:

the first instance of the client application and the second instance of the client application are a portion of a plurality of instances of the client application; and

the program instructions, when executed by the client device, further cause the client device to maintain a list comprising a plurality of data structures, individual ones of the plurality of data structures in the list corresponding to active ones of the plurality of instances of the client application.

14. The non-transitory computer-readable medium of claim 8 , wherein the operating system is a mobile operating system.

15. A computer-implemented method for providing multiple instances of a client application on a client device, comprising:

providing an operating system natively configured to generate a single process for an execution of the client application on the client device based on an interpretation of a manifest file of the client application;

in response to an indication to execute the client application, generating the single process for the execution of a default routine of the client application, wherein the default routine of the client application is configured to, in the single process:

generate a first sub-process for execution of a first instance of the client application, the first sub-process being a first sub-routine extending from the default routine and having a corresponding process attribute in the manifest file;

generate a second sub-process for execution of a second instance of the client application, the second sub-process being a second sub-routine extending from the default routine and having a corresponding process attribute in the manifest file; and

maintain a first state of the first instance and a second state of the second instance; and

displaying at least one user interface that permits a selection of the first instance of the client application or the second instance of the client application.

16. The computer-implemented method of claim 15 , wherein the client application comprises a startup activity routine that is performed in response to an initial execution of the client application in the single process, the startup activity routine being configured to:

provide the at least one user interface that permits the selection of the first instance of the client application or the second instance of the client application; or

make active the first instance of the client application or the second instance of the client application.

17. The computer-implemented method of claim 16 , wherein the selection of the first instance of the client application in the at least one user interface makes the first instance of the client application active in the operating system; and

wherein the selection of the second instance of the client application in the at least one user interface makes the second instance of the client application active in the operating system.

18. The computer-implemented method of claim 16 , wherein the client application comprises:

a first startup activity sub-routine of the startup activity routine for execution of the first instance of the client application in the first sub-process; and

a second startup activity sub-routine of the startup activity routine for execution of the second instance of the client application in the second sub-process.

19. The computer-implemented method of claim 15 , wherein the first sub-process and the second sub-process each comprise an onDestroy routine comprising code that, when executed upon termination of a respective one of the multiple instances, returns an identifier corresponding to a terminated one of the multiple instances.

20. The computer-implemented method of claim 15 , wherein the operating system is a mobile operating system.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2018
From: WEI, YUPING; XIAO, KE; LI, HONGSHENG; GONG, AN MIN; CHEN, WENSHUO
To: VMWARE, INC.
Reel/Frame 045445/0462 →
Continuity (1)
Related Publication 20190310882A1 · Oct 10, 2019