US20140372356A1 - Predictive pre-launch for applications - Google Patents

Predictive pre-launch for applications Download PDF

Info

Publication number
US20140372356A1
US20140372356A1 US13/915,870 US201313915870A US2014372356A1 US 20140372356 A1 US20140372356 A1 US 20140372356A1 US 201313915870 A US201313915870 A US 201313915870A US 2014372356 A1 US2014372356 A1 US 2014372356A1
Authority
US
United States
Prior art keywords
application
launch
prediction
applications
predictor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US13/915,870
Other versions
US9508040B2 (en
Inventor
Ahmad Bilal
Mehmet Iyigun
Milos Kralj
Christopher Kleynhans
Hari Pulapaka
Arun Kishan
Asela Gunawardana
Paul Koch
Christopher Meek
Eric Horvitz
Rich Caruana
Michael Fortin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CARUANA, Rich, FORTIN, MICHAEL, HORVITZ, ERIC, MEEK, CHRISTOPHER, BILAL, AHMAD, KOCH, PAUL, PULAPAKA, HARI, GUNAWARDANA, ASELA, IYIGUN, MEHMET, KISHAN, ARUN, KLEYNHANS, Christopher, KRALJ, Milos
Priority to US13/915,870 priority Critical patent/US9508040B2/en
Priority to CN201380077373.2A priority patent/CN105431822B/en
Priority to EP13773500.7A priority patent/EP3008589A1/en
Priority to PCT/US2013/061047 priority patent/WO2014200547A1/en
Publication of US20140372356A1 publication Critical patent/US20140372356A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Publication of US9508040B2 publication Critical patent/US9508040B2/en
Application granted granted Critical
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Definitions

  • Launching applications is an expensive operation due to the resources used during initialization. This problem may be further aggravated with the popularity of low-cost devices which may tend to have more hardware constraints than traditional desktops.
  • solutions like caching have been used to speed up application launches. While these solutions improve the launch time of applications, they may not be sufficient to give users adequate response or desired performance and may be less effective when cache space is limited.
  • Systems and methods of pre-launching applications in a computer system said applications being likely to be activated by a user from a terminated and/or suspended process state, are disclosed.
  • the pre-launching of an application may be based on the assessed probability of the application being activated—as well as the level of availability of system resources to affect such pre-launching.
  • Applications may be pre-launched based on these and other conditions/considerations, designed to improve the user's experience of a quick launch of applications in the background.
  • Several prediction models are presented to provide a good estimate of the likelihood of an application being activated by a user. Such prediction models may comprise an adaptive predictor (based on past application usage situations) and/or a switch rate predictor (based on historic data of an application being switched and, possibly, having a decay rate applied to such switch rate measure).
  • a method for pre-launching applications within a computer system may comprise the steps of: for a given set of applications, said applications capable of being activated by a user of the computer system, associating a prediction of when said applications may be activated by said user with said application; monitoring system resources of said computer system; applying a set of pre-launch rules to said set of applications, said pre-launch rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said predictions associated with said applications; and pre-launching one said application, based upon the satisfaction of said set of pre-launch rules.
  • a system for pre-launching applications on a computer system may comprise: a prediction engine, said prediction engine capable of providing a prediction measure of likelihood that a given application may be activated by a user of said computer system; a resource monitor, said resource monitor capable of providing a measure of system resource utilization of said computer system; a pre-launch policy module, said pre-launch policy module capable of applying a set of pre-launch policy rules, said pre-launch policy rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said prediction measures associated with said applications; and a pre-launch queue module, said pre-launch queue module capable of maintaining a list of applications for pre-launching in said computer system, said list of applications depending upon the satisfaction of said pre-launch policy rules.
  • FIG. 1 depicts a number of exemplary environments in which present system may reside in made in accordance with the principles of the present application.
  • FIG. 2 shows one embodiment of the present system as made in accordance with the principles of the present application.
  • FIG. 3 is one embodiment of a state diagram for applications in which predictive pre-launching is possible.
  • FIG. 4 depicts a paradigm example to illustrate the use of the present systems and methods.
  • FIGS. 5 and 6 depict one embodiment and one paradigm example of an adaptive predictor that may be employed in some embodiments of the present application.
  • FIGS. 7 and 8 depict one embodiment and one paradigm example of a rate predictor that may be employed in some embodiments of the present application.
  • components As utilized herein, terms “component,” “system,” “interface,” “controller” and the like are intended to refer to a computer-related entity, either hardware, software (e.g., in execution), and/or firmware. For example, any of these terms can be a process running on a processor, a processor, an object, an executable, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component and/or controller. One or more components/controllers can reside within a process and a component/controller can be localized on one computer and/or distributed between two or more computers.
  • an operating system it is desirable for an operating system to provide a fast and fluid user experience.
  • one area where this aspiration isn't fully realized is the launch time of modern apps.
  • One possible embodiment affects the following—since launching an app tends to be more expensive than switching to a suspended app, preloading an app before it is launched by a user (and possibly placing it in to the suspended state) may tend to improve the perceived startup performance of an app.
  • it may be desirable for the present system to make the right choices when terminating apps—as a way to potentially reduce the instances of expensive fresh app launches.
  • the methods and techniques of predictive pre-launch may be employed in a number of different scenarios.
  • the present system may perform its predictive pre-launch for individual application—e.g., considered one at a time.
  • the present system may consider sets of related applications. For example, the following is a partial listing of examples of user applications and manners in which the present system may employ the techniques of the present application:
  • Location-specific app usage e.g., gathered via GPS/Wi-Fi, user input etc.: tablet is used for work at work, but for kids' games at home.
  • FIG. 1 is one embodiment of a few exemplary environments in which predictive pre-launching may reside.
  • embodiments of the present system may be installed within a computer system 102 .
  • Suitable computer systems may comprise any number of systems—e.g., PCs/desktops 102 a , laptop 102 b , tablets 102 c , or any smart device, smart phone. It may suffice that the system has sufficient processing and memory capabilities to run the present system.
  • Computer systems 102 may further comprise controller 104 which may in turn have one or more processors (e.g., a CPU and/or GPU) and computer memory, as is known in the art.
  • Computer system 102 may further have operating system 106 installed in memory and working to control the lifecycles of various apps that may be activated by users of the computer system.
  • One embodiment of the present application may have installed Predictive Pre-launching 108 module which may work in conjunction with operating system 106 to affect the methods and techniques of the present systems and their various embodiments, as described herein.
  • predictive pre-launching may be installed (in whole or in parts) remotely from any particular computer system.
  • modules of predictive pre-launching may be accessible to computer systems via a server 110 in a client-server model (or any other suitable model).
  • client-server model or any other suitable model.
  • the effects of any one user's predictive pre-launching may follow and/or migrate to any other computer system 112 —which the user may own and/or access.
  • FIG. 2 depicts one possible embodiment of a present system as made in accordance with the principles of the present application.
  • System 200 comprises a number of (possibly optional) modules that may reside in an operating system, running on a processor within a computer system (e.g., smart phone, smart device, tablet, laptop, desktop or the like). In an alternative embodiment, some (or all) of these modules may reside apart from the operating system—but in communication with the operating system of a computer system. It should be appreciated that there are a number of possible implementations of the present system and that the scope of this present application encompasses all such possible implementations and/or embodiments.
  • Pre-launch services module 202 comprises a set of processing modules—e.g., prediction engine 204 , resource monitor 206 , pre-launch policy 208 and pre-launch queue 210 .
  • Prediction engine 204 may comprise a set of rules and/or heuristics that may aid the present system to assess the probability of a particular application may be required and/or desired to be running by a user of the computer system—as described in greater detail herein.
  • Prediction engine may associate a prediction of when any given application may be activated by the user.
  • the prediction associated with the application may comprise the form of any known data structure and/or metadata structure. It may suffice that the prediction may be utilized by the present system to aid in making decisions on which application may be pre-launched—if there is a satisfaction of some suitable set of rules/heuristics for pre-launching. These rules may comprise monitoring and/or testing of available system resources and/or pre-launch policy rules/heuristics, as will be discussed further herein.
  • Resource monitor 206 may assess the utilization of the computer system's resources—e.g., the currently available processing and/or memory resources for the potential pre-launching of applications.
  • Pre-launch policy 208 may inform the present system as to the rules and/or heuristics for when the present system may desirably pre-launch one or more applications.
  • Pre-launch queue 210 may access a set of data and/or metadata regarding applications that may have been pre-launched and/or are desired to be pre-launched.
  • modules may be optional for the purposes of the present application. It may suffice that the present system be capable of determining which applications are “good” candidates for pre-launching—e.g., whether because of the probability of being selected by a user, because of available resources to pre-launch an app, because the rules and/or heuristics have selected a particular app for pre-launching—or any combination of the above factors.
  • servicing 214 may send signals to system 202 that identify apps that have pre-launched.
  • the servicing system 214 may only send notifications of app updates, app installs and requests to pre-launch an app to system 202 .
  • the servicing component may have no knowledge of which apps have pre-launched and thus it may not be able to identify such apps to system 202 .
  • Process Lifetime Manager (PLM) 216 may request prediction data for possible apps to consider for pre-launching.
  • PLM may request prediction data to make memory management or termination decisions.
  • Pre-Launch API 218 may receive signals from system 202 to pre-launch particular apps.
  • the PLM may be responsible for deciding the current app execution state for any app—as well as deciding which apps should remain in memory (suspended) vs. terminated.
  • the prelaunch service receives messages from other components in the system about application installation, servicing and usage to drive its own prelaunch decisions.
  • other system components may request application usage prediction data to drive their own management decisions (e.g., as with PLM and app termination).
  • FIG. 3 depicts one state diagram 300 for an app, as the present system may affect during the lifecycle of the app.
  • an app running and/or available to the computer system may comprise a plurality of process states—e.g., Not Running 302 , Running 304 and/or Suspended 306 .
  • Not Running 302 e.g., Not Running 302
  • Running 304 e.g., a plurality of process states
  • the app may be induced to Running State 304 in a number of different ways.
  • the app may be launched by the user.
  • the app may be pre-launched by the present system, depending upon the data/metadata—and/or the satisfaction of rules/heuristics of the present system that determine whether a given app should be pre-launched.
  • the app When an app is in the Running state 304 , then the app may be placed into the Suspended state 306 by a suitable user of the computer system. In addition, a Running app may be terminated by such a suitable user of the computer system. These transitions may be affected in whole or part by the present system. If an app is in Suspended state 306 , then the app in question may be resumed by a suitable user—or may be terminated, e.g., by resource policy and/or Servicing modules.
  • the present system may allow a terminated app (e.g., in Not Running state 302 ) to be pre-launched in background.
  • this pre-launched, terminated app may be transitioned into the Suspended state 306 and made ready to resume—as the path to Running state 304 .
  • pre-launch may not require that the system support a “suspended” state for applications. Pre-launch is possible for systems that only have Running/Not Running states for apps.
  • throttling may be enabled for the app being activated by pre-launch. If the app was previously terminated by user, it may be activated by pre-launch to its initial state and —in one scenario, a splash screen may appear momentarily when the app is activated. If the app was terminated by PLM, it may be activated by pre-launch to its last saved state with its previous graphical cues intact and/or with its backstack location restored. If the app is already present in the suspended state, pre-launch may ignore it. In some embodiments, when pre-launching an app in the background, it may not be desirable to interfere with user activity and as such, the pre-launched app may be assigned low resource priorities (e.g., CPU, I/O, GPU, memory resources).
  • resource priorities e.g., CPU, I/O, GPU, memory resources
  • an application when an application is pre-launched, it may be notified that this activation is due to a pre-launch—as opposed to user activation.
  • the app may not be visible. For example, pre-launches may occur in the background, not the foreground.
  • the app may be suspended.
  • it may be desirable to allow an application to detect that it is being pre-launched so that, e.g. —the app may alter its behavior, if desired.
  • rules and/or heuristics that inform the present system to pre-launch any particular app.
  • the system may apply the following rules and/or heuristics for substituting typical termination scenarios with possible pre-launch opportunities.
  • TERMINATION SCENARIO PRE-LAUNCH OPERATIONS Restarting the computer system Pre-launch the apps most likely terminates all currently running to be launched after a re-boot. apps. Servicing terminates an app to Pre-launch the app after install updates. update. Process Lifetime Manager (PLM) Prevent PLM from terminating terminates an app to free up an app that is likely to be used. system resources. User manually terminates an Pre-launch the app if it is likely app. to be launched in the near future.
  • PLM Process Lifetime Manager
  • Another termination scenario occurs when a running app crashes.
  • it may be undesirable to pre-launch/relaunch the app if the app is likely to crash once again. This may put the computer system into an application restart loop.
  • rules and/or heuristics may be employed for crashing apps—or in service of these and/or other terminations scenarios.
  • FIG. 4 depicts one paradigm use example of the present systems and methods.
  • User 401 may be using a computer system 402 a (e.g., smart device, tablet, laptop, desktop or the like)—and typically likes to use at least three apps—e.g., travel app 403 a , news app 403 b and 403 c —when logged on to the computer system.
  • apps e.g., travel app 403 a , news app 403 b and 403 c —when logged on to the computer system.
  • These apps may be managed—via the operating system of computer system 402 and in concert with the present system of pre-launching apps—to provide the user with a better user experience, with faster launching apps and/or better utilization of computer system resources.
  • Session module 408 may maintain data and/or metadata on prior sessions usage of the apps (e.g., 403 a , 403 b and 403 c ). Such data/metadata may be stored or uploaded (in the case of remote access) to inform database or storage 414 of such usage. This data/metadata may be accessed by Predictive Pre-launch module 412 .
  • Predictive Pre-launch module 412 may decide to pre-launch the Travel, Mail and News apps into the background—even before the user has commanded the activation of these apps. These pre-launched apps are shown in new Session 406 (which is in IDLE state).
  • the Session 404 may transition to an ACTIVE state from IDLE at this time.
  • the present system it may be possible, if not desirable, to extend the present system from a single computer system to other computer systems that the user may own, use and/or access.
  • the data and/or metadata of user's app usage pattern may be shared with other computer systems (e.g., 402 b and 402 c ) that the user may own and/or access. If these other computer systems have the present system either installed, or may have access via a client-server or other suitable model, then such predictive pre-launching may migrate and follow a user from computer system to computer system.
  • the user may be surprised to learn that frequently-used mail, travel and news apps are faster loading on computer systems 402 b and 402 c.
  • the user may also notice that his News app displays the latest stories substantially instantly on launch, and the “downloading” indicator hardly takes any time on the screen.
  • the present system may identify such apps that need outside data and/or metadata on a regular basis—and actively retrieve such outside data/metadata, depending (perhaps) on the availability of computer resources to retrieve such data, without negatively impacting currently running apps.
  • the same improved user experience may be possible for periodic updates.
  • the user may get a new computer system.
  • the user may download and install apps from an online app store.
  • apps One of the factors contributing to popularity of apps is the ability of developers to offer frequent updates for their apps, fixing bugs and adding new features.
  • the user selects the option to install all updates.
  • the user launches the newly updated apps to try out the new features.
  • the user may see that the updated apps still appear in his currently running apps list and launching them is fast and seamless.
  • a prediction engine may utilize a prediction model (as discussed further below) that may consider an individual application and/or a group of applications that may be activated by the user. Such a model may determine a probability and/or some other measure for when an application may be activated by a user. As mentioned, these models may factor in various data and/or signals—e.g., order and frequency of past application usage, time of day, time of week, at a new application installation—among the other factors discussed herein.
  • Initial prediction data may be seeded from a variety of sources—e.g., usage data collected from a community and/or aggregated data/metadata and application usage data on a machine being upgraded, or a new machine that the user may access. Such predication data may also be preserved across system backups/restores and/or computer system refreshes.
  • This predictor may return a probability of 1.0 for the top 20 most frequently activated apps and 0.0 for all others.
  • This predictor may return a probability of (Total Usage Time for App)/(Total Usage Time for All Apps).
  • This predictor always returns a probability of 0.0.
  • the present system would not make use of any prediction value assigned to apps; but may nonetheless apply desired rules and/or heuristics for the pre-launching of apps.
  • This predictor may identify application usage situations in the past that are similar to—and compare them with—the current situation by considering the current foreground app, the last foreground app and how long the current app has been in usage. Once it has identified these situations, the predictor may return the percentage and/or measure of situations which resulted in the queried event (and/or application being activated) occurring within the prediction window.
  • the adaptive predictor may operate on groupings of application usage periods, referred to as “cases”. As shown in FIG. 6 , one manner of creating cases may be affected by taking groups of (e.g., 3 or any desired number) adjacent application usage periods. It will be appreciated that it is also possible to create cases using other groupings such as current app switch, previous app switch, and any period that falls within the prediction window after the app switch.
  • the predictor may iterate over all of the cases and classify each of them based on their properties. Once the case is classified, the present system may adjust the counts for each class the case matches. Each class may have a count of positive cases and a count of total cases. A case is “positive” if App X is switched to within the case.
  • the present system may determine which classes the current situation matches and assign weights to the classes. These weights could be static or could depend on factors such as the number of total cases in a class and whether the current situation matches the class—e.g., assign weights (such as, 0.4, 0.4, and 0.2). Once weights have been assigned, it may be possible to compute a final probability by taking the weighted sum of (Positive Cases)/(Total Cases) for each class.
  • FIG. 5 gives one embodiment for an “adaptive” prediction engine module as made in accordance with the principles of the present application.
  • Prediction engine module may receive activity data of a given app's lifecycle (e.g., the number of times an app is activated by a user, the time of day of activation, length of time of activation, and the like). These uses of an app may form a set of “cases” of use of an app. Each case may be assessed a calculated, predicted and/or estimated probability of future and/or potential activation.
  • Adaptive prediction may start at 502 and if the app being considered by the prediction engine has never been seen before (at 504 ), then the probability of the app needing pre-launched may be given an initial value—e.g., zero (at 506 ) and the process may end at 508 .
  • Adaptive prediction may classify this current case (at 512 ) and update the count for this case (at 514 ).
  • the engine may consider whether there are any further additional cases to consider at this time (at 516 ) and, if so, the engine may increment the current case appropriately (at 518 ). When all current cases have been considered, then the engine may classify the current situation (AT 522 ).
  • the “current situation” may comprise the current app, the previous app and how long the system has been in the current app. It is possible to extend this concept from the last 2-3 apps to the last N apps.
  • the adaptive predictor may consider previous cases similar to the current situation and looks at which app has been used after those cases.
  • the “adaptiveness” may come from the fact that the algorithm isn't rigid about finding exactly the same situation in the past—e.g., if there is not a sufficient number of examples in the past similar to the current situation, the algorithm may relax the definition of the “current situation” and make it less specific by considering N ⁇ 1 most recent apps and/or by generalizing how much time is spent in the current app.
  • the engine may then calculate the probability of potential activation (at 524 ), based on desired rules and heuristics.
  • rules and/or heuristics might comprise: a time weighted average of the amount of time the app is running, the time of day in which the app is activated and/or running or the like.
  • FIG. 6 depicts one exemplary set of data/metadata that may be maintained by an adaptive prediction module, as depicted in FIG. 5 .
  • This data/metadata may be stored as appropriate, either within the computer system or external to the computer system.
  • this example considers the data of four apps (i.e., A, B, C and D) over the course of a desired period of time. It will be appreciated that the period of time may be varied according to the desire of the present system—e.g. a day, a week, etc.
  • Case1 a number of cases (Case1, . . . , Case 9) that are considered by the present system. These cases may represent periods of overlapping time (e.g., Case1 and Case2, etc.)—or they may be non-overlapping, as desired. Each Case may commence upon some signal—e.g., the activation and/or use of an app (e.g., that moves an app from suspended to running). In this example, it may be seen that last Case is the current situation (and as shown in hatching) and Cases1-9 represent historic entries.
  • each case may be classified into any number of Classes.
  • Each Class may be pre-defined as a use case and/or model of the user (e.g., which may vary depending on whether the user is at work, in what activities the user is engaged, or the like).
  • the adaptive predictive engine may continue to process these cases—e.g., to provide predictions for the Prediction Window (which is shown as a desired time period past the current time).
  • This Classification data may be used to perform the probability calculation for possible weights. As may be seen, the final probabilities may be calculated and/or estimated as possibly pertaining to the desired Prediction Window.
  • Pre-launch Policy as a part of the rules and/or heuristics to determine whether to pre-launch a given app or not.
  • one rate predictor may operate on app switches. Such a rate predictor may iterate over and/or consider all app switches in the history and maintain a variety of information—e.g., Rate Counts and Durations. Rate counts and durations may be divided into classes, for example it is possible to keep separate counts and durations for different times of day.
  • the predictor may first decay all of the counts and durations. This may be done by applying an exponential decay based on the time since the last app switch; however other possible decay functions do exist.
  • the present system may classify the app switch and increment the corresponding rate count.
  • the present system may then classify the time leading up to this app switch, possibly splitting the time period between different classes and add the times to the corresponding durations. For example, if the classes are Before Noon and Afternoon, the current time is 12:30 and the last app switch was at 11:00, the present system may add 1 hour to Before Noon and 30 minutes to Afternoon.
  • the present system may classify the current situation.
  • the present system may then assign weights to each class and compute the weighted sum—e.g., of (Rate Count)/(Duration) for each class. This gives the present system a final rate which may then be converted into a probability.
  • an event of interest say, e.g., the user switching to the browser application
  • the predictor may employ:
  • ⁇ ⁇ ( t ) ⁇ number ⁇ ⁇ of ⁇ ⁇ events ⁇ ⁇ observed within ⁇ ⁇ 1 ⁇ ⁇ min ⁇ ⁇ of ⁇ ⁇ login duration ⁇ ⁇ the ⁇ ⁇ user ⁇ ⁇ observed within ⁇ ⁇ 1 ⁇ ⁇ min ⁇ ⁇ of ⁇ ⁇ login if ⁇ ⁇ t ⁇ ⁇ is ⁇ ⁇ within ⁇ ⁇ 1 ⁇ ⁇ min ⁇ ⁇ of ⁇ ⁇ login number ⁇ ⁇ of ⁇ ⁇ events ⁇ ⁇ observed after ⁇ ⁇ 1 ⁇ ⁇ min ⁇ ⁇ of ⁇ ⁇ login duration ⁇ ⁇ the ⁇ ⁇ user ⁇ ⁇ was ⁇ ⁇ observed after ⁇ ⁇ 1 ⁇ ⁇ min ⁇ ⁇ of ⁇ ⁇ login if ⁇ ⁇ t ⁇ ⁇ is ⁇ ⁇ after ⁇ ⁇ 1 ⁇ ⁇ min ⁇ ⁇ of ⁇ ⁇ login
  • n c (t) the number of times the event of interest is observed in each context c (e.g. on Sunday, Monday, . . . , Saturday), which may be denoted by n c (t), and the total duration the user in each context c is observed, which may be denoted by d c (t), and use:
  • I c (t) is a function that is equal to 1 when the context is 1 and zero otherwise, it is possible to use:
  • One option may be exponential weighting, where behavior at a time ⁇ is given weight
  • FIG. 8 depicts one exemplary set of data regarding four apps (A, B, C and D) that shows the switches between the various apps over time.
  • apps A, B, C and D
  • FIG. 8 depicts one exemplary set of data regarding four apps (A, B, C and D) that shows the switches between the various apps over time.
  • App A the rate curve labeled “App A” in FIG. 8 . It starts with a rate count of 1 at time 00:00—as App A is activated and running at that time. The slope of that curve is less than one—showing that a decay rate is being applied over time.
  • Such a decay rate may depending on heuristics (e.g., the longer time between switches for an app, the less “popular” the app is for a user). It will be appreciated that—even though the decay rate is shown as a linear decline, there may be more complicated decay rates and/or functions to reflect a different model and/or heuristic.
  • App A is activated again and the rate count is a step up from where it was.
  • the final value for App A could be 2 or less, depending on decay rates being applied. Similar step ups occur for App A at times 10:46 and 13:48—and decay rates are thereafter applied.
  • rate curves may then be applied by the pre-launch module according to some rules and/or heuristics—e.g., certain apps have a switch rate over some threshold may be pre-launched.
  • pre-launch policy module may determine a variety of actions—e.g. (1) what triggers prediction to be run; (2) determining the apps which should be activated through pre-launch; and/or (3) how the pre-launch behaves with changing power states and system resource usage of the computer system.
  • the present system may adopt: (1) a simple pre-launch policy and (2) an aggressive pre-launch policy.
  • pre-launch policy it may be desirable to pre-launch all apps that have a probability of being launched within the pre-launch prediction window above a desired probability threshold and/or bar. It may be desirable to pre-launch as many apps as can fit in memory without triggering a PLM policy and to perform pre-launches in decreasing order of probability. For one example, it may be possible to pre-launch as many apps as can fit it memory and avoid pushing the system over the threshold where it might start terminating previously running applications.
  • pre-launch policy module may launch such apps until memory is full.
  • one aggressive prelaunch policy would pre-launch of an app may occur if its usage probability is higher than any of the currently running/suspended apps.
  • the system may keep the apps with the highest probabilities running/suspended.
  • the prediction engine and pre-launch policy modules may not always be running and may control their own scheduling. In one embodiment, these modules may be run at desired intervals. For example, if the computer system is not in connected standby, prediction engine module may be run at a fixed interval (e.g., at 15 minutes intervals or the like). This interval may vary or be reduced, if prediction is not considered to be an inexpensive process.
  • the prelaunch module may be explicitly triggered during various points such as user logon, resume from sleep/hibernate, etc.
  • Quiet mode may be a configurable period of time (e.g., typically in the middle of the night) where no background tasks are allowed to run in order to conserve battery life. It may be desirable not to run prediction when the computer system is in Quiet Mode.
  • One instance of throttling may be in the context of GPU throttling. In this case, it is possible to model GPU throttling in the following manner.
  • the graphics kernel maintains an “interference counter” per process. This counts the number of times a GPU packet/command from a foreground process had to wait because the GPU was busy processing a command from the target process. Alternatively, it may be possible to keep tracking of how much GPU time is taken up by this process. In addition, the graphics kernel also maintains an overall GPU utilization metric that can be queried from user mode.
  • the present system When the present system decides to pre-launch an app, it may first wait for the overall GPU utilization to quiet down (e.g., in a similar way, like waiting for the CPU and disk to quiet down as well). During pre-launch, the present system may frequently query the interference counter for the pre-launching app. Alternatively, instead of polling, it may be possible to get a notification when the interference counter reaches a certain value.
  • the app being pre-launched may be temporarily “paused” which means its threads are suspended.
  • the app remains in the paused state until either the overall GPU utilization comes back down or until it stays in the paused state for a threshold amount (e.g., a few seconds—or some desired threshold to avoid network connection failures).
  • the app When it leaves the paused state, the app continues the pre-launch where it left off. If there is GPU contention, the app may toggle between the active and paused states. Eventually, it will either complete its pre-launch or the present system may decide against pre-launch if the app's aggregate time in the paused state went beyond some threshold (e.g., there's too much GPU contention). In such a case, the app may be suspended.
  • GPU throttling may be achieved by assigning low priority to background GPU packets such that foreground packets may preempt—as may be done similarly for CPU, I/O, and memory.
  • these apps may be added to a pre-launch queue.
  • prediction determines that an app should be added to the pre-launch queue. This determination may be based on the probability threshold returned by the prediction algorithm; and/or
  • a system component e.g. servicing requests a pre-launch.
  • apps in the pre-launch queue may be serialized for pre-launch.
  • system resources e.g., memory utilization, CPU utilization, GPU utilization battery state of charge, I/O utilization
  • rules and/or heuristics may be applied that factor into consideration available system resources and the potential impact to the user experience should pre-launch occur at a time of low available system resources.
  • threshold testing e.g., if a given system resource or combination of system resources are below a given threshold of availability to the computer system, then pre-launching may be suspended or dynamically curtailed, until there is a change in the availability of certain resources.
  • Such rules/heuristics may be modified by a high prediction of an application activation by the user.
  • any threshold depending on system resource availability may be dynamically changed—and imminent activations may be pre-launched on a lower availability of system resources.
  • the app may be taken out of the queue (e.g., blacklisting the application), and may be added again in future based on prediction or external request.
  • these metrics may have a threshold value set and, if system performance falls below a desired threshold, then certain actions may be taken—e.g., dynamically changing the preference for pre-launching apps or the like.
  • a pleasing “first run” experience for the user—i.e., fast performance upon startup of a new computer system.
  • inbox app data from some source (e.g. application usage telemetry, SQM or the like); and/or
  • Accuracy is a measurement of how accurate the policy, predictor pair was, the higher this value the less waste.
  • Coverage is a measurement of how much benefit was provided.
  • accuracy may be defined as the percentage of pre-launches which are used,—e.g., that is the app is switched to before the pre-launched instance is terminated.
  • Coverage may be defined as the percentage decrease in application switches that are launches relative to the baseline. For example, it is possible to define:
  • present systems may employ a set of prediction models which may tend to give the probability of a user using an application (e.g., prediction data). Predictions may be based on various signals including:
  • Application usage data on a computer system being upgraded or from an older (possibly different) computer system This may be useful when a user is accessing a new and/or upgraded computer system; but may still expect to experience the fast launching of application afforded by many embodiments of the present application.
  • present systems may preserve this prediction data across many types of events, including backup/restore events and computer system refresh.
  • the pre-launch service may look at other metrics such as application “size” to determine which one to prelaunch first. So, the system may implement policies—e.g., fitting into memory the most likely apps that may get used.
  • Pre-launch component requests pre-launch for all apps in the queue
  • Predictor is triggered at a regular interval
  • Pre-launch component requests pre-launch for all apps in the queue
  • predictor At a given interval before the computer system is expected to come out of CS, predictor is triggered;
  • Pre-launch component requests pre-launch for all apps in the queue
  • Pre-launch component requests pre-launch for all apps in the queue
  • Predictor is triggered at a regular interval
  • Pre-launch component requests pre-launch for all apps in the queue
  • the app is excluded from pre-launch.
  • the app may be removed from any “ignore” list, when the app is upgraded and/or reinstalled or when the system gets a notice that the user is successfully using the app.
  • PLM requests a cost value for currently running apps from the service
  • the terms (including a reference to a “means”) used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., a functional equivalent), even though not structurally equivalent to the disclosed structure, which performs the function in the herein illustrated exemplary aspects of the claimed subject matter.
  • the innovation includes a system as well as a computer-readable medium having computer-executable instructions for performing the acts and/or events of the various methods of the claimed subject matter.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

