IP Library Granted Patent US 12,235,902
Granted Patent B2
US 12,235,902 · App. 18/357,490 · Granted Feb 25, 2025

Intelligent buffering of queries from a mobile application

Inventors: Nabil Enayet (Jersey City, NJ); Tejas Yadav (West Haven, CT); Tao Ye (Garfield, NJ)
Assignee: Nuvolo Technologies Corporation
G06F16/90335
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 12,235,902
App. No.
18/357,490
Granted
Feb 25, 2025
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium for intelligently buffering queries from a mobile application. In one aspect, the method may include receiving, by an application programming interface executing on a mobile device, multiple queries, from different software widgets executing on a mobile application, for data from a database stored on the mobile device, determining, by the application programming interface, a level of priority for each query of the multiple queries, providing, by the application programming interface, each of the multiple queries for storage in a data buffer until processing resources of the mobile device are available to process one or more of the multiple queries, and processing each query of the multiple queries against the database stored on the mobile device based on the assigned level of priority.

Claims (70)

1. A computer implemented method comprising:

determining, by an application programming interface, software widgets executing on respective mobile applications on a mobile device;

receiving, by the application programming interface executing on the mobile device, a plurality of queries, from the software widgets, for data from a database stored on the mobile device, the plurality of queries including two or more substantially simultaneous queries submitted to the database;

determining, by the application programming interface, a software widget attribute of each respective software widget of the software widgets that submitted the two or more substantially simultaneous queries to the database, the software widget attribute including a visibility characteristic of the software widget at a first time and at least one of a rate at which the software widget is used relative to at least an additional software widget of the software widgets, and a rate of change of software widget data displayed by the software widget;

determining, by the application programming interface, a level of priority for each query of the plurality of queries based on the software widget attribute of each respective software widget;

adjusting, by the application programming interface, the level of priority based on a change of the visibility characteristic of the software widget at a second time;

providing, by the application programming interface, each of the plurality of queries for storage in a data buffer until processing resources of the mobile device are available to process one or more of the plurality of queries; and

processing each query of the plurality of queries against the database stored on the mobile device based on the level of priority that is adjusted.

2. The computer implemented method of claim 1 , wherein determining, by the application programming interface, a level of priority for each query of the plurality of queries comprises:

determining a level of priority for each query of the plurality of queries based on a timestamp associated with each query of the plurality of queries.

3. The computer implemented method of claim 2 , wherein:

the timestamp associated with each query of the plurality of queries indicates a time that the query was originated by a particular software widget of the software widgets; and

the visibility characteristic of the software widget corresponds to the software widget being visible on a display of the mobile device or not visible on the display of the mobile device.

4. The computer implemented method of claim 1 , wherein determining, by the application programming interface, a level of priority for each query of the plurality of queries comprises:

determining a level of priority for each query of the plurality of queries based on (i) a time stamp associated with the query and (ii) whether or not a particular software widget of the software widgets that originated the query is visible on a display of the mobile device.

5. The computer implemented method of claim 4 , wherein determining a level of priority for each query of the plurality of queries based on (i) a time stamp associated with the query and (ii) whether or not a particular software widget of the software widgets that originated the query is visible on the display of the mobile device comprises:

determining a first level of priority for one or more first queries that originate from a software widget that is currently visible on the display of the mobile device, wherein the first level of priority prioritizes the one or more first queries for execution over one or more second queries that originate from a software widget that is not visible on the display of the mobile device.

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

adjusting, by the application programming interface, a level of priority that is associated with at least one query that is stored in the data buffer.

7. The computer implemented method of claim 6 , wherein adjusting, by the application programming interface, a level of priority that is associated with at least one query that is stored in the data buffer comprises:

determining, by the application programming interface, that a first software widget that was previously not visible on a display of the mobile device is now visible on the display of the mobile device;

determining, by the application programming interface, that a particular query that originated from the first software widget is stored in the data buffer; and

