Sub-process Instance Management in Single-Process Android Apps

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The Android operating system's one-to-one relationship between an application and a process limits the execution of multiple instances of the same application on a user device, making it difficult for developers to achieve certain functionalities, such as simultaneous log-ins to different accounts, and complicates the use of global or static variables.

Innovation Solution

Implementing class inheritance and instance management to generate sub-processes within a single process, allowing multiple instances of a client application to run concurrently, with each instance maintaining its state and sharing global variables, while the user interface enables selection and toggling between instances.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Stability of the object's composition

If a one-to-one relationship between application and process is maintained, then process stability and simplicity are improved, but the ability to run multiple instances of the same application is lost

Engineering Contradiction:
Improveprocess stabilityVSAvoidmulti-instance capability
Core Design Contradiction:
Stability of the object's compositionVSAdaptability or versatility

Solution Approach 1:

The patent segments the application execution into multiple sub-processes within a single process context. Each sub-process represents an independent instance of the application with its own execution thread, allowing multiple instances to run concurrently while sharing the parent process's resources and global variables.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements a nested process structure where sub-processes are contained within the parent process. This nested architecture allows instances to be hierarchical, with each sub-process nested within the main application process, enabling multi-instance functionality while maintaining process stability through the parent process's control.

Inventive Principle:
Principle #7Nested doll (Nesting)

2Adaptability or versatility

If separate process installations are created for multiple application instances, then multi-instance functionality is achieved, but device storage and installation complexity increase

Engineering Contradiction:
Improvemulti-instance functionalityVSAvoiddevice storage
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent merges multiple application instances into a single process installation. Instead of requiring separate APK installations for each instance, the system combines multiple instances within one process, sharing common resources such as the Dalvik virtual machine, class libraries, and global variables, thereby reducing storage requirements while maintaining multi-instance functionality.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent makes the single process installation universal by enabling it to host multiple instances simultaneously. The process is designed to be multi-functional, capable of managing different instances of the same application with distinct states and data, eliminating the need for separate installations and making the single installation serve multiple purposes.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Device complexity

If global or static variables are used in a one-to-one application-process model, then variable simplicity is maintained, but accessibility across multiple instances becomes difficult

Engineering Contradiction:
Improvevariable management simplicityVSAvoidvariable accessibility
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent introduces the process-level environment as an intermediary that enables shared access to global and static variables across multiple instances. The sub-processes communicate through the parent process's variable space, allowing instances to access and modify shared variables without direct inter-instance communication mechanisms, thus maintaining simplicity while enabling accessibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Use of energy by moving object

If multiple application instances share a single process, then resource utilization efficiency is improved, but instance isolation and state management become complex

Engineering Contradiction:
Improveresource utilization efficiencyVSAvoidinstance state management
Core Design Contradiction:
Use of energy by moving objectVSDevice complexity

Solution Approach 1:

The patent applies local quality by giving each sub-process its own localized execution context and state space while maintaining access to shared process resources. Each instance has its own thread-local variables and execution state, ensuring isolation where needed, while sharing global variables and resources at the process level, achieving efficient resource utilization with managed complexity.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10908948B2Multiple application instances in operating systems that utilize a single process for application execution
Publication Date: 2021.02.02 OMNISSA LLC
  • US10908948B2 patent drawing
  • US10908948B2 patent drawing
  • US10908948B2 patent drawing

AI summary

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.