Systems and methods of pre-launching applications in a computer system, said applications being likely to be activated by a user from a terminated and/or suspended process state, are disclosed. The pre-launching of an application may be based on the assessed probability of the application being activated—as well as the level of availability of system resources to affect such pre-launching. Applications may be pre-launched based on these and other conditions/considerations, designed to improve the user's experience of a quick launch of applications in the background. Several prediction models are presented to provide a good estimate of the likelihood of an application being activated by a user. Such prediction models may comprise an adaptive predictor (based on past application usage situations) and/or a switch rate predictor (based on historic data of an application being switched and, possibly, having a decay rate applied to such switch rate measure).

Description

    BACKGROUND
  • Launching applications is an expensive operation due to the resources used during initialization. This problem may be further aggravated with the popularity of low-cost devices which may tend to have more hardware constraints than traditional desktops. In the past, solutions like caching have been used to speed up application launches. While these solutions improve the launch time of applications, they may not be sufficient to give users adequate response or desired performance and may be less effective when cache space is limited.
  • SUMMARY
  • The following presents a simplified summary of the innovation in order to provide a basic understanding of some aspects described herein. This summary is not an extensive overview of the claimed subject matter. It is intended to neither identify key or critical elements of the claimed subject matter nor delineate the scope of the subject innovation. Its sole purpose is to present some concepts of the claimed subject matter in a simplified form as a prelude to the more detailed description that is presented later.
  • Systems and methods of pre-launching applications in a computer system, said applications being likely to be activated by a user from a terminated and/or suspended process state, are disclosed. The pre-launching of an application may be based on the assessed probability of the application being activated—as well as the level of availability of system resources to affect such pre-launching. Applications may be pre-launched based on these and other conditions/considerations, designed to improve the user's experience of a quick launch of applications in the background. Several prediction models are presented to provide a good estimate of the likelihood of an application being activated by a user. Such prediction models may comprise an adaptive predictor (based on past application usage situations) and/or a switch rate predictor (based on historic data of an application being switched and, possibly, having a decay rate applied to such switch rate measure).
  • In one embodiment, a method for pre-launching applications within a computer system is disclosed. The method may comprise the steps of: for a given set of applications, said applications capable of being activated by a user of the computer system, associating a prediction of when said applications may be activated by said user with said application; monitoring system resources of said computer system; applying a set of pre-launch rules to said set of applications, said pre-launch rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said predictions associated with said applications; and pre-launching one said application, based upon the satisfaction of said set of pre-launch rules.
  • In another embodiment, a system for pre-launching applications on a computer system is disclosed. The system may comprise: a prediction engine, said prediction engine capable of providing a prediction measure of likelihood that a given application may be activated by a user of said computer system; a resource monitor, said resource monitor capable of providing a measure of system resource utilization of said computer system; a pre-launch policy module, said pre-launch policy module capable of applying a set of pre-launch policy rules, said pre-launch policy rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said prediction measures associated with said applications; and a pre-launch queue module, said pre-launch queue module capable of maintaining a list of applications for pre-launching in said computer system, said list of applications depending upon the satisfaction of said pre-launch policy rules.
  • Other features and aspects of the present system are presented below in the Detailed Description when read in connection with the drawings presented within this application.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Exemplary embodiments are illustrated in referenced figures of the drawings. It is intended that the embodiments and figures disclosed herein are to be considered illustrative rather than restrictive.
  • FIG. 1 depicts a number of exemplary environments in which present system may reside in made in accordance with the principles of the present application.
  • FIG. 2 shows one embodiment of the present system as made in accordance with the principles of the present application.
  • FIG. 3 is one embodiment of a state diagram for applications in which predictive pre-launching is possible.
  • FIG. 4 depicts a paradigm example to illustrate the use of the present systems and methods.
  • FIGS. 5 and 6 depict one embodiment and one paradigm example of an adaptive predictor that may be employed in some embodiments of the present application.
  • FIGS. 7 and 8 depict one embodiment and one paradigm example of a rate predictor that may be employed in some embodiments of the present application.
  • DETAILED DESCRIPTION
  • As utilized herein, terms “component,” “system,” “interface,” “controller” and the like are intended to refer to a computer-related entity, either hardware, software (e.g., in execution), and/or firmware. For example, any of these terms can be a process running on a processor, a processor, an object, an executable, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component and/or controller. One or more components/controllers can reside within a process and a component/controller can be localized on one computer and/or distributed between two or more computers.
  • The claimed subject matter is described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject innovation. It may be evident, however, that the claimed subject matter may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject innovation.
  • Overview of Predictive Pre-Launch
  • In many embodiments, it is desirable for an operating system to provide a fast and fluid user experience. As mentioned, one area where this aspiration isn't fully realized is the launch time of modern apps. One possible embodiment affects the following—since launching an app tends to be more expensive than switching to a suspended app, preloading an app before it is launched by a user (and possibly placing it in to the suspended state) may tend to improve the perceived startup performance of an app. In another embodiment, it may be desirable for the present system to make the right choices when terminating apps—as a way to potentially reduce the instances of expensive fresh app launches. In addition, it may be desirable to have these features working transparently to the user—e.g., the user may merely notice the improved performance without any (or many) implementation details.
  • In considering the various embodiments of predictive pre-launch herein, it should be appreciated that the methods and techniques of predictive pre-launch may be employed in a number of different scenarios. In some scenarios, the present system may perform its predictive pre-launch for individual application—e.g., considered one at a time. In other situations, the present system may consider sets of related applications. For example, the following is a partial listing of examples of user applications and manners in which the present system may employ the techniques of the present application:
  • (1) Groups of apps that are typically used together regardless of specific order—e.g., office applications (e.g., word processor, presentation software, spreadsheet software etc.).
  • (2) Apps that are typically used in a certain sequence: news app followed by the browser, email app followed by the photo editor or pdf viewer, etc.
  • (3) Apps that are typically used at certain times-of-day or days of week: checking news, email, weather, traffic in the morning before going to work, checking email/IM after coming back from meetings/lunch (meetings are generally repetitive from week to week), checking for traffic before leaving work at 6 pm, checking for weekend weather before leaving work on Friday, checking news/sports at home in the evenings, checking user's calendars etc.
  • (4) Apps that are used at regular intervals: checking for news/stocks every day during the lunch hour.
  • (5) Location-specific app usage (e.g., gathered via GPS/Wi-Fi, user input etc.): tablet is used for work at work, but for kids' games at home.
  • (6) Apps used in response to certain events in the computer: Using the email app and the IM app after logon or after waking the computer from sleep.
  • Exemplary Environment
  • FIG. 1 is one embodiment of a few exemplary environments in which predictive pre-launching may reside. As may be seen in FIG. 1, embodiments of the present system may be installed within a computer system 102. Suitable computer systems may comprise any number of systems—e.g., PCs/desktops 102 a, laptop 102 b, tablets 102 c, or any smart device, smart phone. It may suffice that the system has sufficient processing and memory capabilities to run the present system.
  • Computer systems 102 may further comprise controller 104 which may in turn have one or more processors (e.g., a CPU and/or GPU) and computer memory, as is known in the art. Computer system 102 may further have operating system 106 installed in memory and working to control the lifecycles of various apps that may be activated by users of the computer system.
  • One embodiment of the present application may have installed Predictive Pre-launching 108 module which may work in conjunction with operating system 106 to affect the methods and techniques of the present systems and their various embodiments, as described herein.
  • In other embodiments of the present system (and as will be discussed in greater detail below), predictive pre-launching may be installed (in whole or in parts) remotely from any particular computer system. As shown in FIG. 1, modules of predictive pre-launching may be accessible to computer systems via a server 110 in a client-server model (or any other suitable model). As will be discussed below, if certain data and/or metadata concerning a user's usage patterns of apps may be shared remotely, then the effects of any one user's predictive pre-launching may follow and/or migrate to any other computer system 112—which the user may own and/or access.
  • One Embodiment
  • FIG. 2 depicts one possible embodiment of a present system as made in accordance with the principles of the present application.
  • System 200 comprises a number of (possibly optional) modules that may reside in an operating system, running on a processor within a computer system (e.g., smart phone, smart device, tablet, laptop, desktop or the like). In an alternative embodiment, some (or all) of these modules may reside apart from the operating system—but in communication with the operating system of a computer system. It should be appreciated that there are a number of possible implementations of the present system and that the scope of this present application encompasses all such possible implementations and/or embodiments.
  • Pre-launch services module 202 comprises a set of processing modules—e.g., prediction engine 204, resource monitor 206, pre-launch policy 208 and pre-launch queue 210. Prediction engine 204 may comprise a set of rules and/or heuristics that may aid the present system to assess the probability of a particular application may be required and/or desired to be running by a user of the computer system—as described in greater detail herein. Prediction engine may associate a prediction of when any given application may be activated by the user.
  • It should be appreciated that the prediction associated with the application may comprise the form of any known data structure and/or metadata structure. It may suffice that the prediction may be utilized by the present system to aid in making decisions on which application may be pre-launched—if there is a satisfaction of some suitable set of rules/heuristics for pre-launching. These rules may comprise monitoring and/or testing of available system resources and/or pre-launch policy rules/heuristics, as will be discussed further herein.
  • Resource monitor 206 may assess the utilization of the computer system's resources—e.g., the currently available processing and/or memory resources for the potential pre-launching of applications. Pre-launch policy 208 may inform the present system as to the rules and/or heuristics for when the present system may desirably pre-launch one or more applications. Pre-launch queue 210 may access a set of data and/or metadata regarding applications that may have been pre-launched and/or are desired to be pre-launched.
  • It will be appreciated that one or more of these modules may be optional for the purposes of the present application. It may suffice that the present system be capable of determining which applications are “good” candidates for pre-launching—e.g., whether because of the probability of being selected by a user, because of available resources to pre-launch an app, because the rules and/or heuristics have selected a particular app for pre-launching—or any combination of the above factors.
  • These modules may be accessed via a set of external interfaces and/or APIs 212—e.g., that allow other modules to access the present system. For example, servicing 214 may send signals to system 202 that identify apps that have pre-launched. In one embodiment, the servicing system 214 may only send notifications of app updates, app installs and requests to pre-launch an app to system 202. The servicing component may have no knowledge of which apps have pre-launched and thus it may not be able to identify such apps to system 202. Process Lifetime Manager (PLM) 216 may request prediction data for possible apps to consider for pre-launching. In addition, PLM may request prediction data to make memory management or termination decisions. Pre-Launch API 218 may receive signals from system 202 to pre-launch particular apps. In one embodiment, the PLM may be responsible for deciding the current app execution state for any app—as well as deciding which apps should remain in memory (suspended) vs. terminated.
  • In another embodiment, it may be possible that the prelaunch service receives messages from other components in the system about application installation, servicing and usage to drive its own prelaunch decisions. In addition, other system components may request application usage prediction data to drive their own management decisions (e.g., as with PLM and app termination).
  • FIG. 3 depicts one state diagram 300 for an app, as the present system may affect during the lifecycle of the app. In general, an app running and/or available to the computer system may comprise a plurality of process states—e.g., Not Running 302, Running 304 and/or Suspended 306. As may be seen, if an app is in Not Running state 302, then the app may be induced to Running State 304 in a number of different ways. For example, the app may be launched by the user. In another example, the app may be pre-launched by the present system, depending upon the data/metadata—and/or the satisfaction of rules/heuristics of the present system that determine whether a given app should be pre-launched.
  • When an app is in the Running state 304, then the app may be placed into the Suspended state 306 by a suitable user of the computer system. In addition, a Running app may be terminated by such a suitable user of the computer system. These transitions may be affected in whole or part by the present system. If an app is in Suspended state 306, then the app in question may be resumed by a suitable user—or may be terminated, e.g., by resource policy and/or Servicing modules.
  • As may be seen, the present system may allow a terminated app (e.g., in Not Running state 302) to be pre-launched in background. In one embodiment, this pre-launched, terminated app may be transitioned into the Suspended state 306 and made ready to resume—as the path to Running state 304.
  • It should be appreciated that for the purposes of the present application, that pre-launch may not require that the system support a “suspended” state for applications. Pre-launch is possible for systems that only have Running/Not Running states for apps.
  • In one embodiment, throttling may be enabled for the app being activated by pre-launch. If the app was previously terminated by user, it may be activated by pre-launch to its initial state and —in one scenario, a splash screen may appear momentarily when the app is activated. If the app was terminated by PLM, it may be activated by pre-launch to its last saved state with its previous graphical cues intact and/or with its backstack location restored. If the app is already present in the suspended state, pre-launch may ignore it. In some embodiments, when pre-launching an app in the background, it may not be desirable to interfere with user activity and as such, the pre-launched app may be assigned low resource priorities (e.g., CPU, I/O, GPU, memory resources).
  • In one embodiment, when an application is pre-launched, it may be notified that this activation is due to a pre-launch—as opposed to user activation. During pre-launch, the app may not be visible. For example, pre-launches may occur in the background, not the foreground. In addition, for a fixed period of time after the pre-launch occurs, the app may be suspended. In addition, it may be desirable to allow an application to detect that it is being pre-launched so that, e.g. —the app may alter its behavior, if desired.
  • New App Lifecycle Embodiment and Model
  • As mentioned, there may be rules and/or heuristics that inform the present system to pre-launch any particular app. In one embodiment, it is possible to introduce a new app lifecycle model for modern apps. For example, as opposed to terminating an app and later re-launching the app, it may be desirable to apply rules and/or heuristics when a particular app should be suspended and resumed after the first launch. In one embodiment, the system may apply the following rules and/or heuristics for substituting typical termination scenarios with possible pre-launch opportunities.
  • TERMINATION SCENARIO PRE-LAUNCH OPERATIONS
    Restarting the computer system Pre-launch the apps most likely
    terminates all currently running to be launched after a re-boot.
    apps.
    Servicing terminates an app to Pre-launch the app after
    install updates. update.
    Process Lifetime Manager (PLM) Prevent PLM from terminating
    terminates an app to free up an app that is likely to be used.
    system resources.
    User manually terminates an Pre-launch the app if it is likely
    app. to be launched in the near
    future.
  • Another termination scenario occurs when a running app crashes. In this case, there may be many possible alternatives to consider. For example, it may be undesirable to pre-launch/relaunch the app, if the app is likely to crash once again. This may put the computer system into an application restart loop. In such cases, it may be possible to: (1) pre-launch an app that crashed when the user was actively using it and/or (2) exclude an app which crashes on startup from pre-launch. It will be appreciated that other rules and/or heuristics may be employed for crashing apps—or in service of these and/or other terminations scenarios.
  • One Paradigm Use Example
  • In order to gain a better appreciation for the present systems and methods, FIG. 4 depicts one paradigm use example of the present systems and methods. User 401 may be using a computer system 402 a (e.g., smart device, tablet, laptop, desktop or the like)—and typically likes to use at least three apps—e.g., travel app 403 a, news app 403 b and 403 c—when logged on to the computer system.
  • These apps may be managed—via the operating system of computer system 402 and in concert with the present system of pre-launching apps—to provide the user with a better user experience, with faster launching apps and/or better utilization of computer system resources.
  • Session module 408 may maintain data and/or metadata on prior sessions usage of the apps (e.g., 403 a, 403 b and 403 c). Such data/metadata may be stored or uploaded (in the case of remote access) to inform database or storage 414 of such usage. This data/metadata may be accessed by Predictive Pre-launch module 412.
  • As depicted in FIG. 4, at a first time, there may be a New Session 410 initiated (e.g., perhaps on computer system start up by the user or otherwise). In such a case, perhaps there are no running apps at that time. Predictive Pre-launch module 412 (e.g., in consulting with user's usage data and the set of rules and heuristics that it employs to decide pre-launch apps) may decide to pre-launch the Travel, Mail and News apps into the background—even before the user has commanded the activation of these apps. These pre-launched apps are shown in new Session 406 (which is in IDLE state).
  • After a while, perhaps the user may activate the Mail app (which may transition to Running from Suspended in the background). The Session 404 then may transition to an ACTIVE state from IDLE at this time.
  • In other embodiments of the present system, it may be possible, if not desirable, to extend the present system from a single computer system to other computer systems that the user may own, use and/or access. For example, in another embodiment, the data and/or metadata of user's app usage pattern may be shared with other computer systems (e.g., 402 b and 402 c) that the user may own and/or access. If these other computer systems have the present system either installed, or may have access via a client-server or other suitable model, then such predictive pre-launching may migrate and follow a user from computer system to computer system.
  • For example, as the user accesses and uses the computer system 402 a, the user may be surprised to learn that frequently-used mail, travel and news apps are faster loading on computer systems 402 b and 402 c.
  • In addition, for apps that need to access data outside of his computer system—e.g., his News app, which needs to update content, typically via the Internet or other remote data sources, the user may also notice that his News app displays the latest stories substantially instantly on launch, and the “downloading” indicator hardly takes any time on the screen. In one embodiment, the present system may identify such apps that need outside data and/or metadata on a regular basis—and actively retrieve such outside data/metadata, depending (perhaps) on the availability of computer resources to retrieve such data, without negatively impacting currently running apps.
  • In another embodiment, the same improved user experience may be possible for periodic updates. For example, the user may get a new computer system. The user may download and install apps from an online app store. One of the factors contributing to popularity of apps is the ability of developers to offer frequent updates for their apps, fixing bugs and adding new features. Whenever the user sees a notification for updates at the online app store, the user selects the option to install all updates. As the updates complete, the user launches the newly updated apps to try out the new features. The user may see that the updated apps still appear in his currently running apps list and launching them is fast and seamless.
  • Embodiments of Prediction Engines
  • There are many different possible embodiments for a suitable prediction engine. In one embodiment, a prediction engine may utilize a prediction model (as discussed further below) that may consider an individual application and/or a group of applications that may be activated by the user. Such a model may determine a probability and/or some other measure for when an application may be activated by a user. As mentioned, these models may factor in various data and/or signals—e.g., order and frequency of past application usage, time of day, time of week, at a new application installation—among the other factors discussed herein. Initial prediction data may be seeded from a variety of sources—e.g., usage data collected from a community and/or aggregated data/metadata and application usage data on a machine being upgraded, or a new machine that the user may access. Such predication data may also be preserved across system backups/restores and/or computer system refreshes.
  • For example, the following is a set of possible Predictors for the purposes of the present application:
  • (1) Most Common Predictor
  • This predictor may return a probability of 1.0 for the top 20 most frequently activated apps and 0.0 for all others.
  • (2) Most Used Predictor
  • This predictor may return a probability of (Total Usage Time for App)/(Total Usage Time for All Apps).
  • (3) Null Predictor
  • This predictor always returns a probability of 0.0. In this case, the present system would not make use of any prediction value assigned to apps; but may nonetheless apply desired rules and/or heuristics for the pre-launching of apps.
  • (4) Adaptive Predictor
  • This predictor may identify application usage situations in the past that are similar to—and compare them with—the current situation by considering the current foreground app, the last foreground app and how long the current app has been in usage. Once it has identified these situations, the predictor may return the percentage and/or measure of situations which resulted in the queried event (and/or application being activated) occurring within the prediction window.
  • In reference to FIGS. 5 and 6 (and in many embodiments), the adaptive predictor may operate on groupings of application usage periods, referred to as “cases”. As shown in FIG. 6, one manner of creating cases may be affected by taking groups of (e.g., 3 or any desired number) adjacent application usage periods. It will be appreciated that it is also possible to create cases using other groupings such as current app switch, previous app switch, and any period that falls within the prediction window after the app switch.
  • To determine the probability of “App X” being switched to in the next prediction window, the predictor may iterate over all of the cases and classify each of them based on their properties. Once the case is classified, the present system may adjust the counts for each class the case matches. Each class may have a count of positive cases and a count of total cases. A case is “positive” if App X is switched to within the case.
  • Once such cases have been classified and counts updated, the present system may determine which classes the current situation matches and assign weights to the classes. These weights could be static or could depend on factors such as the number of total cases in a class and whether the current situation matches the class—e.g., assign weights (such as, 0.4, 0.4, and 0.2). Once weights have been assigned, it may be possible to compute a final probability by taking the weighted sum of (Positive Cases)/(Total Cases) for each class.
  • FIG. 5 gives one embodiment for an “adaptive” prediction engine module as made in accordance with the principles of the present application. Prediction engine module may receive activity data of a given app's lifecycle (e.g., the number of times an app is activated by a user, the time of day of activation, length of time of activation, and the like). These uses of an app may form a set of “cases” of use of an app. Each case may be assessed a calculated, predicted and/or estimated probability of future and/or potential activation.
  • Adaptive prediction may start at 502 and if the app being considered by the prediction engine has never been seen before (at 504), then the probability of the app needing pre-launched may be given an initial value—e.g., zero (at 506) and the process may end at 508.
  • Otherwise, the app has been seen and/or considered before. This occurrence may be set as the most recent case (at 510) of this app. Adaptive prediction may classify this current case (at 512) and update the count for this case (at 514). The engine may consider whether there are any further additional cases to consider at this time (at 516) and, if so, the engine may increment the current case appropriately (at 518). When all current cases have been considered, then the engine may classify the current situation (AT 522).
  • In some embodiments, the “current situation” may comprise the current app, the previous app and how long the system has been in the current app. It is possible to extend this concept from the last 2-3 apps to the last N apps. When calculating probability, the adaptive predictor may consider previous cases similar to the current situation and looks at which app has been used after those cases. In one embodiment, the “adaptiveness” may come from the fact that the algorithm isn't rigid about finding exactly the same situation in the past—e.g., if there is not a sufficient number of examples in the past similar to the current situation, the algorithm may relax the definition of the “current situation” and make it less specific by considering N−1 most recent apps and/or by generalizing how much time is spent in the current app.
  • When the data has been so classified and/or processed, the engine may then calculate the probability of potential activation (at 524), based on desired rules and heuristics. Such rules and/or heuristics might comprise: a time weighted average of the amount of time the app is running, the time of day in which the app is activated and/or running or the like.
  • FIG. 6 depicts one exemplary set of data/metadata that may be maintained by an adaptive prediction module, as depicted in FIG. 5. This data/metadata may be stored as appropriate, either within the computer system or external to the computer system. As may be seen, this example considers the data of four apps (i.e., A, B, C and D) over the course of a desired period of time. It will be appreciated that the period of time may be varied according to the desire of the present system—e.g. a day, a week, etc.
  • In this example, from time=00:00 until 14:20 (the Current Time of the example), there are a number of cases (Case1, . . . , Case 9) that are considered by the present system. These cases may represent periods of overlapping time (e.g., Case1 and Case2, etc.)—or they may be non-overlapping, as desired. Each Case may commence upon some signal—e.g., the activation and/or use of an app (e.g., that moves an app from suspended to running). In this example, it may be seen that last Case is the current situation (and as shown in hatching) and Cases1-9 represent historic entries.
  • As these Cases are processed, each case may be classified into any number of Classes. Each Class may be pre-defined as a use case and/or model of the user (e.g., which may vary depending on whether the user is at work, in what activities the user is engaged, or the like). The adaptive predictive engine may continue to process these cases—e.g., to provide predictions for the Prediction Window (which is shown as a desired time period past the current time).
  • This Classification data may be used to perform the probability calculation for possible weights. As may be seen, the final probabilities may be calculated and/or estimated as possibly pertaining to the desired Prediction Window.
  • Once these probabilities have been set, they may be utilized by other modules of the present system—e.g., Pre-launch Policy—as a part of the rules and/or heuristics to determine whether to pre-launch a given app or not.
  • (5) Switch Rate Predictor
  • In this embodiment, it may be possible to provide a model based on individual and/or community data that uses possibly generic attributes like switch frequency and time in the app to make its predictions.
  • In reference to FIGS. 7 and 8, one rate predictor may operate on app switches. Such a rate predictor may iterate over and/or consider all app switches in the history and maintain a variety of information—e.g., Rate Counts and Durations. Rate counts and durations may be divided into classes, for example it is possible to keep separate counts and durations for different times of day.
  • In one embodiment, for every app switch, the predictor may first decay all of the counts and durations. This may be done by applying an exponential decay based on the time since the last app switch; however other possible decay functions do exist.
  • Once the decays have been applied, the present system may classify the app switch and increment the corresponding rate count. The present system may then classify the time leading up to this app switch, possibly splitting the time period between different classes and add the times to the corresponding durations. For example, if the classes are Before Noon and Afternoon, the current time is 12:30 and the last app switch was at 11:00, the present system may add 1 hour to Before Noon and 30 minutes to Afternoon.
  • Once the present system has processed the application switches, the present system may classify the current situation. The present system may then assign weights to each class and compute the weighted sum—e.g., of (Rate Count)/(Duration) for each class. This gives the present system a final rate which may then be converted into a probability.
  • Additional Rate Predictor Embodiments
  • In one embodiment, the rate predictor attempts to estimate the probability that an event of interest (say, e.g., the user switching to the browser application) will occur within some interval δ of the current time t. That is, to answer the question “what is the probability that the event will happen between time t and t+δ?” If the predictor know that, on average, the event happens at a rate of λ events per unit time, this probability can be computed as p=1−e−δλ. The predictor may therefore focus on estimating the rate λ of the event at each time.
  • Embodiment 1 Overall Rate Predictor
  • If the predictor has observed the user for a duration d and the event occurred n times, the natural estimate is to use
  • λ = n d .
  • If t0 is the time that the predictor starts observing the user, ti are the observed times of target events, and t is the current time, the predictor may employ:
  • n ( t ) = i : t 0 < t i < t 1 d ( t ) = t 0 t 1 τ = t - t 0 giving λ ( t ) = n ( t ) d ( t )
  • Embodiment 2 Per-Context Rate Predictor
  • Suppose the predictor knows that the rate may have different contexts. For example, suppose the rate is different on different days of the week. Then, if t=“13:21.02, Friday, May 31, 2013” it may be possible to use:
  • λ = number of events observed on Fridays duration the user was observed on Fridays
  • If the rate of the event of interest is different within the first minute of logging in, it is possible to use:
  • λ ( t ) = { number of events observed within 1 min of login duration the user observed within 1 min of login if t is within 1 min of login number of events observed after 1 min of login duration the user was observed after 1 min of login if t is after 1 min of login
  • In general, if the context (e.g. day of week, hour of day, or whether within or after some time of login) at time t is c(t), it is possible to compute the number of times the event of interest is observed in each context c (e.g. on Sunday, Monday, . . . , Saturday), which may be denoted by nc(t), and the total duration the user in each context c is observed, which may be denoted by dc(t), and use:
  • λ ( t ) = n c ( t ) d c ( t ) when c ( t ) = c
  • If Ic(t) is a function that is equal to 1 when the context is 1 and zero otherwise, it is possible to use:
  • n c ( t ) = i : t 0 < t i < t I c ( t i ) d c ( t ) = t 0 t I c ( τ ) τ
  • Embodiment 3 Decayed Rate Predictor
  • As t grows, the counts nc(t) and durations dc(t) grow larger and larger, and become dominated by more and more out of date user behavior. To overcome this problem, it is possible to introduce recency-weighting so that more recent behavior is weighted more heavily in the counts and the durations. One option may be exponential weighting, where behavior at a time τ is given weight
  • - t - τ Δ
  • when evaluating counts and durations at a later time Δ. In this case, it is possible to use:
  • n c ( t ) = i : t 0 < t i < t I c ( t i ) - t - t i Δ d c ( t ) = t 0 t I c ( τ ) - t - τ Δ τ λ ( t ) = n c ( t ) d c ( t ) when c ( t ) = c
  • If events (in this case app switches), changes in context (e.g. Changes in day), and queries (i.e. PLM querying the predictor) occur forwards in time, then these counts, rates, and durations may be computed shown in flowchart form in FIG. 7 and repeated here below:
      • 1. Foreach app and context: set duration[app, context]=0 set count[app, context]=0 (702)
      • 2. Set last_time=now, context=current_context (704)
      • 3. Wait for next app switch, context change or query (706)
      • 4. Set delay=now−last_time (708)
      • 5. Set decay=exp(−(delay)/delta) (710)
      • 6. For each app′ and context′: set duration[app′, context′]=decay*duration[app′, context′]+delay*(1−decay), set count[app′, context′]*=decay (712)
      • 7. if (app switch) count[app, context]++ (714)
      • 8. if (context change) set context=current_context (716)
      • 9. if (query) return count[queried_app, context]/duration[queried_app,context](718)
      • 10. Set last_time=now (720)
      • 11. Go to 3 (722)
  • FIG. 8 depicts one exemplary set of data regarding four apps (A, B, C and D) that shows the switches between the various apps over time. For example, consider the rate curve labeled “App A” in FIG. 8. It starts with a rate count of 1 at time 00:00—as App A is activated and running at that time. The slope of that curve is less than one—showing that a decay rate is being applied over time. Such a decay rate may depending on heuristics (e.g., the longer time between switches for an app, the less “popular” the app is for a user). It will be appreciated that—even though the decay rate is shown as a linear decline, there may be more complicated decay rates and/or functions to reflect a different model and/or heuristic.
  • At time 07:49, App A is activated again and the rate count is a step up from where it was. The final value for App A could be 2 or less, depending on decay rates being applied. Similar step ups occur for App A at times 10:46 and 13:48—and decay rates are thereafter applied.
  • The same sort of description may be applied to each App B, C and D in a similar fashion. These rate curves may then be applied by the pre-launch module according to some rules and/or heuristics—e.g., certain apps have a switch rate over some threshold may be pre-launched.
  • Embodiments of Pre-Launch Policy
  • In many embodiments, pre-launch policy module may determine a variety of actions—e.g. (1) what triggers prediction to be run; (2) determining the apps which should be activated through pre-launch; and/or (3) how the pre-launch behaves with changing power states and system resource usage of the computer system.
  • There are a number of potential pre-launch policies available to the present system. For merely two examples, the present system may adopt: (1) a simple pre-launch policy and (2) an aggressive pre-launch policy.
  • For the simple pre-launch policy, it may be desirable to pre-launch all apps that have a probability of being launched within the pre-launch prediction window above a desired probability threshold and/or bar. It may be desirable to pre-launch as many apps as can fit in memory without triggering a PLM policy and to perform pre-launches in decreasing order of probability. For one example, it may be possible to pre-launch as many apps as can fit it memory and avoid pushing the system over the threshold where it might start terminating previously running applications.
  • For a more aggressive pre-launch policy, it may be desirable to selectively pre-launch apps that meet a desired probability threshold/bar—e.g., with the exception that it does not try to avoid the PLM being triggered. In one such case, the pre-launch policy module may launch such apps until memory is full. For example, one aggressive prelaunch policy would pre-launch of an app may occur if its usage probability is higher than any of the currently running/suspended apps. Thus, the system may keep the apps with the highest probabilities running/suspended.
  • In many embodiments, the prediction engine and pre-launch policy modules may not always be running and may control their own scheduling. In one embodiment, these modules may be run at desired intervals. For example, if the computer system is not in connected standby, prediction engine module may be run at a fixed interval (e.g., at 15 minutes intervals or the like). This interval may vary or be reduced, if prediction is not considered to be an inexpensive process. In addition, the prelaunch module may be explicitly triggered during various points such as user logon, resume from sleep/hibernate, etc.
  • When the computer system is in connected standby, there are a number of options for triggering prediction:
  • (1) Use prediction to determine when the computer system may come out of connected standby, and proactively run prediction and pre-launch before the computer system comes out of connected standby;
  • (2) Run prediction and pre-launch when the computer system comes out of a “Quiet Mode”. Quiet mode may be a configurable period of time (e.g., typically in the middle of the night) where no background tasks are allowed to run in order to conserve battery life. It may be desirable not to run prediction when the computer system is in Quiet Mode.
  • (3) Run prediction at a longer interval when the computer system is in connected standby.
  • If the computer system comes out of connected standby before prediction has been run, then it may be desirable to run prediction on the state transition out of connected standby. If the app being activated by pre-launch is throttled, the impact on user experience may be minimal.
  • One instance of throttling may be in the context of GPU throttling. In this case, it is possible to model GPU throttling in the following manner.
  • The graphics kernel maintains an “interference counter” per process. This counts the number of times a GPU packet/command from a foreground process had to wait because the GPU was busy processing a command from the target process. Alternatively, it may be possible to keep tracking of how much GPU time is taken up by this process. In addition, the graphics kernel also maintains an overall GPU utilization metric that can be queried from user mode.
  • When the present system decides to pre-launch an app, it may first wait for the overall GPU utilization to quiet down (e.g., in a similar way, like waiting for the CPU and disk to quiet down as well). During pre-launch, the present system may frequently query the interference counter for the pre-launching app. Alternatively, instead of polling, it may be possible to get a notification when the interference counter reaches a certain value.
  • If interference is detected, the app being pre-launched may be temporarily “paused” which means its threads are suspended. The app remains in the paused state until either the overall GPU utilization comes back down or until it stays in the paused state for a threshold amount (e.g., a few seconds—or some desired threshold to avoid network connection failures).
  • When it leaves the paused state, the app continues the pre-launch where it left off. If there is GPU contention, the app may toggle between the active and paused states. Eventually, it will either complete its pre-launch or the present system may decide against pre-launch if the app's aggregate time in the paused state went beyond some threshold (e.g., there's too much GPU contention). In such a case, the app may be suspended. Alternatively, GPU throttling may be achieved by assigning low priority to background GPU packets such that foreground packets may preempt—as may be done similarly for CPU, I/O, and memory.
  • When the pre-launch policy has determined that one or more apps are to be activated through pre-launch, these apps may be added to a pre-launch queue. In one embodiment, there may be many ways for an app to get into the pre-launch queue:
  • (1) prediction determines that an app should be added to the pre-launch queue. This determination may be based on the probability threshold returned by the prediction algorithm; and/or
  • (2) a system component (e.g. servicing) requests a pre-launch.
  • In one embodiment, apps in the pre-launch queue may be serialized for pre-launch. In addition, it may be desirable to take into consideration system resources (e.g., memory utilization, CPU utilization, GPU utilization battery state of charge, I/O utilization) before activating each app through pre-launch. Depending on the performance specifications of the computer system, rules and/or heuristics may be applied that factor into consideration available system resources and the potential impact to the user experience should pre-launch occur at a time of low available system resources.
  • For merely some examples, there may be rules and/or heuristics that apply threshold testing—e.g., if a given system resource or combination of system resources are below a given threshold of availability to the computer system, then pre-launching may be suspended or dynamically curtailed, until there is a change in the availability of certain resources. Such rules/heuristics may be modified by a high prediction of an application activation by the user. Thus, if the present system rates a particular activation as high or imminent, then any threshold depending on system resource availability may be dynamically changed—and imminent activations may be pre-launched on a lower availability of system resources. It will be appreciated these examples are merely meant for expository purposes and that the scope of the present application is not to be narrowed by their recitation herein.
  • As mentioned previously, if pre-launch of an app fails for a known reason (e.g., app already running), the app may be taken out of the queue (e.g., blacklisting the application), and may be added again in future based on prediction or external request.
  • Alternatively, if pre-launch of an app fails due to app crashing on startup or getting terminated due to GPU glitches, there may be several options for the present system to pursue:
      • (1) the app may be blocked from the pre-launch queue until the app gets an update; and/or
      • (2) it may be possible to retry to pre-launch the app a desired number of times before blocking the app.
  • Pre-Launch Success Metrics
  • In some embodiments, it may be desirable to have a manner of measuring the success of Predictive Pre-launch for a computer system. It may be desirable to define one or more success metrics to gauge the performance of predictive pre-launch on the user experience. For example, the following may be suitable metrics:
  • (1) a measure of the percentage reduction in fresh app launches (without pre-launch); and/or
  • (2) a measure of the percentage of apps activated by pre-launch that are killed before getting used.
  • In one embodiment, these metrics may have a threshold value set and, if system performance falls below a desired threshold, then certain actions may be taken—e.g., dynamically changing the preference for pre-launching apps or the like.
  • Pre-Launch Bootstrapping
  • In one embodiment, it may be desirable provide a pleasing “first run” experience for the user—i.e., fast performance upon startup of a new computer system. To provide such an experience, there are a number of options for the present system:
  • (1) use inbox app data from some source (e.g. application usage telemetry, SQM or the like); and/or
  • (2) give OEM's a way to provide the initial data.
  • In such options, it may suffice that the specific user's app preferences are made available to the present system on the new computer system. Alternatively, it may suffice to have a more generic user's preference—e.g. from community data (perhaps sourced from app usage telemetry, SQM or the like) to bootstrap the predictor.
  • Accuracy and Coverage Metrics
  • In some embodiments, it may be desirable to employ two other metrics for pre-launch—i.e., Accuracy and Coverage. Accuracy is a measurement of how accurate the policy, predictor pair was, the higher this value the less waste. Coverage is a measurement of how much benefit was provided. By calculating these values for each probability threshold/bar, the present system may dynamically alter relationships between these values and any tradeoffs that may be desirable in light of such metrics.
  • For pre-launch, accuracy may be defined as the percentage of pre-launches which are used,—e.g., that is the app is switched to before the pre-launched instance is terminated. Coverage may be defined as the percentage decrease in application switches that are launches relative to the baseline. For example, it is possible to define:

  • Accuracy=(Pre-launch Hits)/Prelauches

  • Coverage=(Baseline AppLaunches-App Launches With Pre-launch)/(Baseline AppLaunches)
  • Various Prediction Embodiments
  • In many embodiments, present systems may employ a set of prediction models which may tend to give the probability of a user using an application (e.g., prediction data). Predictions may be based on various signals including:
  • (1) Order and frequency of past application usage;
  • (2) Time of day;
  • (3) Day of week; and/or
  • (4) New app installation.
  • In addition, several present systems may “seed” initial prediction data from:
  • (1) Anonymous data collected from a community of users; and/or
  • (2) Application usage data on a computer system being upgraded or from an older (possibly different) computer system. This may be useful when a user is accessing a new and/or upgraded computer system; but may still expect to experience the fast launching of application afforded by many embodiments of the present application.
  • In many embodiments, present systems may preserve this prediction data across many types of events, including backup/restore events and computer system refresh.
  • Alternative Embodiments Use Cases and Workflow
  • The following are alternative embodiments of the present system and may be desirable from the standpoint of particular use cases and/or workflow.
  • It should be appreciated that, when making the decision about which apps to pre-launch, there may be other considerations, apart from probability of use of the application. For example, when the usage probability of two apps A and B are “close”, the pre-launch service may look at other metrics such as application “size” to determine which one to prelaunch first. So, the system may implement policies—e.g., fitting into memory the most likely apps that may get used.
  • Predictive Pre-Launch on First Use
  • This may be a sequence followed on first use of the computer system:
  • (1) Default pre-launch data is seeded in the computer system;
  • (2) User logs in to the computer system;
  • (3) The default data is used by predictor to get a list of apps to pre-launch;
  • (4) The list of apps to pre-launch is queued;
  • (5) Pre-launch component requests pre-launch for all apps in the queue;
  • (6) The apps are activated by pre-launch;
  • (7) User runs one of the apps which is already activated through pre-launch, and finds the startup time to be much faster than the startup time of same app on a computer system without pre-launch.
  • Continuous Predictive Pre-Launch
  • This may be a sequence followed as the user uses the computer system:
  • (1) Predictor is triggered at a regular interval;
  • (2) User data is used by predictor to get a list of apps to pre-launch;
  • (3) The list of apps to pre-launch is queued;
  • (4) Pre-launch component requests pre-launch for all apps in the queue,
  • (5) The apps are activated by pre-launch;
  • (6) User runs one of the apps which is already activated through pre-launch, and finds the startup time to be much faster than the startup time of same app on the computer system without pre-launch.
  • Predictive Pre-Launch on Transition to CS
  • This may be a the sequence followed when transition to CS takes place:
  • (1) User presses the power button;
  • (2) Predictor calculates the estimated time when the computer system may come out of CS;
  • (3) At a given interval before the computer system is expected to come out of CS, predictor is triggered;
  • (4) If the machine comes out of CS earlier, predictor is triggered on the transition out of CS;
  • (5) User data is used by predictor to get a list of apps to pre-launch;
  • (6) The list of apps to pre-launch is queued;
  • (7) Pre-launch component requests pre-launch for all apps in the queue;
  • (8) The apps are activated by pre-launch;
  • (9) When the machine comes out of CS, the user runs one of the apps which is already activated through pre-launch, and finds the startup time to be much faster than the startup time of same app on the computer system without pre-launch.
  • Predictive Pre-Launch and Quiet Mode
  • This may be a sequence followed in Quiet Mode:
  • (1) computer system goes into Quiet Mode at night;
  • (2) Predictive Pre-launch is disabled while the machine is in Quiet Mode;
  • (3) When the machine comes out of Quiet Mode, predictor is triggered;
  • (4) If the machine comes out of Quiet Mode earlier, predictor is triggered on the transition out of Quiet Mode;
  • (5) User data is used by predictor to get a list of apps to pre-launch;
  • (6) The list of apps to pre-launch is queued;
  • (7) Pre-launch component requests pre-launch for all apps in the queue,
  • (8) The apps are activated by pre-launch;
  • (9) When the user starts using the machine, the user runs one of the apps which is already activated through pre-launch, and finds the startup time to be much faster than the startup time of same app on the computer system without pre-launch.
  • Predictive Pre-Launch and App Errors
  • This may be a sequence followed for apps which fail on startup:
  • (1) Predictor is triggered at a regular interval;
  • (2) User data is used by predictor to get a list of apps to pre-launch;
  • (3) The list of apps to pre-launch is queued;
  • (4) Pre-launch component requests pre-launch for all apps in the queue;
  • (5) The apps are activated by pre-launch;
  • (6) One of the apps fails to launch due to some error on startup;
  • (7) The app is added to an “ignore list” by pre-launch;
  • (8) Next time the predictor is triggered, the app is excluded from pre-launch. In addition, the app may be removed from any “ignore” list, when the app is upgraded and/or reinstalled or when the system gets a notice that the user is successfully using the app.
  • Predictive Pre-Launch and App Termination from PLM
  • This is the sequence followed by PLM to find out which apps to terminate:
  • (1) PLM requests a cost value for currently running apps from the service;
  • (2) Predictor and resource monitor work together to generate the cost and return it to PLM;
  • (3) PLM sorts currently running apps by this number, and terminates the ones on top of the list.
  • What has been described above includes examples of the subject innovation. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the claimed subject matter, but one of ordinary skill in the art may recognize that many further combinations and permutations of the subject innovation are possible. Accordingly, the claimed subject matter is intended to embrace all such alterations, modifications, and variations that fall within the spirit and scope of the appended claims.
  • In particular and in regard to the various functions performed by the above described components, devices, circuits, systems and the like, the terms (including a reference to a “means”) used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., a functional equivalent), even though not structurally equivalent to the disclosed structure, which performs the function in the herein illustrated exemplary aspects of the claimed subject matter. In this regard, it will also be recognized that the innovation includes a system as well as a computer-readable medium having computer-executable instructions for performing the acts and/or events of the various methods of the claimed subject matter.
  • In addition, while a particular feature of the subject innovation may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes,” and “including” and variants thereof are used in either the detailed description or the claims, these terms are intended to be inclusive in a manner similar to the term “comprising.”