adjusting the level of priority associated with the particular query in a manner that promotes the particular query for execution over one or more other queries of the plurality of queries that originated from a widget that is not visible on the display of the mobile device.

8. The computer implemented method of claim 6 , wherein adjusting, by the application programming interface, a level of priority that is associated with at least one query that is stored in the data buffer comprises:

determining, by the application programming interface, that a second software widget that was visible on a display of the mobile device is no longer visible on the display of the mobile device;

determining, by the application programming interface, that a particular query that originated from the second software widget is stored in the data buffer; and

adjusting the level of priority associated with the particular query in a manner that demotes the particular query for execution after each other query of the plurality of queries stored in the data buffer that originated from a software widget that is visible on the display of the mobile device.

9. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

determining, by an application programming interface, software widgets executing on respective mobile applications on a mobile device;

receiving, by the application programming interface executing on the mobile device, a plurality of queries, from the software widgets, for data from a database stored on the mobile device, the plurality of queries including two or more substantially simultaneous queries submitted to the database;

determining, by the application programming interface, a software widget attribute of each respective software widget of the software widgets that submitted the two or more substantially simultaneous queries to the database, the software widget attribute including a visibility characteristic of the software widget at a first time and at least one of a rate at which the software widget is used relative to at least an additional software widget of the software widgets, and a rate of change of software widget data displayed by the software widget;

determining, by the application programming interface, a level of priority for each query of the plurality of queries based on the software widget attribute of each respective software widget;

adjusting, by the application programming interface, the level of priority based on a change of the visibility characteristic of the software widget at a second time;

providing, by the application programming interface, each of the plurality of queries for storage in a data buffer until processing resources of the mobile device are available to process one or more of the plurality of queries; and

processing each query of the plurality of queries against the database stored on the mobile device based on the level of priority that is adjusted.

10. The system of claim 9 , wherein determining, by the application programming interface, a level of priority for each query of the plurality of queries comprises:

determining a level of priority for each query of the plurality of queries based on a timestamp associated with each query of the plurality of queries.

11. The system of claim 10 , wherein:

the timestamp associated with each query of the plurality of queries indicates a time that the query was originated by a particular software widget of the software widgets; and

the visibility characteristic of the software widget corresponds to the software widget being visible on a display of the mobile device or not visible on the display of the mobile device.

12. The system of claim 9 , wherein determining, by the application programming interface, a level of priority for each query of the plurality of queries comprises:

determining a level of priority for each query of the plurality of queries based on (i) a time stamp associated with the query and (ii) whether or not a particular software widget of the software widgets that originated the query is visible on a display of the mobile device.

13. The system of claim 12 , wherein determining a level of priority for each query of the plurality of queries based on (i) a time stamp associated with the query and (ii) whether or not a particular software widget of the software widgets that originated the query is visible on the display of the mobile device comprises:

determining a first level of priority for one or more first queries that originate from a software widget that is currently visible on the display of the mobile device, wherein the first level of priority prioritizes the one or more first queries for execution over one or more second queries that originate from a software widget that is not visible on the display of the mobile device.

14. The system of claim 9 , the operations further comprising:

adjusting, by the application programming interface, a level of priority that is associated with at least one query that is stored in the data buffer.

15. The system of claim 14 , wherein adjusting, by the application programming interface, a level of priority that is associated with at least one query that is stored in the data buffer comprises:

determining, by the application programming interface, that a first software widget that was previously not visible on a display of the mobile device is now visible on the display of the mobile device;

determining, by the application programming interface, that a particular query that originated from the first software widget is stored in the data buffer; and

adjusting the level of priority associated with the particular query in a manner that promotes the particular query for execution over one or more other queries of the plurality of queries that originated from a widget that is not visible on the display of the mobile device.

16. The system of claim 14 , wherein adjusting, by the application programming interface, a level of priority that is associated with at least one query that is stored in the data buffer comprises:

determining, by the application programming interface, that a second software widget that was visible on a display of the mobile device is no longer visible on the display of the mobile device;

determining, by the application programming interface, that a particular query that originated from the second software widget is stored in the data buffer; and

