IP Library Granted Patent US 9,864,597
Granted Patent B1
US 9,864,597 · App. 15/200,851 · Granted Jan 9, 2018

Systems and methods for providing software updates

Inventors: David Marmaros (Mountain View, CA); Stephen R. Lawrence (Mountain View, CA); Mihai Florin Ionescu (Mountain View, CA); Niniane Wang (Mountain View, CA); Omar Habib Khan (Toronto, CA)
Assignee: Google Inc.
G06F8/65
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,864,597
App. No.
15/200,851
Granted
Jan 9, 2018
Kind
B1
Abstract

The present invention comprises systems and methods, and computer readable media comprising the methods, for updating software applications. The systems and methods of the present invention provide automation and flexibility to the updating process. Processor usage and network usage are monitored and software updates are initiated and/or continued during periods where processor and/or network usage are low. The update process may be halted when the processor and/or network connection are called upon for other uses. Processor and/or network usage may also be throttled, for example limiting the bandwidth available for the download to maintain sufficient processor share and/or bandwidth for other tasks. Adverse impact on a computer user is minimized.

Claims (69)

1. A method comprising the following operations performed by at least one processor:

initiating a download for an update to a software application on a computing device;

storing the downloaded update in a queue;

monitoring a level of processor activity of the computing device;

determining if the monitored processor activity level is below a first threshold level;

retrieving the downloaded update from the queue based on the determination that the monitored processor activity level is below the first threshold level; and

installing the downloaded update to update the software application.

2. The method of claim 1 , further comprising the following operations performed by the at least one processor:

determining that the monitored processor activity level during the install is above the first threshold level; and

halting the install of the update based on the determination.

3. The method of claim 2 , further comprising the following operations performed by the at least one processor:

during a halted install, determining that the monitored processor activity level is below the first threshold level; and

resuming the install of the update.

4. The method of claim 3 , further comprising the following operations performed by the at least one processor:

storing an indication of an installed portion of the update during the halted install; and

resuming the install of the update based on the stored indication.

5. The method of claim 1 , wherein initiating the download for the update further comprises the following operations performed by the at least one processor:

monitoring a level of network activity of the computing device; and

initiating the download for the update to the software application based on the monitored level of network activity.

6. The method of claim 5 , further comprising the following operations performed by the at least one processor:

determining that the monitored network activity level during the download is above a second threshold level; and

throttling or halting the download based on the determination.

7. The method of claim 6 , further comprising the following operations performed by the at least one processor:

determining that the monitored network activity level during the download is below the second threshold level; and

resuming the install of the download based on the determination.

8. The method of claim 5 , wherein monitoring the level of network activity of the computing device comprises monitoring at least one of an outgoing network bandwidth or an incoming network bandwidth.

9. The method of claim 1 , wherein initiating the download for the update further comprises the following operations performed by the at least one processor:

monitoring usage data for the software application; and

initiating the download for the update to the software application based on the monitored usage data.

10. The method of claim 1 , wherein the download is initiated based on a determination that the download can be masked by other processes on the computing device.

11. A system, comprising:

at least one processor; and

a memory storing executable instructions that, when executed by the at least one processor, causes the at least one processor to perform the following operations:

initiating a download for an update to a software application on a computing device;

storing the downloaded update in a queue;

monitoring a level of processor activity of the computing device;

determining if the monitored processor activity level is below a first threshold level;

retrieving the downloaded update from the queue based on the determination that the monitored processor activity level is below the first threshold level; and

installing the downloaded update to update the software application.

12. The system of claim 11 , wherein the at least one processor further performs the following operations:

determining that the monitored processor activity level during the install is above the first threshold level; and

halting the install of the update based on the determination.

13. The system of claim 12 , wherein the at least one processor further performs the following operations:

during a halted install, determining that the monitored processor activity level is below the first threshold level; and

resuming the install of the update.

14. The system of claim 13 , wherein the at least one processor further performs the following operations:

storing an indication of an installed portion of the update during the halted install; and

resuming the install of the update based on the stored indication.

15. The system of claim 11 , wherein the at least one processor further performs the following operations:

monitoring a level of network activity of the computing device; and

initiating the download for the update to the software application based on the monitored level of network activity.

16. The system of claim 15 , wherein the at least one processor further performs the following operations:

determining that the monitored network activity level during the download is above a second threshold level; and

throttling or halting the download based on the determination.

17. The system of claim 16 , wherein the at least one processor further performs the following operations:

determining that the monitored network activity level during the download is below the second threshold level; and

resuming the install of the download based on the determination.

18. The system of claim 15 , wherein the at least one processor further performs the following operation to monitor the level of network activity of the computing device:

monitoring at least one of an outgoing network bandwidth or an incoming network bandwidth.

19. The system of claim 11 , wherein the at least one processor further performs the following operations to initiate the download for the update further comprises:

monitoring usage data for the software application; and

initiating the download for the update to the software application based on the monitored usage data.

20. A tangible, non-transitory computer-readable medium storing instructions that, when executed by at least one processor, cause the at least one processor to:

initiate a download for an update to a software application on a computing device;

store the downloaded update in a queue;

monitor a level of processor activity of the computing device;

determine if the monitored processor activity level is below a first threshold level;

retrieve the downloaded update from the queue based on the determination that the monitored processor activity level is below the first threshold level; and

install the downloaded update to update the software application.

Assignments (3)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2016
From: MARMAROS, DAVID; LAWRENCE, STEPHEN R.; IONESCU, MIHAI FLORIN; WANG, NINIANE; KHAN, OMAR HABIB
To: GOOGLE INC.
Reel/Frame 040606/0799 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2016
From: MARMAROS, DAVID; LAWRENCE, STEPHEN R.; IONESCU, MIHAI FLORIN; WANG, NINIANE; KHAN, OMAR HABIB
To: GOOGLE INC.
Reel/Frame 039083/0093 →
Continuity (2)
Continuation 13621025 · Sep 15, 2012
Continuation 10749441 · Dec 31, 2003