Claims (20)

1. A method for pre-launching applications within a computer system said computer system comprising a controller, a memory and an operating system, the method comprising:
for a given set of applications, said applications capable of being activated by a user of the computer system, associating a prediction of when said applications may be activated by said user;
monitoring system resources of said computer system;
applying a set of pre-launch rules to said set of applications, said pre-launch rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said predictions associated with said applications; and
pre-launching one said application, based upon the satisfaction of said set of pre-launch rules.
2. The method of claim 1 wherein said applications capable of being activated by a user comprise one of a group, said group comprising: individual applications, applications that are used together by said user, applications that are used in a certain sequence, applications that are used at certain times of the day, applications that are used at regular intervals, applications used at a certain location and applications that are used in response to certain events in the computer system.
3. The method of claim 1 wherein said associating a prediction of when said application may be activated further comprises:
prediction modeling to give a prediction measure of when an application may be activated by a user; and
further wherein said prediction modeling is one of a group, said group comprising: modeling based on order of application usage, modeling based on frequency of application usage, modeling based on time of day of application usage, modeling based on location of application usage, modeling using most common application predictor, modeling using most used predictor, modeling using a null predictor, modeling using an oracle predictor, modeling with an adaptive predictor and modeling with a switch rate predictor.
4. The method of claim 3 wherein said modeling with an adaptive predictor further comprises:
identifying past application usage situations;
comparing the current application usage situation;
returning a measure that a queried application may be activated within a desired prediction window.
5. The method of claim 4 wherein said situations may comprise one of a group, said group comprising: the current foreground application, the last foreground application and how long the current application has been in usage.
6. The method of claim 3 wherein said modeling with a switch rate predictor further comprises:
maintaining switch rate data on an application over time; and
providing a measure for when said application may be likely to be switched.
7. The method of claim 6 wherein said modeling with a switch rate predictor further comprises:
applying a decay rate to said switch data rate over time; and
changing said measure according to said decay rate.
8. The method of claim 3 wherein said monitoring system resources further comprises:
monitoring a level of availability of said system resources to said computer system; and
wherein further said system resources comprises one of a group, said group comprising: CPU utilization, GPU utilization, memory utilization, battery state of charge and I/O utilization.
9. The method of claim 8 wherein said applying a set of pre-launch rules further comprises:
considering said level of availability of said system resources to a desired threshold;
considering the prediction measure of when an application may be activated by a user; and
determining whether to pre-launch said application depending upon the satisfaction of conditions based on said level of availability and said prediction measure.
10. The method of claim 1 wherein each of said applications capable of being activated by a user comprises an associated process state, said associated process state comprises one of a group, said group comprising: running, not running and suspended.
11. The method of claim 10 wherein pre-launching one said application further comprises:
changing the associated process state of one said application from not running to running.
12. The method of claim 11 wherein changing the associated process state of one said application further comprises:
changing the associated process state of one said application in the background of said computer system.
13. The method of claim 12 wherein changing the associated process state of one said application further comprises:
activating said one said application to its last saved state with its backstack location restored.
14. The method of claim 1 wherein said method further comprises:
blacklisting a given application that has failed pre-launch in the past.
15. The method of claim 1 wherein said method further comprises:
seeding a given computer system with initial prediction data from one of a group, said group comprising: data collected a community of users and data from different computer systems.
16. A system for pre-launching applications on a computer system, said computer system comprising a controller, a memory and an operating system, the system comprising:
a prediction engine, said prediction engine capable of providing a prediction measure of likelihood that a given application may be activated by a user of said computer system;
a resource monitor, said resource monitor capable of providing a measure of system resource utilization of said computer system;
a pre-launch policy module, said pre-launch policy module capable of applying a set of pre-launch policy rules, said pre-launch policy rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said prediction measures associated with said applications; and
a pre-launch queue module, said pre-launch queue module capable of maintaining a list of applications for pre-launching in said computer system, said list of applications depending upon the satisfaction of said pre-launch policy rules.
17. The system of claim 16 wherein said prediction engine further comprises:
at least one prediction module, said prediction module comprising one of a group, said group comprising: prediction module based on order of application usage, prediction module based on frequency of application usage, prediction module based on time of day of application usage, prediction module based on location of application usage, prediction module using most common application predictor, prediction module using most used predictor, prediction module using a null predictor, prediction module using an oracle predictor, prediction module with an adaptive predictor and prediction module with a switch rate predictor.
18. The system of claim 17 wherein said system is capable of blacklisting a given application that has failed pre-launch in the past.
19. A computer-readable storage media storing instructions that when executed by a computing device, said instructions cause the computing device to perform operations comprising:
for a given set of applications, said applications capable of being activated by a user of the computer system, associating a prediction of when said applications may be activated by said user with said application;
monitoring system resources of said computer system;
applying a set of pre-launch rules to said set of applications, said pre-launch rules comprising one of a group, said group comprising: rules regarding availability of said system resources and rules regarding said predictions associated with said applications; and
pre-launching one said application, based upon the satisfaction of said set of pre-launch rules.
20. The computer-readable storage medium of claim 19 wherein said associating a prediction of when said application may be activated further comprises:
prediction modeling to give a prediction measure of when an application may be activated by a user; and
further wherein said prediction modeling is one of a group, said group comprising: modeling based on order of application usage, modeling based on frequency of application usage, modeling based on time of day of application usage, modeling based on location of application usage, modeling using most common application predictor, modeling using most used predictor, modeling using a null predictor, modeling using an oracle predictor, modeling with an adaptive predictor and modeling with a switch rate predictor.
US13/915,870 2013-06-12 2013-06-12 Predictive pre-launch for applications Active 2034-06-15 US9508040B2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US13/915,870 US9508040B2 (en) 2013-06-12 2013-06-12 Predictive pre-launch for applications
CN201380077373.2A CN105431822B (en) 2013-06-12 2013-09-20 The prediction pretrigger of application
EP13773500.7A EP3008589A1 (en) 2013-06-12 2013-09-20 Predictive pre-launch for applications
PCT/US2013/061047 WO2014200547A1 (en) 2013-06-12 2013-09-20 Predictive pre-launch for applications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/915,870 US9508040B2 (en) 2013-06-12 2013-06-12 Predictive pre-launch for applications