adjusting the level of priority associated with the particular query in a manner that demotes the particular query for execution after each other query of the plurality of queries stored in the data buffer that originated from a software widget that is visible on the display of the mobile device.

17. A non-transitory computer-readable medium storing software comprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising:

determining, by an application programming interface, software widgets executing on respective mobile applications on a mobile device;

receiving, by the application programming interface executing on the mobile device, a plurality of queries, from the software widgets, for data from a database stored on the mobile device, the plurality of queries including two or more substantially simultaneous queries submitted to the database;

determining, by the application programming interface, a software widget attribute of each respective software widget of the software widgets that submitted the two or more substantially simultaneous queries to the database, the software widget attribute including a visibility characteristic of the software widget at a first time and at least one of a rate at which the software widget is used relative to at least an additional software widget of the software widgets, and a rate of change of software widget data displayed by the software widget;

determining, by the application programming interface, a level of priority for each query of the plurality of queries based on the software widget attribute of each respective software widget;

adjusting, by the application programming interface, the level of priority based on a change of the visibility characteristic of the software widget at a second time;

providing, by the application programming interface, each of the plurality of queries for storage in a data buffer until processing resources of the mobile device are available to process one or more of the plurality of queries; and

processing each query of the plurality of queries against the database stored on the mobile device based on the level of priority that is adjusted.

18. The non-transitory computer-readable medium of claim 17 , wherein determining, by the application programming interface, a level of priority for each query of the plurality of queries comprises:

determining a level of priority for each query of the plurality of queries based on a timestamp associated with each query of the plurality of queries.

19. The non-transitory computer-readable medium of claim 18 , wherein:

the timestamp associated with each query of the plurality of queries indicates a time that the query was originated by a particular software widget of the software widgets; and

the visibility characteristic of the software widget corresponds to the software widget being visible on a display of the mobile device or not visible on the display of the mobile device.

20. The non-transitory computer-readable medium of claim 17 , wherein determining, by the application programming interface, a level of priority for each query of the plurality of queries comprises:

determining a level of priority for each query of the plurality of queries based on (i) a time stamp associated with the query and (ii) whether or not a particular software widget of the software widgets that originated the query is visible on a display of the mobile device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2023
From: ENAYET, NABIL; YADAV, TEJAS; YE, TAO
To: NUVOLO TECHNOLOGIES CORPORATION
Reel/Frame 064593/0655 →
Continuity (3)
Continuation 16439304 · Jun 12, 2019
Provisional Application 62684018 · Jun 12, 2018
Related Publication 20230367820A1 · Nov 16, 2023
References Cited (19)
US 8347228B1 · Kates · 2013 [cited by examiner]
US 11755658B2 · Enayet et al. · 2023 [cited by applicant]
US 20040070627A1 · Shahine · 2004 [cited by examiner]
US 20070067352A1 · McCall · 2007 [cited by applicant]
US 20070299812A1 · Salch · 2007 [cited by applicant]
US 20090043799A1 · Morris · 2009 [cited by examiner]
US 20090307300A1 · Guedalia et al. · 2009 [cited by applicant]
US 20100049890A1 · Best et al. · 2010 [cited by applicant]
US 20100094827A1 · Mehta · 2010 [cited by examiner]
US 20110153662A1 · Stanfill et al. · 2011 [cited by applicant]
US 20120150895A1 · Barsness · 2012 [cited by examiner]
US 20140129588A1 · Chi et al. · 2014 [cited by applicant]
US 20150234831A1 · Prasanna Kumar · 2015 [cited by examiner]
US 20150347179A1 · Barraclough et al. · 2015 [cited by applicant]
US 20160065673A1 · Mehra · 2016 [cited by applicant]
US 20170235725A1 · Ghosh · 2017 [cited by applicant]
US 20190377761A1 · Enayet et al. · 2019 [cited by applicant]
KR 20070028762A · 2007 [cited by examiner]
KR 101132270B1 · 2012 [cited by applicant]