BACKGROUND

Some existing software applications can include a wide range of features that enable users to access and manage data from a number of resources. As a result, some applications can involve complex architectures that may require coordination with a number of remote computers and services. For example, some communication programs enable a number of users to share live video and audio streams while providing access to calendars, phone books, address books, chat messages, shared files, etc. Such applications can coordinate with a number of resources storing all of the different types of content.

Given the complex and interconnected nature of some current systems, some applications have a dependency on a number of application components, which can include data structures storing content and executable libraries. Such structures can have a number of drawbacks, one being that a launch time of an application relying on a number of application components can cause excessive delays. Software developers are continually challenged with the task of minimizing the launch time of an application, as unwanted delays can greatly impact the end-user experience and the overall appeal and utilitarian value of an application.

Application designers have used a number of techniques to help minimize the launch time of an application. For example, some designs specifically select certain components or categories of application data to load into memory when an application is launched. Although this approach can help the performance of an application during an initial launch, the user may experience delays when certain application features are accessed during runtime. If an application component is not loaded into memory during a launch sequence, a computer is then required to use an on-demand load model, which loads the application component into memory or performs other operations when the functionality is initiated by the user. Thus, although an on-demand load model may help an application's launch time, this arrangement causes delays which can impact an application's overall responsiveness.

It can be appreciated that there is a need for solutions that optimize both the responsiveness and launch time of an application. It is with respect to these and other technical challenges that the disclosure made herein is presented.

SUMMARY

The techniques disclosed herein utilize anticipated user actions determined by a predictive gesture analysis to preload and/or execute application components to provide improved efficiency, responsiveness and launch times in software applications. In some configurations, a system can monitor user input gestures to determine if a user-controlled cursor moves into a detection area positioned in proximity to one or more selectable user interface (“UI”) elements. When a user input causes a cursor to move into the detection area, the system can preload or execute one or more application components that are associated with the UI elements. The system can also dynamically adjust the position, size and/or shape of the detection area based on a number of factors, including the presence of one or more predetermined input gestures. By dynamically adjusting aspects of a detection area used for initiating actions for associated application components, the system can optimize the predictive techniques used for identifying the intent of a user. In addition to improving the response time of functions during execution of an application, the optimized predictive techniques can allow applications to reduce an initial amount of information loaded into memory to reduce an application's launch time.

In some configurations, the system can cancel pre-executed operations or purge stored data that is pre-loaded into memory in response to the detection of a predetermined input gesture. For example, if a user interface of an application comprises two UI elements, a button for displaying contact information and a button for displaying message information, the system may load both sets of information when a user input cause a cursor to enter a detection area. When the cursor meets one or more criteria with respect to one of the UI elements, the system may purge the loaded information of the other UI element to optimize the use of memory resources. For instance, when the cursor moves within a threshold distance of the button for displaying contact information, the system may purge the pre-loaded message information.

In some configurations, the system can initiate actions for the application components in predetermined stages. For example, if a communication application utilizes a number of application components for retrieving contact information for meeting participants, a system may need to execute a number stages: establish a connection with a remote service, retrieve the contact information, and load the contact information into memory. The system can control the execution of each stage based on the detection of user input gestures with respect to multiple detection areas. In some configurations, the detection areas can be concentrically arranged around one or more UI elements. Each detection area can create a layer associated with each stage of a multi-stage process for providing a more granular level of control of the computing resources that may be used.

Features and technical benefits other than those explicitly described above will be apparent from a reading of the following Detailed Description and a review of the associated drawings. This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The term “techniques,” for instance, may refer to system(s), method(s), computer-readable instructions, module(s), algorithms, hardware logic, and/or operation(s) as permitted by the context described above and throughout the document.

