IP Library Granted Patent US 11,006,369
Granted Patent B2
US 11,006,369 · App. 16/747,394 · Granted May 11, 2021

Background transfer service for applications on mobile devices

Inventors: Marc David McClure (Seattle, WA); Abolade Gbadegesin (Seattle, WA); Chittur Padmanabhan Subbaraman (Carnation, WA); Jianping Yin (Sammamish, WA); Jorge I. Raastroem (Issaquah, WA); Yasser Shaaban (Seattle, WA); Timothy Daniel Noonan (Cary, NC); Rachel Jiang (Redmond, WA); Peter John Torr (Bellevue, WA); Vishal Ghotge (Seattle, WA); Gregory Arthur De Souza (Seattle, WA); Pavan Rajamohan Hullumane (Seattle, WA); Adrian Dragomir (Bellevue, WA); Darin Miller (Sammamish, WA); Megan Galbraith Donahue (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
H04W52/0264G06F9/5011G06F9/546H04L41/0893H04N21/233H04N21/4126H04N21/439H04N21/6175H04W4/50H04W4/60Y02D30/70
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 11,006,369
App. No.
16/747,394
Granted
May 11, 2021
Kind
B2
Abstract

The subject disclosure is directed towards a background transfer service that provides platform-level support for third party applications to queue data transfers to run in the background, including when the application is not running in the foreground. Applications may thus perform downloading and uploading tasks in the background; however the background transfer service manages the data transfer requests so as to limit each background application's ability to interfere with foreground application operations, that is, by controlling resource usage according to one or more policies.

Claims (46)

1. A system comprising:

at least one processing unit; and

a background transfer service implemented on the at least one processing unit and configured to run on a mobile device at a platform-level to control data transfers of a plurality of applications, the data transfers comprising data transfers from a background application, the at least one processing unit programmed to:

monitor data transfer requests for the background application based upon one or more policies that control resource usage of background application data transfers, wherein the one or more policies comprise a maximum bandwidth limitation;

throttle a data transfer for the background application based at least on a bandwidth exceeding the maximum bandwidth limitation; and

un-throttle data transfer requests for the background application when the bandwidth no longer exceeds the maximum bandwidth limitation.

2. The system of claim 1 , wherein the processing unit is further programmed to:

receive a request from foreground application for additional bandwidth; and

throttle a data transfer for the background application based at least on the received request result in the bandwidth exceeding a total bandwidth limitation.

3. The system of claim 1 , wherein the one or more policies comprise a maximum limit of outstanding requests for the background application.

4. The system of claim 1 , wherein the one or more policies comprise a minimum transfer rate.

5. The system of claim 4 , wherein when the transfer rate drops below the minimum transfer rate, the background transfer service monitors for a new connectivity and requeues the transfer request when the transfer rate is above the minimum transfer rate.

6. The system of claim 4 , wherein when the transfer rate drops below the minimum transfer rate, the processing unit is further programmed to make one or more remote connections to satisfy the data transfer request.

7. The system of claim 1 , wherein the processing unit is further programmed to:

receive information indicating that the background application has changed from a background application to a new foreground application; and

un-throttled the transfer request based on the background application being changed from the background application to the new foreground application.

8. A method for controlling data transfers of a plurality of applications, the data transfers comprising data transfers from a background application, the method comprising:

monitoring data transfer requests for the background application based upon one or more policies that control resource usage of background application data transfers, wherein the one or more policies comprise a maximum bandwidth limitation;

throttle a data transfer for the background application based at least on a bandwidth exceeding the maximum bandwidth limitation; and

un-throttle data transfer requests for the background application when the bandwidth no longer exceeds the maximum bandwidth limitation.

9. The method of claim 8 , further comprising:

receiving a request from foreground application for additional bandwidth; and

throttling a data transfer for the background application based at least on the received request result in the bandwidth exceeding a total bandwidth limitation.

10. The method of claim 8 , wherein the one or more policies comprise a maximum limit of outstanding requests for the background application.

11. The method of claim 8 , wherein the one or more policies comprise a minimum transfer rate.

12. The method of claim 11 , further comprising, when the transfer rate drops below the minimum transfer rate, monitoring for a new connectivity; and

requeuing the transfer request when the transfer rate is above the minimum transfer rate.

13. The method of claim 11 , further comprising when the transfer rate drops below the minimum transfer rate, making one or more remote connections to satisfy the data transfer request.

14. The method of claim 8 , further comprising:

receiving information indicating that the background application has changed from a background application to a new foreground application; and

un-throttling the transfer request based on the background application being changed from the background application to the new foreground application.

15. One or more computer-readable media comprising computer-executable instructions for controlling data transfers of a plurality of applications, the data transfers comprising data transfers from a background application, the computer-executable instructions when executed by one or more processors, cause the one or more processors to perform the following operations:

monitoring data transfer requests for the background application based upon one or more policies that control resource usage of background application data transfers, wherein the one or more policies comprise a maximum bandwidth limitation;

throttle a data transfer for the background application based at least on a bandwidth exceeding the maximum bandwidth limitation; and

un-throttle data transfer requests for the background application when the bandwidth no longer exceeds the maximum bandwidth limitation.

16. The one or more computer-readable media of claim 15 , wherein the computer-executable instructions further cause the one or more processors to perform the following operations:

receiving a request from foreground application for additional bandwidth; and

throttling a data transfer for the background application based at least on the received request result in the bandwidth exceeding a total bandwidth limitation.

17. The one or more computer-readable media of claim 15 , wherein the one or more policies comprise a maximum limit of outstanding requests for the background application.

18. The one or more computer-readable media of claim 15 , wherein the one or more policies comprise a minimum transfer rate.

19. The one or more computer-readable media of claim 18 , wherein the computer-executable instructions further cause the one or more processors to perform the following operations:

when the transfer rate drops below the minimum transfer rate, monitoring for a new connectivity; and

requeuing the transfer request when the transfer rate is above the minimum transfer rate.

20. The one or more computer-readable media of claim 15 , wherein the computer-executable instructions further cause the one or more processors to perform the following operations:

receiving information indicating that the background application has changed from a background application to a new foreground application; and

un-throttling the transfer request based on the background application being changed from the background application to the new foreground application.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2020
From: MCCLURE, MARC DAVID; GBADEGESIN, ABOLADE; SUBBARAMAN, CHITTUR PADMANABHAN; YIN, JIANPING; RAASTROEM, JORGE I.; SHAABAN, YASSER; NOONAN, TIMOTHY DANIEL; JIANG, RACHEL; TORR, PETER JOHN; GHOTGE, VISHAL; DE SOUZA, GREGORY ARTHUR; HULLUMANE, PAVAN RAJAMOHAN; DRAGOMIR, ADRIAN; MILLER, DARIN; DONAHUE, MEGAN GALBRAITH
To: MICROSOFT CORPORATION
Reel/Frame 051559/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2020
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 051559/0035 →