IP Library Granted Patent US 9,374,407
Granted Patent B2
US 9,374,407 · App. 13/865,515 · Granted Jun 21, 2016

Mobile device application streaming

Inventors: Justin Quan (San Francisco, CA); Michael A. Chan (San Francisco, CA)
Assignee: Nextbit Systems, Inc.
H04L65/60G06F8/62G06F8/63G06F9/4406G06F9/4416G06F17/3007G06F17/3015G06F17/30085G06F17/30091G06F17/30194H04L9/0825H04L9/3226H04L43/04H04L65/4069H04L67/10H04L67/1095H04L67/1097H04L67/2823H04L67/2842H04L67/40H04L67/42H04W8/24G06F17/30011G06F17/30286Y02B60/188
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 9,374,407
App. No.
13/865,515
Granted
Jun 21, 2016
Kind
B2
Abstract

Technology for decomposing an application into fragments and streaming the application in fragments is disclosed herein. According to at least one embodiment, a computer-implemented method includes steps of determining multiple application fragments of a computer application, wherein each application fragment of the application fragments includes a code to present at least one interface of the computer application; storing the application fragments at a storage device; generating a resource dependency data structure, wherein for each specific application fragment of the application fragments, the resource dependency data structure includes identifications of resources that are needed for running the specific application fragment; and streaming, via a network component, at least one application fragment of the application fragments to a computing device.

Claims (55)

1. A computer-implemented method comprising:

determining multiple application fragments of a computer application, wherein each application fragment of the application fragments includes a code to present at least one interface of the computer application;

storing the application fragments at a storage device;

generating a resource dependency data structure, wherein for each specific application fragment of the application fragments, the resource dependency data structure includes identifications of resources that are needed for running the specific application fragment;

determining a fragment relationship data structure, wherein the fragment relationship data structure includes one or more application fragments that follow an application fragment during operation of the computer application, the one or more application fragments being determined by running the application through an emulator, the emulator determining the one or more application fragments based on the resource dependency of the one or more application fragments, the resource dependency of a given application fragment being a function of one or more resources required to display at least one user interface associated with the given application fragment, and wherein the emulator enables the splitting of the computer application into a first application fragment and a second application fragment when the resource dependency of a first user interface of the computer application changes from the resource dependency of a second user interface of the computer application, the first application fragment corresponding to the first user interface and the second application fragment corresponding to the second user interface; and

streaming, via a network component, at least one application fragment of the application fragments to a computing device.

2. The computer-implemented method of claim 1 , further comprising:

for each specific application fragment of the application fragments, incorporating resources that are needed for running the specific application fragment into the specific application fragment, based on the resource dependency data structure.

3. The computer-implemented method of claim 1 , further comprising:

streaming, via the network component, resources that are needed for running the application fragment to the computing device, based on the resource dependency data structure.

4. The computer-implemented method of claim 1 , wherein the resources include images, icons, texts, audios, videos, 3D models, or other data included in the computer application.

5. The computer-implemented method of claim 1 , wherein the determining further comprises:

running the computer application in a simulated environment of a mobile device.

6. A computer-implemented method comprising:

running, at a computing device, a first fragment as a running instance of a computer application;

receiving, from a server, a second fragment of the computer application, wherein operation of the first fragment can potentially leads to the second fragment;

receiving a signal indicating that the running instance of the computer application transitions from the first fragment to the second fragment; and

in response to the signal, launching the second fragment,

wherein the first application fragment corresponds to an activity in a first operating environment, wherein the second application fragment corresponds to the activity in a second operating environment, and wherein the second application fragment follows the first application fragment in response to detecting a transition from doing the activity on a first device to doing the activity on a second device, the first device hosting the first operating environment and the second device hosting the second operating environment, the first operating environment being a different type of operating environment from the second operating environment.

7. The computer-implemented method of claim 6 , further comprising:

in response to the signal, stopping the first fragment from running.

8. The computer-implemented method of claim 6 , wherein the second fragment includes resources that are needed for running the second fragment.

9. The computer-implemented method of claim 6 , further comprising:

receiving a resource dependency data structure, wherein the resource dependency data structure includes identifications of resources that are needed for running fragments of the computer application.

10. The computer-implemented method of claim 9 , further comprising:

receiving resources that are needed for running the second fragment, based on the resource dependency data structure.

11. The computer-implemented method of claim 6 , further comprising:

receiving a fragments relationship data structure, wherein the fragments relationship data structure includes identifications of fragments that leads to another fragment of the computer application.

12. The computer-implemented method of claim 11 , further comprising:

sending a request, to the server, for fragments to which the operation of the first fragment can potentially leads.