Publications (2)

Publication Number Publication Date
US20140372356A1 true US20140372356A1 (en) 2014-12-18
US9508040B2 US9508040B2 (en) 2016-11-29

Family

ID=49304362

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/915,870 Active 2034-06-15 US9508040B2 (en) 2013-06-12 2013-06-12 Predictive pre-launch for applications

Country Status (4)

Country Link
US (1) US9508040B2 (en)
EP (1) EP3008589A1 (en)
CN (1) CN105431822B (en)
WO (1) WO2014200547A1 (en)

Cited By (179)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150026824A1 (en) * 2013-07-16 2015-01-22 Samsung Electronics Co., Ltd. Device and method for providing user activity information in portable terminal
US20160132344A1 (en) * 2014-11-07 2016-05-12 Roku, Inc. System and method for fast starting an application
US20160259623A1 (en) * 2015-03-06 2016-09-08 Apple Inc. Reducing response latency of intelligent automated assistants
US20160360271A1 (en) * 2015-06-07 2016-12-08 Apple Inc. Priming media applications
KR20170039999A (en) * 2015-10-02 2017-04-12 삼성전자주식회사 Apparatus and method for executing application in electronic deivce
US20180032374A1 (en) * 2016-08-01 2018-02-01 Intel Corporation Application launch booster
US20180217850A1 (en) * 2017-01-30 2018-08-02 Citrix Systems, Inc. Computer system providing cloud-based session prelaunch features and related methods
US20180253205A1 (en) * 2014-10-16 2018-09-06 Samsung Electronics Co., Ltd. Wearable device and execution of application in wearable device
US10083690B2 (en) 2014-05-30 2018-09-25 Apple Inc. Better resolution when referencing to concepts
US10101904B2 (en) * 2015-08-04 2018-10-16 Lg Electronics Inc. Mobile terminal displaying execution screens for functions executing in the background
US10108612B2 (en) 2008-07-31 2018-10-23 Apple Inc. Mobile device having human language translation capability with positional feedback
WO2018201948A1 (en) * 2017-05-01 2018-11-08 Huawei Technologies Co., Ltd. Using machine learning to estimate query resource consumption in mppdb
CN109240763A (en) * 2018-08-20 2019-01-18 奇酷互联网络科技(深圳)有限公司 Application program accelerates method, mobile terminal and the storage medium of starting
EP3480692A1 (en) * 2017-11-06 2019-05-08 Guangdong OPPO Mobile Telecommunications Corp., Ltd. Methods and systems for preloading applications and generating prediction models
US20190155619A1 (en) * 2017-11-20 2019-05-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for Preloading Application, Terminal Device, and Medium
WO2019095802A1 (en) * 2017-11-20 2019-05-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, terminal device, and medium
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
KR20190058610A (en) * 2016-10-20 2019-05-29 후아웨이 테크놀러지 컴퍼니 리미티드 Application startup control method and control device
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US10311871B2 (en) 2015-03-08 2019-06-04 Apple Inc. Competing devices responding to voice triggers
US20190188000A1 (en) * 2017-12-20 2019-06-20 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for Preloading Application, Computer Readable Storage Medium, and Terminal Device
US20190188012A1 (en) * 2017-12-14 2019-06-20 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method, device, terminal and storage medium for processing application
US10332518B2 (en) 2017-05-09 2019-06-25 Apple Inc. User interface for correcting recognition errors
EP3502889A1 (en) * 2017-12-21 2019-06-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method and device for preloading application, storage medium, and terminal device
EP3502879A1 (en) * 2017-12-20 2019-06-26 Guangdong OPPO Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal device
US10354652B2 (en) 2015-12-02 2019-07-16 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
EP3508974A4 (en) * 2016-09-27 2019-08-07 Huawei Technologies Co., Ltd. Method and terminal for allocating system resource to application
US10381016B2 (en) 2008-01-03 2019-08-13 Apple Inc. Methods and apparatus for altering audio output signals
US10390213B2 (en) 2014-09-30 2019-08-20 Apple Inc. Social reminders
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US10403283B1 (en) 2018-06-01 2019-09-03 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
EP3506090A4 (en) * 2016-09-12 2019-09-04 Huawei Technologies Co., Ltd. Method and apparatus for quietly booting application in background, and terminal device
US10417344B2 (en) 2014-05-30 2019-09-17 Apple Inc. Exemplar-based natural language processing
US10417405B2 (en) 2011-03-21 2019-09-17 Apple Inc. Device access using voice authentication
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US10431204B2 (en) 2014-09-11 2019-10-01 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10438595B2 (en) 2014-09-30 2019-10-08 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10453443B2 (en) 2014-09-30 2019-10-22 Apple Inc. Providing an indication of the suitability of speech recognition
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
EP3567477A1 (en) * 2018-05-10 2019-11-13 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for preloading application, storage medium, and terminal
EP3572936A1 (en) * 2018-05-22 2019-11-27 Beijing Xiaomi Mobile Software Co., Ltd. Method, terminal and computer-readable storage medium for displaying interface of application program
US10496705B1 (en) 2018-06-03 2019-12-03 Apple Inc. Accelerated task performance
US10497365B2 (en) 2014-05-30 2019-12-03 Apple Inc. Multi-command single utterance input method
EP3575962A1 (en) * 2018-05-29 2019-12-04 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method and device for preloading application, storage medium and intelligent terminal
EP3579104A1 (en) * 2018-05-29 2019-12-11 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and apparatus for establishing an application prediction model, storage medium and terminal
WO2019233354A1 (en) * 2018-06-05 2019-12-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application preloading method and device, storage medium and terminal
US10520979B2 (en) 2016-06-10 2019-12-31 Apple Inc. Enhanced application preview mode
US10529332B2 (en) 2015-03-08 2020-01-07 Apple Inc. Virtual assistant activation
US20200016488A1 (en) * 2017-02-20 2020-01-16 Sony Interactive Entertainment Inc. Game application launch system and method
US10553215B2 (en) 2016-09-23 2020-02-04 Apple Inc. Intelligent automated assistant
EP3575963A3 (en) * 2018-05-29 2020-02-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal
US10580409B2 (en) 2016-06-11 2020-03-03 Apple Inc. Application integration with a digital assistant
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US10643611B2 (en) 2008-10-02 2020-05-05 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10657961B2 (en) 2013-06-08 2020-05-19 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US10681212B2 (en) 2015-06-05 2020-06-09 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10684703B2 (en) 2018-06-01 2020-06-16 Apple Inc. Attention aware virtual assistant dismissal
US10692504B2 (en) 2010-02-25 2020-06-23 Apple Inc. User profiling for voice input processing
US10699717B2 (en) 2014-05-30 2020-06-30 Apple Inc. Intelligent assistant for home automation
US10714117B2 (en) 2013-02-07 2020-07-14 Apple Inc. Voice trigger for a digital assistant
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
US10725761B2 (en) 2016-06-10 2020-07-28 Apple Inc. Providing updated application data for previewing applications on a display
US20200241917A1 (en) * 2017-10-13 2020-07-30 Huawei Technologies Co., Ltd. Resource management method and terminal device
US10733993B2 (en) 2016-06-10 2020-08-04 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10741185B2 (en) 2010-01-18 2020-08-11 Apple Inc. Intelligent automated assistant
US10748546B2 (en) 2017-05-16 2020-08-18 Apple Inc. Digital assistant services based on device capabilities
US10747467B2 (en) 2016-06-10 2020-08-18 Apple Inc. Memory management for application loading
CN111552416A (en) * 2015-04-13 2020-08-18 华为技术有限公司 Method, device and equipment for starting task management interface
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US10769385B2 (en) 2013-06-09 2020-09-08 Apple Inc. System and method for inferring user intent from speech inputs
US10769189B2 (en) 2015-11-13 2020-09-08 Microsoft Technology Licensing, Llc Computer speech recognition and semantic understanding from activity patterns
US10789945B2 (en) 2017-05-12 2020-09-29 Apple Inc. Low-latency intelligent automated assistant
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US20200401418A1 (en) * 2018-03-05 2020-12-24 Tensera Networks Ltd. Application preloading in the presence of user actions
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US10942703B2 (en) 2015-12-23 2021-03-09 Apple Inc. Proactive assistance based on dialog communication between devices
US10942702B2 (en) 2016-06-11 2021-03-09 Apple Inc. Intelligent device arbitration and control
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
WO2021067427A1 (en) * 2019-10-03 2021-04-08 Micron Technology, Inc. Customized root processes for groups of applications
WO2021067424A1 (en) 2019-10-03 2021-04-08 Micron Technology, Inc. Customized root processes for individual applications
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
US11010127B2 (en) 2015-06-29 2021-05-18 Apple Inc. Virtual assistant for media playback
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
EP3726378A4 (en) * 2018-04-28 2021-05-19 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application program pre-loading method and apparatus, and storage medium and terminal
US11023513B2 (en) 2007-12-20 2021-06-01 Apple Inc. Method and apparatus for searching using an active ontology
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US11048473B2 (en) 2013-06-09 2021-06-29 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US11069347B2 (en) 2016-06-08 2021-07-20 Apple Inc. Intelligent automated assistant for media exploration
US11070949B2 (en) 2015-05-27 2021-07-20 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on an electronic device with a touch-sensitive display
US11069336B2 (en) 2012-03-02 2021-07-20 Apple Inc. Systems and methods for name pronunciation
US20210240801A1 (en) * 2020-02-03 2021-08-05 Arris Enterprises Llc Digital rights management system resource manager
CN113220552A (en) * 2021-05-12 2021-08-06 湖北亿咖通科技有限公司 Method and electronic equipment for limiting application operation number in vehicle-mounted information entertainment system
US11086663B2 (en) 2018-05-10 2021-08-10 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Preloading application using active window stack
US11120372B2 (en) 2011-06-03 2021-09-14 Apple Inc. Performing actions associated with task items that represent tasks to perform
US11126400B2 (en) 2015-09-08 2021-09-21 Apple Inc. Zero latency digital assistant
US11127397B2 (en) 2015-05-27 2021-09-21 Apple Inc. Device voice control
US11133008B2 (en) 2014-05-30 2021-09-28 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11153373B2 (en) 2019-05-03 2021-10-19 EMC IP Holding Company LLC Method and system for performance-driven load shifting
US11159646B1 (en) 2015-07-13 2021-10-26 Amazon Technologies, Inc. Identifying, presenting, and launching preferred applications on virtual desktop instances
US20210342192A1 (en) * 2020-04-29 2021-11-04 Dell Products L.P. Systems And Methods For Optimizing Perceived Software Application Load Delays
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11169827B2 (en) * 2016-12-19 2021-11-09 Tencent Technology (Shenzhen) Company Limited Resource loading at application startup using attributes of historical data groups
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US11216330B2 (en) 2018-08-27 2022-01-04 Samsung Electronics Co., Ltd. Methods and systems for managing an electronic device
US11217251B2 (en) 2019-05-06 2022-01-04 Apple Inc. Spoken notifications
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US11237797B2 (en) 2019-05-31 2022-02-01 Apple Inc. User activity shortcut suggestions
US11269678B2 (en) 2012-05-15 2022-03-08 Apple Inc. Systems and methods for integrating third party services with a digital assistant
WO2022055538A1 (en) * 2020-09-09 2022-03-17 Google Llc Pre-launching an application using interprocess communication
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11314370B2 (en) 2013-12-06 2022-04-26 Apple Inc. Method for extracting salient dialog usage from live data
US11314526B2 (en) * 2017-11-08 2022-04-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application prediction method, application preloading method, and application preloading apparatus based on application usage timing
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11350253B2 (en) 2011-06-03 2022-05-31 Apple Inc. Active transport based notifications
US20220179668A1 (en) * 2018-03-05 2022-06-09 Tensera Networks Ltd. Robust Application Preloading with Accurate User Experience
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
US11366752B2 (en) 2020-03-19 2022-06-21 Micron Technology, Inc. Address mapping between shared memory modules and cache sets
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US11388291B2 (en) 2013-03-14 2022-07-12 Apple Inc. System and method for processing voicemail
US11405466B2 (en) 2017-05-12 2022-08-02 Apple Inc. Synchronization and task delegation of a digital assistant
US11423886B2 (en) 2010-01-18 2022-08-23 Apple Inc. Task flow identification based on user intent
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11429445B2 (en) 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
US11429883B2 (en) 2015-11-13 2022-08-30 Microsoft Technology Licensing, Llc Enhanced computer experience from activity prediction
US11442747B2 (en) * 2018-05-10 2022-09-13 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for establishing applications-to-be preloaded prediction model based on preorder usage sequence of foreground application, storage medium, and terminal
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11468282B2 (en) 2015-05-15 2022-10-11 Apple Inc. Virtual assistant in a communication session
US11467802B2 (en) 2017-05-11 2022-10-11 Apple Inc. Maintaining privacy of personal information
US11474828B2 (en) 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11481229B2 (en) * 2018-02-28 2022-10-25 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for application processing, storage medium, and electronic device
US11483415B2 (en) 2014-07-16 2022-10-25 Tensera Networks Ltd. Background pre-rendering of user applications
US11489941B2 (en) 2014-07-16 2022-11-01 Tensera Networks Ltd. Pre-loading of user applications including skipping of selected launch actions
US11488406B2 (en) 2019-09-25 2022-11-01 Apple Inc. Text detection using global geometry estimators
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11495218B2 (en) 2018-06-01 2022-11-08 Apple Inc. Virtual assistant operation in multi-device environments
US11500672B2 (en) 2015-09-08 2022-11-15 Apple Inc. Distributed personal assistant
US11516537B2 (en) 2014-06-30 2022-11-29 Apple Inc. Intelligent automated assistant for TV user interactions
US11526368B2 (en) 2015-11-06 2022-12-13 Apple Inc. Intelligent automated assistant in a messaging environment
US11532306B2 (en) 2017-05-16 2022-12-20 Apple Inc. Detecting a trigger of a digital assistant
CN115617421A (en) * 2022-12-05 2023-01-17 深圳市欧瑞博科技股份有限公司 Intelligent process scheduling method and device, readable storage medium and embedded equipment
US11580990B2 (en) 2017-05-12 2023-02-14 Apple Inc. User-specific acoustic models
US11604660B2 (en) 2018-05-15 2023-03-14 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for launching application, storage medium, and terminal
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11657813B2 (en) 2019-05-31 2023-05-23 Apple Inc. Voice identification in digital assistant systems
US11671920B2 (en) 2007-04-03 2023-06-06 Apple Inc. Method and system for operating a multifunction portable electronic device using voice-activation
US11696060B2 (en) 2020-07-21 2023-07-04 Apple Inc. User identification using headphones
US11734023B2 (en) 2020-12-03 2023-08-22 Tensera Networks Ltd. Preloading of applications having an existing task
US11758014B2 (en) * 2014-07-16 2023-09-12 Tensera Networks Ltd. Scheduling of application preloading in user devices
US11765209B2 (en) 2020-05-11 2023-09-19 Apple Inc. Digital assistant hardware abstraction
US11790914B2 (en) 2019-06-01 2023-10-17 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11798547B2 (en) 2013-03-15 2023-10-24 Apple Inc. Voice activated device for use with a voice-based digital assistant
US11809483B2 (en) 2015-09-08 2023-11-07 Apple Inc. Intelligent automated assistant for media search and playback
US11824956B2 (en) 2019-07-30 2023-11-21 Tensera Networks Ltd. Pre-rendering of application user-interfaces in user devices using off-line pre-render mode
US11838734B2 (en) 2020-07-20 2023-12-05 Apple Inc. Multi-device audio adjustment coordination
US11836087B2 (en) 2020-12-23 2023-12-05 Micron Technology, Inc. Per-process re-configurable caches
US11853536B2 (en) 2015-09-08 2023-12-26 Apple Inc. Intelligent automated assistant in a media environment
US11914848B2 (en) 2020-05-11 2024-02-27 Apple Inc. Providing relevant data items based on context
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
US11928604B2 (en) 2005-09-08 2024-03-12 Apple Inc. Method and apparatus for building an intelligent automated assistant
US12010262B2 (en) 2013-08-06 2024-06-11 Apple Inc. Auto-activating smart responses based on activities from remote devices
US12014118B2 (en) 2017-05-15 2024-06-18 Apple Inc. Multi-modal interfaces having selection disambiguation and text modification capability
US12026197B2 (en) 2017-06-01 2024-07-02 Apple Inc. Intelligent automated assistant for media exploration

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146842B2 (en) 2015-11-19 2018-12-04 Google Llc Pre-instantiating native applications in background
CN105930213B (en) * 2016-04-22 2019-06-14 北京小米移动软件有限公司 Using operation method and device
CN107368326A (en) * 2016-05-13 2017-11-21 腾讯科技(深圳)有限公司 Course control method and device
CN105939416A (en) * 2016-05-30 2016-09-14 努比亚技术有限公司 Mobile terminal and application prestart method thereof
US10681071B1 (en) 2016-08-02 2020-06-09 ThreatConnect, Inc. Enrichment and analysis of cybersecurity threat intelligence and orchestrating application of threat intelligence to selected network security events
US10733054B2 (en) 2016-12-30 2020-08-04 Dropbox, Inc. User engagement aware auto-restart
US10732954B2 (en) 2016-12-30 2020-08-04 Dropbox, Inc. User engagement aware auto-updater
US10310872B2 (en) 2017-02-21 2019-06-04 Red Hat, Inc. Transparent fast application launcher
CN106874095A (en) * 2017-02-28 2017-06-20 珠海市魅族科技有限公司 One kind application loading method and device
CN109947498B (en) * 2017-12-20 2021-06-29 Oppo广东移动通信有限公司 Application program preloading method and device, storage medium and mobile terminal
CN108052359A (en) * 2017-12-25 2018-05-18 维沃移动通信有限公司 The startup control method and mobile terminal of a kind of application program
CN108595231B (en) * 2018-05-15 2021-06-15 Oppo广东移动通信有限公司 Application program preloading method and device, storage medium and intelligent terminal
CN108681475B (en) * 2018-05-21 2021-11-26 Oppo广东移动通信有限公司 Application program preloading method and device, storage medium and mobile terminal
CN108776600A (en) * 2018-05-28 2018-11-09 努比亚技术有限公司 Application program pretrigger method, mobile terminal and computer readable storage medium
CN108762844B (en) * 2018-05-29 2021-09-07 Oppo广东移动通信有限公司 Application program preloading method and device, storage medium and terminal
US20200081930A1 (en) * 2018-09-06 2020-03-12 Branch Metrics, Inc. Entity-based search system using user engagement
CN110895721B (en) * 2018-09-12 2021-11-16 珠海格力电器股份有限公司 Method and device for predicting electric appliance function
CN109151216B (en) * 2018-10-30 2021-01-26 努比亚技术有限公司 Application starting method, mobile terminal, server and computer readable storage medium
US11093620B2 (en) 2018-11-02 2021-08-17 ThreatConnect, Inc. Ahead of time application launching for cybersecurity threat intelligence of network security events
US11153285B2 (en) * 2018-11-07 2021-10-19 Citrix Systems, Inc. Systems and methods for application pre-launch
CN109669735B (en) * 2018-12-07 2022-02-22 武汉斗鱼鱼乐网络科技有限公司 Application starting method and device based on delayed registration and storage medium
US11301780B2 (en) 2019-02-15 2022-04-12 Samsung Electronics Co., Ltd. Method and electronic device for machine learning based prediction of subsequent user interface layouts
CN110209975B (en) * 2019-05-30 2021-11-02 百度在线网络技术(北京)有限公司 Method, apparatus, device and storage medium for providing object
US11863573B2 (en) 2020-03-06 2024-01-02 ThreatConnect, Inc. Custom triggers for a network security event for cybersecurity threat intelligence
US11985144B2 (en) 2021-06-25 2024-05-14 ThreatConnect, Inc. Browser extension for cybersecurity threat intelligence and response
US11971801B1 (en) * 2022-12-15 2024-04-30 Google Llc Launching determination based on login status

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060053219A1 (en) * 2002-11-22 2006-03-09 Hiroshi Kutsumi Operation history utilization system and method thereof
US20120023226A1 (en) * 2010-07-26 2012-01-26 Steve Petersen Prediction of activity session for mobile network use optimization and user experience enhancement
US20130152047A1 (en) * 2011-11-22 2013-06-13 Solano Labs, Inc System for distributed software quality improvement
US20130173513A1 (en) * 2011-12-30 2013-07-04 Microsoft Corporation Context-based device action prediction

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040030882A1 (en) 2002-08-08 2004-02-12 Forman George Henry Managed application pre-launching
US7076616B2 (en) 2003-03-24 2006-07-11 Sony Corporation Application pre-launch to reduce user interface latency
US7275150B2 (en) 2004-03-15 2007-09-25 International Business Machines Corporation Method and system for adding frequently selected applications to a computer startup sequence
US20120324481A1 (en) 2011-06-16 2012-12-20 Samsung Electronics Co. Ltd. Adaptive termination and pre-launching policy for improving application startup time
US8176437B1 (en) 2011-07-18 2012-05-08 Google Inc. Responsiveness for application launch

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060053219A1 (en) * 2002-11-22 2006-03-09 Hiroshi Kutsumi Operation history utilization system and method thereof
US20120023226A1 (en) * 2010-07-26 2012-01-26 Steve Petersen Prediction of activity session for mobile network use optimization and user experience enhancement
US20130152047A1 (en) * 2011-11-22 2013-06-13 Solano Labs, Inc System for distributed software quality improvement
US20130173513A1 (en) * 2011-12-30 2013-07-04 Microsoft Corporation Context-based device action prediction

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Definition of "physical". From Google search of "define:physical" performed 4/28/2016. *
Definition of "physical". From www.merriam-webster.com/dictionary/physical. Accessed 4/28/2016. *