13. A server comprising:

a network component configured to communicate with a first computing device;

a processor;

a memory storing instructions which, when executed by the processor, cause the server to perform a process including:

receiving, from the first computing device, multiple fragments of the computer application based on at least one portion of a computer application, wherein each fragment of the fragments includes a code to present at least one interface of the computer application, and the fragments are generated by the first computing device by running the portion of the computer application;

receiving, from the first computing device, a fragment relationship data structure, wherein the fragment relationship data structure includes one or more application fragments that follow an application fragment during operation of the computer application, the one or more application fragments being determined by running the application through an emulator, the emulator determining the one or more application fragments based on the resource dependency of the one or more application fragments, the resource dependency of a given application fragment being a function of one or more resources required to display at least one user interface associated with the given application fragment, and wherein the emulator enables the splitting of the computer application into a first application fragment and a second application fragment when the resource dependency of a first user interface of the computer application changes from the resource dependency of a second user interface of the computer application, the first application fragment corresponding to the first user interface and the second application fragment corresponding to the second user interface; and

receiving, from the first computer device, a resource dependency data structure, wherein for each specific fragment of the fragments, the resource dependency data structure includes identifications of resources that are needed for running the specific fragment.

14. The server of claim 13 , wherein the process further includes:

receiving a fragments relationship data structure, wherein the fragments relationship data structure includes identifications of fragments that leads to another fragment of the fragments.

15. The server of claim 13 , wherein the process further includes:

receiving, from a second computing device, at least on additional fragment of the computer application.

16. The server of claim 13 , wherein the process further includes:

in response to a request for the computer application from a client computing device, transmitting at least one fragment of the fragments to the client computing device.

17. The server of claim 16 , wherein the process further includes:

transmitting fragments that can potentially follow the at least one fragment, based on a fragments relationship data structure.

18. The server of claim 16 , wherein the transmitted fragments are selected so that the transmitted fragments are enough for the client computing device to start or continue running the computer application.

19. A computer-implemented method comprising:

running, at a computing device, a container application;

receiving, from a server, a first fragment of a computer application;

executing, at the computing device, the first fragment through a control of the container application; and

launching, at the computer device, a second fragment of the computer application received from the server by the container application when the first fragment ends its execution, and based on data from a fragments data structure indicating that the second application fragment follows the first application fragment during operation of the computer application

wherein the fragment data structure includes one or more application fragments that follow an application fragment during operation of the computer application, the one or more application fragments being determined by running the application through an emulator, the emulator determining the one or more application fragments based on the resource dependency of the one or more application fragments, the resource dependency of a given application fragment being a function of one or more resources required to display at least one user interface associated with the given application fragment, and wherein the emulator enables the splitting of the computer application into the first application fragment and the second application fragment when the resource dependency of a first user interface of the computer application changes from the resource dependency of a second user interface of the computer application, the first application fragment corresponding to the first user interface and the second application fragment corresponding to the second user interface.

20. The computer-implemented method of claim 19 , further comprising:

sending a request generated by the container application, to the server, for fragments to which an operation of the first fragment can potentially leads; and

receiving, from the server, a second fragment of the computer application.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2017
From: NEXTBIT SYSTEMS INC.
To: RAZER (ASIA-PACIFIC) PTE. LTD.
Reel/Frame 041980/0254 →
RELEASE OF SECURITY INTEREST Recorded Jan 27, 2017
From: PINNACLE VENTURES, L.L.C., AS AGENT
To: NEXTBIT SYSTEMS INC.
Reel/Frame 041519/0146 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME FROM NEXTBIT INC. TO NEXTBIT SYSTEM INC. PREVIOUSLY RECORDED ON REEL 032490 FRAME 0947. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT TO NEXTBIT SYSTEMS INC. Recorded Dec 13, 2016
From: QUAN, JUSTIN; CHAN, MICHAEL
To: NEXTBIT SYSTEMS INC.
Reel/Frame 040894/0958 →
SECURITY INTEREST Recorded Dec 1, 2015
From: NEXTBIT SYSTEMS INC.
To: PINNACLE VENTURES, L.L.C., AS AGENT
Reel/Frame 037184/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2014
From: QUAN, JUSTIN; CHAN, MICHAEL
To: NEXTBIT SYSTEMS INC.
Reel/Frame 032490/0947 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2013
From: QUAN, JUSTIN; CHAN, MICHAEL
To: NEXTBIT, INC.
Reel/Frame 030896/0880 →
Continuity (2)
Provisional Application 61708794 · Oct 2, 2012
Related Publication 20140095667A1 · Apr 3, 2014