Cited By (284)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11928604B2 (en) 2005-09-08 2024-03-12 Apple Inc. Method and apparatus for building an intelligent automated assistant
US11671920B2 (en) 2007-04-03 2023-06-06 Apple Inc. Method and system for operating a multifunction portable electronic device using voice-activation
US11979836B2 (en) 2007-04-03 2024-05-07 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US11023513B2 (en) 2007-12-20 2021-06-01 Apple Inc. Method and apparatus for searching using an active ontology
US10381016B2 (en) 2008-01-03 2019-08-13 Apple Inc. Methods and apparatus for altering audio output signals
US10108612B2 (en) 2008-07-31 2018-10-23 Apple Inc. Mobile device having human language translation capability with positional feedback
US11348582B2 (en) 2008-10-02 2022-05-31 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US11900936B2 (en) 2008-10-02 2024-02-13 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10643611B2 (en) 2008-10-02 2020-05-05 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US11423886B2 (en) 2010-01-18 2022-08-23 Apple Inc. Task flow identification based on user intent
US10741185B2 (en) 2010-01-18 2020-08-11 Apple Inc. Intelligent automated assistant
US10692504B2 (en) 2010-02-25 2020-06-23 Apple Inc. User profiling for voice input processing
US10417405B2 (en) 2011-03-21 2019-09-17 Apple Inc. Device access using voice authentication
US11120372B2 (en) 2011-06-03 2021-09-14 Apple Inc. Performing actions associated with task items that represent tasks to perform
US11350253B2 (en) 2011-06-03 2022-05-31 Apple Inc. Active transport based notifications
US11069336B2 (en) 2012-03-02 2021-07-20 Apple Inc. Systems and methods for name pronunciation
US11269678B2 (en) 2012-05-15 2022-03-08 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US11321116B2 (en) 2012-05-15 2022-05-03 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US11862186B2 (en) 2013-02-07 2024-01-02 Apple Inc. Voice trigger for a digital assistant
US10978090B2 (en) 2013-02-07 2021-04-13 Apple Inc. Voice trigger for a digital assistant
US11557310B2 (en) 2013-02-07 2023-01-17 Apple Inc. Voice trigger for a digital assistant
US11636869B2 (en) 2013-02-07 2023-04-25 Apple Inc. Voice trigger for a digital assistant
US12009007B2 (en) 2013-02-07 2024-06-11 Apple Inc. Voice trigger for a digital assistant
US10714117B2 (en) 2013-02-07 2020-07-14 Apple Inc. Voice trigger for a digital assistant
US11388291B2 (en) 2013-03-14 2022-07-12 Apple Inc. System and method for processing voicemail
US11798547B2 (en) 2013-03-15 2023-10-24 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10657961B2 (en) 2013-06-08 2020-05-19 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US11727219B2 (en) 2013-06-09 2023-08-15 Apple Inc. System and method for inferring user intent from speech inputs
US10769385B2 (en) 2013-06-09 2020-09-08 Apple Inc. System and method for inferring user intent from speech inputs
US11048473B2 (en) 2013-06-09 2021-06-29 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US20150026824A1 (en) * 2013-07-16 2015-01-22 Samsung Electronics Co., Ltd. Device and method for providing user activity information in portable terminal
US12010262B2 (en) 2013-08-06 2024-06-11 Apple Inc. Auto-activating smart responses based on activities from remote devices
US11314370B2 (en) 2013-12-06 2022-04-26 Apple Inc. Method for extracting salient dialog usage from live data
US10657966B2 (en) 2014-05-30 2020-05-19 Apple Inc. Better resolution when referencing to concepts
US10497365B2 (en) 2014-05-30 2019-12-03 Apple Inc. Multi-command single utterance input method
US11699448B2 (en) 2014-05-30 2023-07-11 Apple Inc. Intelligent assistant for home automation
US11257504B2 (en) 2014-05-30 2022-02-22 Apple Inc. Intelligent assistant for home automation
US10083690B2 (en) 2014-05-30 2018-09-25 Apple Inc. Better resolution when referencing to concepts
US11133008B2 (en) 2014-05-30 2021-09-28 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10699717B2 (en) 2014-05-30 2020-06-30 Apple Inc. Intelligent assistant for home automation
US10714095B2 (en) 2014-05-30 2020-07-14 Apple Inc. Intelligent assistant for home automation
US10417344B2 (en) 2014-05-30 2019-09-17 Apple Inc. Exemplar-based natural language processing
US11810562B2 (en) 2014-05-30 2023-11-07 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10878809B2 (en) 2014-05-30 2020-12-29 Apple Inc. Multi-command single utterance input method
US11670289B2 (en) 2014-05-30 2023-06-06 Apple Inc. Multi-command single utterance input method
US11838579B2 (en) 2014-06-30 2023-12-05 Apple Inc. Intelligent automated assistant for TV user interactions
US11516537B2 (en) 2014-06-30 2022-11-29 Apple Inc. Intelligent automated assistant for TV user interactions
US11516309B2 (en) * 2014-07-16 2022-11-29 Tensera Networks Ltd. Transparent pre-loading of user applications
US11483415B2 (en) 2014-07-16 2022-10-25 Tensera Networks Ltd. Background pre-rendering of user applications
US11758014B2 (en) * 2014-07-16 2023-09-12 Tensera Networks Ltd. Scheduling of application preloading in user devices
US11489941B2 (en) 2014-07-16 2022-11-01 Tensera Networks Ltd. Pre-loading of user applications including skipping of selected launch actions
US10431204B2 (en) 2014-09-11 2019-10-01 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10453443B2 (en) 2014-09-30 2019-10-22 Apple Inc. Providing an indication of the suitability of speech recognition
US10438595B2 (en) 2014-09-30 2019-10-08 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US10390213B2 (en) 2014-09-30 2019-08-20 Apple Inc. Social reminders
US10908805B2 (en) * 2014-10-16 2021-02-02 Samsung Electronics Co., Ltd. Wearable device and execution of application in wearable device
US20180253205A1 (en) * 2014-10-16 2018-09-06 Samsung Electronics Co., Ltd. Wearable device and execution of application in wearable device
US20160132344A1 (en) * 2014-11-07 2016-05-12 Roku, Inc. System and method for fast starting an application
US10114661B2 (en) * 2014-11-07 2018-10-30 Roku, Inc. System and method for fast starting an application
US10152299B2 (en) * 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US20160259623A1 (en) * 2015-03-06 2016-09-08 Apple Inc. Reducing response latency of intelligent automated assistants
US11231904B2 (en) 2015-03-06 2022-01-25 Apple Inc. Reducing response latency of intelligent automated assistants
US11087759B2 (en) 2015-03-08 2021-08-10 Apple Inc. Virtual assistant activation
US10311871B2 (en) 2015-03-08 2019-06-04 Apple Inc. Competing devices responding to voice triggers
US10529332B2 (en) 2015-03-08 2020-01-07 Apple Inc. Virtual assistant activation
US11842734B2 (en) 2015-03-08 2023-12-12 Apple Inc. Virtual assistant activation
US10930282B2 (en) 2015-03-08 2021-02-23 Apple Inc. Competing devices responding to voice triggers
US11693506B2 (en) 2015-04-13 2023-07-04 Huawei Technologies Co., Ltd. Method, apparatus, and device for enabling task management interface
CN111552416A (en) * 2015-04-13 2020-08-18 华为技术有限公司 Method, device and equipment for starting task management interface
US12001933B2 (en) 2015-05-15 2024-06-04 Apple Inc. Virtual assistant in a communication session
US11468282B2 (en) 2015-05-15 2022-10-11 Apple Inc. Virtual assistant in a communication session
US11070949B2 (en) 2015-05-27 2021-07-20 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on an electronic device with a touch-sensitive display
US11127397B2 (en) 2015-05-27 2021-09-21 Apple Inc. Device voice control
US10681212B2 (en) 2015-06-05 2020-06-09 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10264319B2 (en) * 2015-06-07 2019-04-16 Apple Inc. Priming media applications and presenting primed media application data
US20160360271A1 (en) * 2015-06-07 2016-12-08 Apple Inc. Priming media applications
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US10805683B2 (en) 2015-06-07 2020-10-13 Apple Inc. Priming media applications and presenting primed media application data
US11947873B2 (en) 2015-06-29 2024-04-02 Apple Inc. Virtual assistant for media playback
US11010127B2 (en) 2015-06-29 2021-05-18 Apple Inc. Virtual assistant for media playback
US11159646B1 (en) 2015-07-13 2021-10-26 Amazon Technologies, Inc. Identifying, presenting, and launching preferred applications on virtual desktop instances
US10101904B2 (en) * 2015-08-04 2018-10-16 Lg Electronics Inc. Mobile terminal displaying execution screens for functions executing in the background
US11126400B2 (en) 2015-09-08 2021-09-21 Apple Inc. Zero latency digital assistant
US11853536B2 (en) 2015-09-08 2023-12-26 Apple Inc. Intelligent automated assistant in a media environment
US11550542B2 (en) 2015-09-08 2023-01-10 Apple Inc. Zero latency digital assistant
US11954405B2 (en) 2015-09-08 2024-04-09 Apple Inc. Zero latency digital assistant
US11500672B2 (en) 2015-09-08 2022-11-15 Apple Inc. Distributed personal assistant
US11809483B2 (en) 2015-09-08 2023-11-07 Apple Inc. Intelligent automated assistant for media search and playback
US10936340B2 (en) * 2015-10-02 2021-03-02 Samsung Electronics Co., Ltd. Apparatus and method for performing selective application preloading in electronic device
KR20170039999A (en) * 2015-10-02 2017-04-12 삼성전자주식회사 Apparatus and method for executing application in electronic deivce
KR102401772B1 (en) * 2015-10-02 2022-05-25 삼성전자주식회사 Apparatus and method for executing application in electronic deivce
EP3358461A4 (en) * 2015-10-02 2019-06-12 Samsung Electronics Co., Ltd. Apparatus and method for performing application in electronic device
US20180293087A1 (en) * 2015-10-02 2018-10-11 Samsung Electronics Co., Ltd. Apparatus and method for performing application in electronic device
US11809886B2 (en) 2015-11-06 2023-11-07 Apple Inc. Intelligent automated assistant in a messaging environment
US11526368B2 (en) 2015-11-06 2022-12-13 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US11886805B2 (en) 2015-11-09 2024-01-30 Apple Inc. Unconventional virtual assistant interactions
US10769189B2 (en) 2015-11-13 2020-09-08 Microsoft Technology Licensing, Llc Computer speech recognition and semantic understanding from activity patterns
US11429883B2 (en) 2015-11-13 2022-08-30 Microsoft Technology Licensing, Llc Enhanced computer experience from activity prediction
US10354652B2 (en) 2015-12-02 2019-07-16 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US11853647B2 (en) 2015-12-23 2023-12-26 Apple Inc. Proactive assistance based on dialog communication between devices
US10942703B2 (en) 2015-12-23 2021-03-09 Apple Inc. Proactive assistance based on dialog communication between devices
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US11069347B2 (en) 2016-06-08 2021-07-20 Apple Inc. Intelligent automated assistant for media exploration
US10747467B2 (en) 2016-06-10 2020-08-18 Apple Inc. Memory management for application loading
US10733993B2 (en) 2016-06-10 2020-08-04 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US11150696B2 (en) 2016-06-10 2021-10-19 Apple Inc. Enhanced application preview mode
US10520979B2 (en) 2016-06-10 2019-12-31 Apple Inc. Enhanced application preview mode
US10725761B2 (en) 2016-06-10 2020-07-28 Apple Inc. Providing updated application data for previewing applications on a display
US11037565B2 (en) 2016-06-10 2021-06-15 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US11513557B2 (en) 2016-06-10 2022-11-29 Apple Inc. Enhanced application preview mode
US11657820B2 (en) 2016-06-10 2023-05-23 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US11152002B2 (en) 2016-06-11 2021-10-19 Apple Inc. Application integration with a digital assistant
US11749275B2 (en) 2016-06-11 2023-09-05 Apple Inc. Application integration with a digital assistant
US11809783B2 (en) 2016-06-11 2023-11-07 Apple Inc. Intelligent device arbitration and control
US10942702B2 (en) 2016-06-11 2021-03-09 Apple Inc. Intelligent device arbitration and control
US10580409B2 (en) 2016-06-11 2020-03-03 Apple Inc. Application integration with a digital assistant
US20180032374A1 (en) * 2016-08-01 2018-02-01 Intel Corporation Application launch booster
WO2018026469A3 (en) * 2016-08-01 2018-07-26 Intel Corporation Application launch booster
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
EP3506090A4 (en) * 2016-09-12 2019-09-04 Huawei Technologies Co., Ltd. Method and apparatus for quietly booting application in background, and terminal device
US10901779B2 (en) 2016-09-12 2021-01-26 Huawei Technologies Co., Ltd. Method and apparatus for silently starting application in background and terminal device
US10553215B2 (en) 2016-09-23 2020-02-04 Apple Inc. Intelligent automated assistant
EP3508974A4 (en) * 2016-09-27 2019-08-07 Huawei Technologies Co., Ltd. Method and terminal for allocating system resource to application
US11360817B2 (en) * 2016-09-27 2022-06-14 Huawei Technologies Co., Ltd. Method and terminal for allocating system resource to application
KR102247384B1 (en) 2016-10-20 2021-04-30 후아웨이 테크놀러지 컴퍼니 리미티드 Application startup control method and control device
KR20190058610A (en) * 2016-10-20 2019-05-29 후아웨이 테크놀러지 컴퍼니 리미티드 Application startup control method and control device
AU2021202560B2 (en) * 2016-10-20 2023-02-02 Huawei Technologies Co., Ltd. Application startup control method and control device
US11474831B2 (en) * 2016-10-20 2022-10-18 Huawei Technologies Co., Ltd. Application startup control method and control device
EP3528113A4 (en) * 2016-10-20 2019-11-20 Huawei Technologies Co., Ltd. Control method and control apparatus for starting of application
AU2017347578B2 (en) * 2016-10-20 2021-01-28 Huawei Technologies Co., Ltd. Control method and control apparatus for starting of application
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US11169827B2 (en) * 2016-12-19 2021-11-09 Tencent Technology (Shenzhen) Company Limited Resource loading at application startup using attributes of historical data groups
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US11656884B2 (en) 2017-01-09 2023-05-23 Apple Inc. Application integration with a digital assistant
US20180217850A1 (en) * 2017-01-30 2018-08-02 Citrix Systems, Inc. Computer system providing cloud-based session prelaunch features and related methods
US10860342B2 (en) * 2017-01-30 2020-12-08 Citrix Systems, Inc. Computer system providing cloud-based session prelaunch features and related methods
US20200016488A1 (en) * 2017-02-20 2020-01-16 Sony Interactive Entertainment Inc. Game application launch system and method
US11123635B2 (en) * 2017-02-20 2021-09-21 Sony Interactive Entertainment Inc. Game application launch system and method
WO2018201948A1 (en) * 2017-05-01 2018-11-08 Huawei Technologies Co., Ltd. Using machine learning to estimate query resource consumption in mppdb
CN110537175A (en) * 2017-05-01 2019-12-03 华为技术有限公司 It is consumed using the query resource in machine learning estimation MPPDB
US11537615B2 (en) 2017-05-01 2022-12-27 Futurewei Technologies, Inc. Using machine learning to estimate query resource consumption in MPPDB
US10741181B2 (en) 2017-05-09 2020-08-11 Apple Inc. User interface for correcting recognition errors
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US10332518B2 (en) 2017-05-09 2019-06-25 Apple Inc. User interface for correcting recognition errors
US11467802B2 (en) 2017-05-11 2022-10-11 Apple Inc. Maintaining privacy of personal information
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US11599331B2 (en) 2017-05-11 2023-03-07 Apple Inc. Maintaining privacy of personal information
US10847142B2 (en) 2017-05-11 2020-11-24 Apple Inc. Maintaining privacy of personal information
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
US11405466B2 (en) 2017-05-12 2022-08-02 Apple Inc. Synchronization and task delegation of a digital assistant
US11380310B2 (en) 2017-05-12 2022-07-05 Apple Inc. Low-latency intelligent automated assistant
US10789945B2 (en) 2017-05-12 2020-09-29 Apple Inc. Low-latency intelligent automated assistant
US11837237B2 (en) 2017-05-12 2023-12-05 Apple Inc. User-specific acoustic models
US11862151B2 (en) 2017-05-12 2024-01-02 Apple Inc. Low-latency intelligent automated assistant
US11580990B2 (en) 2017-05-12 2023-02-14 Apple Inc. User-specific acoustic models
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
US11538469B2 (en) 2017-05-12 2022-12-27 Apple Inc. Low-latency intelligent automated assistant
US12014118B2 (en) 2017-05-15 2024-06-18 Apple Inc. Multi-modal interfaces having selection disambiguation and text modification capability
US11675829B2 (en) 2017-05-16 2023-06-13 Apple Inc. Intelligent automated assistant for media exploration
US11532306B2 (en) 2017-05-16 2022-12-20 Apple Inc. Detecting a trigger of a digital assistant
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US10748546B2 (en) 2017-05-16 2020-08-18 Apple Inc. Digital assistant services based on device capabilities
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
US10909171B2 (en) 2017-05-16 2021-02-02 Apple Inc. Intelligent automated assistant for media exploration
US12026197B2 (en) 2017-06-01 2024-07-02 Apple Inc. Intelligent automated assistant for media exploration
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US20200241917A1 (en) * 2017-10-13 2020-07-30 Huawei Technologies Co., Ltd. Resource management method and terminal device
US11693693B2 (en) * 2017-10-13 2023-07-04 Huawei Technologies Co., Ltd. Resource management based on ranking of importance of applications
US11429880B2 (en) * 2017-11-06 2022-08-30 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Methods and systems for preloading applications and generating prediction models
EP3480692A1 (en) * 2017-11-06 2019-05-08 Guangdong OPPO Mobile Telecommunications Corp., Ltd. Methods and systems for preloading applications and generating prediction models
US11314526B2 (en) * 2017-11-08 2022-04-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application prediction method, application preloading method, and application preloading apparatus based on application usage timing
US20190155619A1 (en) * 2017-11-20 2019-05-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for Preloading Application, Terminal Device, and Medium
WO2019095802A1 (en) * 2017-11-20 2019-05-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, terminal device, and medium
US11042386B2 (en) * 2017-11-20 2021-06-22 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, terminal device, and medium
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US20190188012A1 (en) * 2017-12-14 2019-06-20 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method, device, terminal and storage medium for processing application
EP3502878A1 (en) * 2017-12-20 2019-06-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for preloading application and terminal device
US20190188000A1 (en) * 2017-12-20 2019-06-20 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for Preloading Application, Computer Readable Storage Medium, and Terminal Device
US10908920B2 (en) * 2017-12-20 2021-02-02 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, computer readable storage medium, and terminal device
EP3502879A1 (en) * 2017-12-20 2019-06-26 Guangdong OPPO Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal device
US10552177B2 (en) 2017-12-20 2020-02-04 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal device
US10891142B2 (en) * 2017-12-21 2021-01-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and device for preloading application, storage medium, and terminal device
EP3502889A1 (en) * 2017-12-21 2019-06-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method and device for preloading application, storage medium, and terminal device
US20190196849A1 (en) * 2017-12-21 2019-06-27 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and Device for Preloading Application, Storage Medium, and Terminal Device
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US11481229B2 (en) * 2018-02-28 2022-10-25 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for application processing, storage medium, and electronic device
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US11915012B2 (en) * 2018-03-05 2024-02-27 Tensera Networks Ltd. Application preloading in the presence of user actions
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
US20220179668A1 (en) * 2018-03-05 2022-06-09 Tensera Networks Ltd. Robust Application Preloading with Accurate User Experience
US20200401418A1 (en) * 2018-03-05 2020-12-24 Tensera Networks Ltd. Application preloading in the presence of user actions
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US11710482B2 (en) 2018-03-26 2023-07-25 Apple Inc. Natural assistant interaction
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
EP3726378A4 (en) * 2018-04-28 2021-05-19 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application program pre-loading method and apparatus, and storage medium and terminal
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11900923B2 (en) 2018-05-07 2024-02-13 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11907436B2 (en) 2018-05-07 2024-02-20 Apple Inc. Raise to speak
US11169616B2 (en) 2018-05-07 2021-11-09 Apple Inc. Raise to speak
US11854539B2 (en) 2018-05-07 2023-12-26 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11487364B2 (en) 2018-05-07 2022-11-01 Apple Inc. Raise to speak
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11086663B2 (en) 2018-05-10 2021-08-10 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Preloading application using active window stack
EP3567477A1 (en) * 2018-05-10 2019-11-13 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for preloading application, storage medium, and terminal
US11397590B2 (en) * 2018-05-10 2022-07-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal
US11442747B2 (en) * 2018-05-10 2022-09-13 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for establishing applications-to-be preloaded prediction model based on preorder usage sequence of foreground application, storage medium, and terminal
US11604660B2 (en) 2018-05-15 2023-03-14 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for launching application, storage medium, and terminal
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
EP3572936A1 (en) * 2018-05-22 2019-11-27 Beijing Xiaomi Mobile Software Co., Ltd. Method, terminal and computer-readable storage medium for displaying interface of application program
US11099861B2 (en) * 2018-05-29 2021-08-24 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal
EP3579104A1 (en) * 2018-05-29 2019-12-11 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and apparatus for establishing an application prediction model, storage medium and terminal
EP3575963A3 (en) * 2018-05-29 2020-02-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for preloading application, storage medium, and terminal
EP3575962A1 (en) * 2018-05-29 2019-12-04 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method and device for preloading application, storage medium and intelligent terminal
US11009970B2 (en) 2018-06-01 2021-05-18 Apple Inc. Attention aware virtual assistant dismissal
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US11431642B2 (en) 2018-06-01 2022-08-30 Apple Inc. Variable latency device coordination
US11360577B2 (en) 2018-06-01 2022-06-14 Apple Inc. Attention aware virtual assistant dismissal
US10720160B2 (en) 2018-06-01 2020-07-21 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US11630525B2 (en) 2018-06-01 2023-04-18 Apple Inc. Attention aware virtual assistant dismissal
US11495218B2 (en) 2018-06-01 2022-11-08 Apple Inc. Virtual assistant operation in multi-device environments
US10403283B1 (en) 2018-06-01 2019-09-03 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10684703B2 (en) 2018-06-01 2020-06-16 Apple Inc. Attention aware virtual assistant dismissal
US10984798B2 (en) 2018-06-01 2021-04-20 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10496705B1 (en) 2018-06-03 2019-12-03 Apple Inc. Accelerated task performance
US10504518B1 (en) 2018-06-03 2019-12-10 Apple Inc. Accelerated task performance
US10944859B2 (en) 2018-06-03 2021-03-09 Apple Inc. Accelerated task performance
WO2019233354A1 (en) * 2018-06-05 2019-12-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application preloading method and device, storage medium and terminal
US11467855B2 (en) 2018-06-05 2022-10-11 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Application preloading method and device, storage medium and terminal
CN109240763A (en) * 2018-08-20 2019-01-18 奇酷互联网络科技(深圳)有限公司 Application program accelerates method, mobile terminal and the storage medium of starting
US11216330B2 (en) 2018-08-27 2022-01-04 Samsung Electronics Co., Ltd. Methods and systems for managing an electronic device
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11893992B2 (en) 2018-09-28 2024-02-06 Apple Inc. Multi-modal inputs for voice commands
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11783815B2 (en) 2019-03-18 2023-10-10 Apple Inc. Multimodality in digital assistant systems
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11153373B2 (en) 2019-05-03 2021-10-19 EMC IP Holding Company LLC Method and system for performance-driven load shifting
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11675491B2 (en) 2019-05-06 2023-06-13 Apple Inc. User configurable task triggers
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11217251B2 (en) 2019-05-06 2022-01-04 Apple Inc. Spoken notifications
US11705130B2 (en) 2019-05-06 2023-07-18 Apple Inc. Spoken notifications
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11888791B2 (en) 2019-05-21 2024-01-30 Apple Inc. Providing message response suggestions
US11360739B2 (en) 2019-05-31 2022-06-14 Apple Inc. User activity shortcut suggestions
US11657813B2 (en) 2019-05-31 2023-05-23 Apple Inc. Voice identification in digital assistant systems
US11237797B2 (en) 2019-05-31 2022-02-01 Apple Inc. User activity shortcut suggestions
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
US11790914B2 (en) 2019-06-01 2023-10-17 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11824956B2 (en) 2019-07-30 2023-11-21 Tensera Networks Ltd. Pre-rendering of application user-interfaces in user devices using off-line pre-render mode
US11488406B2 (en) 2019-09-25 2022-11-01 Apple Inc. Text detection using global geometry estimators
US11599384B2 (en) 2019-10-03 2023-03-07 Micron Technology, Inc. Customized root processes for individual applications
US11436041B2 (en) 2019-10-03 2022-09-06 Micron Technology, Inc. Customized root processes for groups of applications
WO2021067424A1 (en) 2019-10-03 2021-04-08 Micron Technology, Inc. Customized root processes for individual applications
US11474828B2 (en) 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
WO2021067427A1 (en) * 2019-10-03 2021-04-08 Micron Technology, Inc. Customized root processes for groups of applications
US11429445B2 (en) 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
US20210240801A1 (en) * 2020-02-03 2021-08-05 Arris Enterprises Llc Digital rights management system resource manager
US11366752B2 (en) 2020-03-19 2022-06-21 Micron Technology, Inc. Address mapping between shared memory modules and cache sets
US20210342192A1 (en) * 2020-04-29 2021-11-04 Dell Products L.P. Systems And Methods For Optimizing Perceived Software Application Load Delays
US11924254B2 (en) 2020-05-11 2024-03-05 Apple Inc. Digital assistant hardware abstraction
US11765209B2 (en) 2020-05-11 2023-09-19 Apple Inc. Digital assistant hardware abstraction
US11914848B2 (en) 2020-05-11 2024-02-27 Apple Inc. Providing relevant data items based on context
US11838734B2 (en) 2020-07-20 2023-12-05 Apple Inc. Multi-device audio adjustment coordination
US11750962B2 (en) 2020-07-21 2023-09-05 Apple Inc. User identification using headphones
US11696060B2 (en) 2020-07-21 2023-07-04 Apple Inc. User identification using headphones
WO2022055538A1 (en) * 2020-09-09 2022-03-17 Google Llc Pre-launching an application using interprocess communication
US11734023B2 (en) 2020-12-03 2023-08-22 Tensera Networks Ltd. Preloading of applications having an existing task
US11836087B2 (en) 2020-12-23 2023-12-05 Micron Technology, Inc. Per-process re-configurable caches
CN113220552A (en) * 2021-05-12 2021-08-06 湖北亿咖通科技有限公司 Method and electronic equipment for limiting application operation number in vehicle-mounted information entertainment system
CN115617421A (en) * 2022-12-05 2023-01-17 深圳市欧瑞博科技股份有限公司 Intelligent process scheduling method and device, readable storage medium and embedded equipment

Also Published As

Publication number Publication date
WO2014200547A1 (en) 2014-12-18
EP3008589A1 (en) 2016-04-20
CN105431822A (en) 2016-03-23
US9508040B2 (en) 2016-11-29
CN105431822B (en) 2019-02-22

Similar Documents

Publication Publication Date Title
US9508040B2 (en) Predictive pre-launch for applications
US10936358B2 (en) Initiating background updates based on user activity
US9392393B2 (en) Push notification initiated background updates
US9603094B2 (en) Non-waking push notifications
US20200241917A1 (en) Resource management method and terminal device
US20140366041A1 (en) Dynamic Adjustment of Mobile Device Based on User Activity
EP3401787B1 (en) Analyzing resource utilization of a cloud computing resource in a cloud computing environment
EP3008592B1 (en) Pre-fetching content for service-connected applications
JP7241729B2 (en) Resource scheduling method, device, facility, storage medium, and program
CN106415296B (en) Adaptive battery life extension
AU2015229885B2 (en) Resource management based on device-specific or user-specific resource usage profiles
KR101551611B1 (en) Method for preemptively restarting software in a multisubsystem mobile communication device to increase mean time between failures
US9335815B2 (en) Method and system for battery power saving
US20120324481A1 (en) Adaptive termination and pre-launching policy for improving application startup time
US8166145B2 (en) Managing event-based conditional recurrent schedules
US10198059B2 (en) Adaptive doze to hibernate
US10248321B1 (en) Simulating multiple lower importance levels by actively feeding processes to a low-memory manager
US10275007B2 (en) Performance management for a multiple-CPU platform
US10776050B2 (en) Systems and methods for improved write filter operation with provision for monitoring and prediction to delay system reboot
US20220269328A1 (en) Application program freezing control method and apparatus, terminal, and readable storage medium
US12032429B2 (en) Application program freezing control method and apparatus, terminal, and readable storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BILAL, AHMAD;IYIGUN, MEHMET;KRALJ, MILOS;AND OTHERS;SIGNING DATES FROM 20130506 TO 20130611;REEL/FRAME:030595/0150

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034747/0417

Effective date: 20141014

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:039025/0454

Effective date: 20141014

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8