Pre-instituting native applications in the background
Patent Information
- Application Number
- DE112016004130
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2016-11-15
- Filing Date
- 2016-11-15
- Publication Date
- 2026-09-17
- Estimated Expiration
- 2036-11-15
AI Technical Summary
Existing search systems for native applications on devices experience latency and resource overhead due to the need for manual instantiation upon user selection of deep links, disrupting user experience and device performance.
Pre-instantiate native applications in the background based on detected deep links in search results, managing instances independently of browser applications, and terminate unused instances upon user interaction or event triggers to optimize resource usage.
Reduces latency and conserves device resources by pre-instantiating native applications without user awareness, ensuring seamless transitions and efficient resource management.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[0001] The internet provides access to a wide variety of information. For example, digital image files, video and / or audio files, as well as website resources on specific topics or specific news articles are accessible via the internet.
[0002] Furthermore, with the introduction of tablet computers and smartphones, native applications that support the same functionality as those supported by website resources are now widely available. Additionally, native applications that do not rely on websites with such synchronous content, such as games and other applications, are also very popular on tablet computers and smartphones. Consequently, search systems now also support searching such native applications.
[0003] One process by which search systems gather information for native applications is through accessing "deep links" for those native applications. A deep link is a directive that specifies a particular environment instance of a native application and is configured to cause the native application to instantiate that environment instance when selected on a user device. The native application then creates the environment instance for display within the native application on the user device. Summary
[0004] This application describes technologies relating to the pre-instantiation of native applications in the background when a deep link to the pre-instantiated native applications is present in a set of search results.
[0005] In general, an innovative aspect of the subject matter described in this application can be realized in a process that includes the action of receiving a set of results, for example, a set of search results, wherein a set of results contains each a deep link of a native application, instantiating an instance of a native application, wherein a native application creates environment instances for display on a user device within the native application, and the native application operates independently of a browser application running on the user device; selecting, prior to a user selection, a result from deep links of the native application from among the results; instantiating, for each deep link of a native application selected in the selection prior to the user selection, a background instance of the native application corresponding to the link of the native application;Determine, in response to the occurrence of a background discharge event, background instances of the native application that were instantiated from the deep links of the native application and that were not brought to the foreground prior to the occurrence of the background discharge event;and includes the termination of at least some, and preferably all, of the background instances of the instantiated native applications that were not brought to the foreground before the occurrence of the background discharge event. Other embodiments of this aspect include corresponding systems, devices, and computer programs configured to execute the actions of the methods encoded on computer storage devices. Another embodiment of this aspect includes a computer-readable storage medium comprising instructions which, when executed by a data processing device, cause the data processing device to perform operations comprising a method of the invention.
[0006] Specific embodiments of the subject matter described in this application may be implemented to realize one or more of the following advantages. The present system enables background pre-instantiation of a native application. This background pre-instantiation occurs without interfering with or interrupting the user's ability to use their device. Pre-instantiation of the native application reduces latency for a user when they select a deep link corresponding to a specific native application. Furthermore, the automated termination of pre-instantiated native applications for search results of native applications that were not selected automatically releases resources of the user's device without user intervention.Thus, the reduced latency that occurs when a user selects a search result from native applications for which an application is pre-instantiated does not come with the associated overhead of exiting a number of native applications instantiated in the background after the user navigates away from the search environment.
[0007] The details of one or more embodiments of the subject matter described in this application are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will be apparent from the description, the drawings, and the claims. List of characters Fig. 1A is a block diagram of a sample environment in which native applications are instantiated in the background and brought to the foreground. Fig. 1B is a block diagram of a user device configured to pre-instantiate native applications from search results of native applications. Fig. Figure 2 is a flowchart that describes a process for instantiating background instances of native applications.
[0008] Identical reference symbols and designations in the different drawings indicate identical elements. Detailed description
[0009] A system receives a set of search results that are the answer to a search query. Deep links are present within this set of search results. The system detects the presence of these deep links and pre-instantiates the native applications corresponding to each deep link within the search results in the background of a user device. As used here, a native application creates environment instances for display on a user device within the native application's environment and operates independently of any browser application on the user device. A native application is an application specifically designed to run on a particular user device operating system and machine firmware. Native applications thus differ from browser-based applications and resources rendered in a browser.The latter require that all or at least some elements or instructions be downloaded from a web server each time they are instantiated or rendered. Furthermore, browser-based applications and resources rendered in the browser can be processed by all web-enabled mobile devices within the browser and are therefore not operating system specific.
[0010] A deep link is a directive that specifies a particular environment instance of a native application and is configured to cause the native application to instantiate the environment instance of the specified native application when it is selected on a user device. The native application then creates the environment instance for display within the native application on the user device. For example, a deep link might specify a selection menu for a game environment; content from a website, such as a news site, forum, and the like; a specific recipe for a cooking application; and so on.
[0011] The system and procedures in this application perform a pre-instantiation of an environment instance of a native application to reduce latency for users who want to open the native application. In one implementation, in response to receiving a set of search results containing one or more deep links, the system identifies the one or more deep links present in the search results and pre-launches or pre-instantiates the environment instance for the native applications corresponding to the one or more deep links. When the native application is pre-instantiated, it is launched in the background of the user's device, so the user does not perceive the pre-instantiation.
[0012] In some implementations, when a user selects a deep link from the search results, the pre-instantiated environment instance of the native application is brought to the foreground, and any other pre-instantiated environment instances are terminated. In other implementations, if the system initiates an unload event, all pre-instantiated environment instances of the native application are terminated.
[0013] These features and additional features are described in more detail below.
[0014] Fig. 1A is a block diagram of a sample environment 100 , in which native applications are instantiated in the background and brought to the foreground. A computer network 101 , such as the Internet, connects websites 104 from resource publishers, application publishers 106 , user devices 108 and a search system 110 .
[0015] A website 104a resource publisher contains one or more web resources 105 , which are assigned to a domain and hosted by one or more servers in one or more locations. Generally, a resource publisher's website is a collection of web pages formatted in Hypertext Markup Language (HTML), which may include text, images, multimedia content, and programming elements. Each website is maintained by a content publisher, which is an entity that manages the website. 104 controls, manages and / or owns it.
[0016] A website resource is any data provided by a publisher's website. 104 via the network 102Web resources can be provided and have a resource address, such as a Uniform Resource Locator (URL). Examples include HTML pages, image files, video files, audio files, and feed resources. Resources can contain embedded information, such as metadata and hyperlinks, and / or embedded instructions, such as client-side scripts.
[0017] A website 106 An application publisher may also include one or more web resources 105 It includes and also provides native applications 107. As described above, a native application is 107An application specifically designed to run on a particular user device operating system and machine firmware. As used in this application, an "environment instance" is a display environment within a native application where content such as text, images, and the like is displayed. An environment instance is specific to the particular native application, and the native application is specific to the user device's operating system. 108a Specific. An environment instance differs from the rendered web resource in that the environment instance is created within the native application and is specific to it, whereas a web resource can be rendered in any browser with which the web page resource is compatible and is independent of the user device's operating system.
[0018] A user device 108aA device is an electronic device that is controlled by a user. A user device 108a is typically capable of accessing website resources 105 and native applications 107 via the network 102 to request and receive. Example user devices 108a This includes personal computers, mobile communication devices, and tablet computers.
[0019] To use web resources 105 and the native applications 107 To search, the search system 110 on a web index 112 and an application index 114 to. The web index 112 is an index of web resources 105 and is, for example, possible by crawling the publisher websites. 104 The application index has been established. 114 is an index of environment instances for native applications 107 and is done using an indexer 114 , which receives data from an application instance122 They are constructed and crawled by a native application. Although they are shown as separate indexes, the web index can be used in conjunction with other indexes. 112 and the application index 114 be combined in a single index.
[0020] The user device 108a It transmits search queries to search system 110. In response to each query, the search system... 110 to the web index 112 and the application index 114 to identify resources and applications relevant to the query. The search system 110 For example, it can identify resources and applications in the form of search results for web resources or search results for native applications. Once generated, the search results are made available to the user device 108a from which the query was received.
[0021] A search result for web resources is data that has been processed by the search system. 110These results are generated by identifying a web resource and providing information that satisfies a specific search query. A web resource search result for a resource can include a web page title, a text snippet extracted from the resource, and a resource locator for the resource, such as a web page URL. A native application search result specifies a native application and is generated in response to a search in the application index. 114 The environment instances are created. A search result for native applications contains a "deep link" that specifies a particular environment instance of a native application and is configured to cause the native application to instantiate the specified environment instance. For example, selecting a search result for native applications can cause the native application to start (if it is installed on the user's device). 108(is installed) and creates an environment instance that is referenced in the application's search result in the form of a screenshot.
[0022] As described above, the publishers 106 , the native applications 107 provide, including deep links for the search system 110 ready. In addition, third parties can also provide deep links for native applications. Additionally, the search system can 110 Deep links can be found from multiple sources, such as app maps, website comments, etc., and therefore the number of deep links can constantly change. For example, an application publisher might maintain a list of deep links. 109 in the form of Uniform Resource Identifiers (URIs) (or other statement types specific to the native application published by the publisher). These deep links are deep links from which the publisher 106want them to be crawled and included in the application index 114 be indexed.
[0023] A deep link can specify the name of a native application and can include optional parameters, e.g.<app_name> : / / <params>These optional parameters can cause the native application to instantiate in a specific state, such as a particular screen, menu, or environment within the native application. For example, for the native application "Example_App", a deep link to easily launch the native application could be the application name without any parameters: Example_App
[0024] However, if a search result of the native application specifies special information or a special state for the native application, this special information or state can be specified by parameters. For example, for the application that should instantiate itself to a specific news story with a unique ID News123245, the deep link could be: Example_App: / / News12345
[0025] A user can perform a search query on a user device 108a submit a search results page 117 will return the search results 118a , 118c and 118n for web resources and search results 118b , 118d and 118e for native applications. The system detects deep links within the search results. 118b , 118d and 118e for native applications that appear on the search results page 117 be presented, and begins native applications 120 , which appear in the search results 118b , 118d and 118e for native applications, running in the background of the user's device 108a to pre-instantimate. In some implementations, the native application instance pre-instantiated in the background has 120 It does not have an active viewport that a user can see or interact with. Thus, although the native application 107 Once started and running, it is instantiated in such a way that the user does not notice that the native application is running.
[0026] Fig. 1B is a block diagram of a user device 108a , which is configured to pre-instantiate native applications from search results of native applications. The user device's operating system. 117 In some implementations, native applications detected in deep links are configured to start in the background. For example, instructions that use a background launcher can be used. 140 Define for deep links, which must be included in the operating system. Alternatively, the instructions for the background launcher can be used. 140 Deep links can be implemented through another native application that a user launches to process the search results for native applications, as described below. In even more comprehensive implementations, the instructions for launching this application in the background can be... 140 for deep links in any search results page or resource that contains a deep link from a native application. In yet other implementations, the starter may 140 in the search system 110 It is implemented and configured to modify the deep links if necessary to cause the user device 108a The native user device is pre-instantiated after processing the deep link.
[0027] As described below, the background launcher 140 configured for deep links to determine when native applications should be pre-instantiated, which deep links should be processed to pre-instantiate native applications, and when the native applications that have been pre-instantiated should be terminated.
[0028] In some implementations, starting the process in the background can be done by appending a command-line parameter to the deep link and then processing the deep link, e.g. Example_App: / / News12345&-bg
[0029] The `-bg` parameter is a command-line parameter that causes the native application to start in the background. Other processes can also be used to start a native application in the background.
[0030] In some implementations, the number of pre-instantiated native applications (107) is determined based on constraints. For example, the number of pre-instantiated native application instances might be limited. 120 depend on the size of available system resources to prevent overloading the user device's resources (e.g., RAM, space in a drive, processing capacity, etc.).
[0031] Additionally, the background launcher can 140 For deep links, limit the number of active pre-instantiated native applications based on a ranking threshold. For example, the ranking threshold could be based on the ranking position of a deep link within the search results. To illustrate this, let's assume a ranking threshold represents a ranking position 5 is. Any search result for native applications at the order positions. 1 - 5 It is therefore selected for pre-instantiation, and any item at an order position greater than 5 is not selected. The background launcher 140 For deep links, selects deep links from native applications from the search results before a user selects a search result. 118b , 118d and 118e for native applications, since their order positions 2 , 4 or 5 are. Thus, each search result for native applications is placed in a suitable subset with the highest ranking of search results. 117 , which meets the ranking threshold, were selected for pre-instantiation.
[0032] In some implementations, the ranking threshold can be based additionally or alternatively on user behavior signals for the native applications. These user behavior signals can, for example, specify the likelihood of a user clicking on a deep link, based on the time of day, day of the week, or other predictive variables. Thus, the system can select the number of pre-instantiated native application instances. 120 to limit the results to only those with deep links that the user is most likely to select. The search system 110 can access user history data to determine a probability for each deep link and provide the probability for the background launcher for deep links.
[0033] In other implementations, the ranking threshold is additionally or alternatively based on a minimum relevance score for a search query. The search system can generate a relevance score for a deep link based on how relevant the deep link is to the search query. A relevance score can be determined by the number of times a deep link is clicked in response to a similar search query, a measure of the terms' relevance to the native application, or any other relevance scoring mechanism. The relevance score can be used for the background launcher. 140 provided for deep links so that the starter 140 can make the determination.
[0034] The starter 140 selects which native application(s) 107 to be pre-instantiated based on the selected corresponding deep links in the search results page 117 In some implementations, the starter sends 140 A "start" event with a unique identifier and an expiration time is sent to the user device's operating system to pre-instantiate the native application instances in the background. An expiration time is a predefined period that is applied to the pre-instantiated native application. 120 is applied, which defines a time period for which the pre-instantiated native application 120 It runs without user interaction before the pre-instantiated native application instance terminates. Further details regarding the expiration time and termination can be found in [link to relevant documentation]. 122 Information relating to the pre-instantiated native application instance is provided below.
[0035] In some implementations, for each deep link that is made through the starter 140 When selected and pre-instantiated, a unique identifier is generated that corresponds to the specific instance of the native application. 107 and corresponds to the respective deep link. In some implementations, the unique identifier is generated by applying a hash function to the deep link. For example, the hash function can be applied to a native application identifier and a Uniform Resource Indicator. The starter pre-instantiates the background instance of the native application using the unique identifier to identify each active instantiation. After a user selects a search result for native applications with a deep link, the starter receives 140 the selection and determines whether the native application 107 , which corresponds to the deep link of the native application, has been pre-instantiated, that is, in a native background application instance 120 has been instantiated. If the native application 107 Having been instantiated in the background, the user's selection of the deep link causes the native application, which was instantiated in the background instance, to be placed in a foreground instance on the user's device. 108b transitions. A foreground instance of the native application. 107 It has an active viewport that is visible and with which the user can easily interact. Because the native application has been pre-instantiated, the transition to the foreground occurs with much less latency than would be the case if the native application were launched after the user selection. (If the native application 107 (If the application selected by the user has not been pre-instantiated in the background, the native application will be opened by starting the native application in the conventional way.)
[0036] In implementations that generate a unique identifier, after the user selects a deep link, the system sends an "Open" event with that unique identifier to cause the native application to move to the foreground instance. If a native application with the same unique identifier is not pre-instantiated in the background, the native application is opened by launching it.
[0037] In some implementations, a background discharge event can be triggered by the expiration of a timeout period, measured from the instantiation of the background instances. 120 of the native application. For example, pre-instantiated native application instances 120 , which are not brought to the foreground, ends 122 when the starter 140 an “unload” event is generated and, together with corresponding unique identifiers, linked to the native applications 107, which are active pre-instantiated instances. 120 exhibits, sends. There are various implementations that can cause the system to send an "unload" event to a native application. 107 sends. For example, if a user does not use a deep link within the expiration time, which is triggered by a "Start" event for a special pre-instantiated native application instance. 120 Once sent, interacting, a timer runs for the pre-instantiated native application instance. 120 off, and the starter 140 generates the background discharge event 142 This causes it to end. 122 the native applications 107 .
[0038] In other implementations, the background "unload" event occurs after a page containing the set of search results has been unloaded. 117 is displayed. A page can be "unloaded," for example, when a new set of search results is requested for a search, when a specific deep link is selected, or when a page is closed. For example, after a user selects a specific deep link, the "Open" event for the specific native application is triggered by the launcher. 140 generated, and an "unload" event is created for any other active pre-instantiated native application instances. 120 , which are not associated with the deep link selected by the user, to the starter 140 sent. Thus, when the native application is brought to the foreground, the other active pre-instantiated native applications are not sent. 120 finished.
[0039] Similarly, if a user navigates away from the search results page, an "unload" event is triggered by the launcher. 140 for all active pre-instantiated native application instances 120 generated to terminate instances 122.
[0040] In some implementations, a special native application can pre-instantiate multiple native application instances. 120 support, and the starter 140 can support multiple native application instances 120 for the specific native application 107 Pre-instantiate. Each instance can be assigned to a different section of the native application. 107 The instance is started based on the unique deep link used to launch it. For example, three different deep links with different parameters for a specific native application might result in a single native application instance. 120 to a main menu, another instance 120 The native application can be launched to a submenu, and another instance 120 can be launched to an editing environment within the native application.
[0041] The unique identifiers for the instances of native applications 107 can also be used to determine which instances should be terminated. When a native application is pre-instantiated, its corresponding unique identifier is stored in memory by the operating system. Subsequently, when a pre-instantiated native application is brought to the foreground, its corresponding unique identifier is removed from memory. When the background discharge signal is generated, any instances of native applications that have been pre-instantiated and still have a unique identifier stored in memory are terminated.
[0042] In the example where a native application 107 multiple native application instances 120 The starter can provide support, it arranges 140 The starter assigns a unique identifier to each instance (120). 140 For each native application that supports multiple instances of the native application, each of the generated unique identifiers is assigned to a corresponding unique instance of the native application. This allows the starter to 140 the correct native application instance 120 The system brings the application to the foreground when a user selects a specific deep link. Therefore, causing the native application instantiated in the background instance to move to a foreground instance only requires the unique instance of the native application to move to the foreground by using that unique instance's special identifier with the "open" event. This also allows the system to determine which pre-instantiated native application instances were not brought to the foreground before the background unload event occurs and to terminate those pre-instantiated native applications. Additionally, or alternatively, using the unique identifier for each instantiation allows the system to ignore any instances of a native application that were loaded and running in the background before the search operation.For example, a native application instance that has been minimized by the user prior to a search will not be terminated if another instance of the native application is pre-instantiated in response to a deep link of a native application provided in response to a search operation, but is not brought to the foreground before the background unload event occurs.
[0043] If a specific native application only supports a single instance of a native application on a user device, and multiple deep links for that specific native application appear in the search results, Starter 140 selects only a single deep link for that native application. For example, with regard to Fig. 1B Assume that the search results 118b and 118d For the native application, both deep links point to a chess program. The first deep link is for the search result. 118b linked to a book-opening environment within the native application, and the second deep link for the search result 118d linked to a game selection menu within the native application. Because the search result 118 one rank above the search result 118 The native application is pre-instantiated to the book-opening environment, and the deep link for the search result is... 118d will not be processed.
[0044] The background starter 140 Deep links can be provided with data describing which native applications support multiple instances and which only support single instances. For example, the search engine can 110 Provide a file that describes the native application's ability to support multiple instances. Using this information, the launcher can 140 Then process the deep links as described above.
[0045] Although the pre-instantiation of native application instances in relation to a search query and search results in response to a search query has been discussed, the pre-instantiation of native application instances can occur within any resource that contains a deep link. 109 an application. The starter 140 Can a native application instance, after detecting any deep link 109 pre-instantiate a native application. For example, within a film review application, there might be a deep link to watch the film, the cinema's location, and / or the film trailer. The launcher 140 can one or all of the native applications that use deep links 109 Pre-instantiate the elements that are present within the film criticism application.
[0046] Fig. 2 is a flowchart that shows a process 200 describes the process for instantiating background instances of native applications. 200 can be on a user device 108 be implemented.
[0047] The process 200 receives a set of search results in response to a search query ( 202 The set of search results includes search results that each contain a deep link. 109 a native application which, when invoked, creates an instance of the native application 107 instantiated. Additionally, a native application is created. 107 Environment instances for display on a user device within the native application, and the native application 107 It works independently of any browser application running on the user's device.
[0048] The process 200 selects deep links before a user selects a search result 109 native applications from the search results ( 204 As described above, the starter detects 140 deep links 109 native applications present within a set of search results select the deep links based on various constraints. After selecting the deep links, the launcher instantiates 140 For each selected deep link of a native application, a background instance 120 the native application, the deep link 109 corresponds to the native application ( 206 ).
[0049] The process 200 In response to the occurrence of a background discharge event, background instances of the native applications that were instantiated from the deep links of the native applications and that were not brought to the foreground before the occurrence of the background discharge event are determined ( 208 For example, if a pre-instantiated native application instance receives an "Open" event, this native application instance moves to the foreground in a viewport accessible to the user. The process then unloads the other active pre-instantiated native application instances. 200 each of the background instances of the instantiated native applications that were not brought to the foreground before the background discharge event occurred ( 210 ). Additional details of the implementation
[0050] In situations where the systems discussed here can collect or use personal information about users, users can be given the opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, occupation, user preferences, or current location), or to control whether and / or how content from the content server, which may be more relevant to the user, is received. Additionally, specific data can be processed in one or more ways before being stored or used, so that personally identifiable information is removed.For example, a user's identity can be handled so that no personally identifiable information can be determined for the user, or a user's geographic location can be generalized when location information is obtained (such as to the level of a city, postal code, or state) so that a specific location of the user cannot be determined. Thus, the user can have control over how information about them is collected and used by a content server.
[0051] Embodiments of the subject matter and operations described in this application may be implemented in a digital electronic circuit arrangement or in computer software, firmware, or hardware containing the structures disclosed in this application and their structural equivalents, or in combinations thereof. Embodiments of the subject matter described in this application may be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by or control of the operation of a data processing device.
[0052] A computer storage medium can be or include a computer-readable storage device, a computer-readable storage substrate, a storage array or device for direct or serial access, or a combination of one or more of these. Furthermore, while a computer storage medium is not a propagated signal, it can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be or include one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
[0053] The operations described in this application can be implemented as operations performed by a data processing unit on data stored on one or more computer-readable storage devices or received from other sources.
[0054] The term "data processing equipment" encompasses all types of equipment, devices, and machines for processing data, including, for example, a programmable processor, a computer, a system-on-a-chip, or several or combinations thereof. The equipment may include specialized logic circuitry, such as an FGPA (field-programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, the equipment may also include code that creates an execution environment for the computer program in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of these. The equipment and execution environment may implement various different computational model infrastructures, such as...Web services, infrastructures for distributed computing and grid computing.
[0055] A computer program (also called a program, software, software application, script, or code) can be written in any form of a programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be distributed in any form, such as a standalone program or as a module, component, subroutine, object, or any unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program may be contained in a section of a file that contains other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in several coordinated files (e.g.,A computer program can be stored in files that contain one or more modules, subroutines, or code snippets. A computer program can be distributed to run on one computer or on multiple computers located at one site or distributed across multiple sites and connected by a communication network.
[0056] The processes and logic sequences described in this application can be executed by one or more programmable processors, which run one or more computer programs to perform actions by manipulating input data and generating an output. The processes and logic sequences can also be executed by a special logic circuit arrangement, such as an FGPA (field-programmable gate array) or an ASIC (application-specific integrated circuit), and the setup can be implemented in this way.
[0057] Processors capable of executing a computer program include, for example, both general-purpose and specialized microprocessors, and any processor(s) of any type in a digital computer. Generally, a processor receives instructions and data from read-only memory or random-access memory, or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more storage devices for storing instructions and data. Generally, a computer will also include, or be operationally coupled to, one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, in order to receive data from them, transmit data to them, or both. However, a computer need not have such devices.Furthermore, a computer can be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a portable audio or video player, a game console, a global positioning system receiver (GPS receiver), or a portable storage device (e.g., a flash drive via the universal serial bus (USB flash drive)), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, such as semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices); magnetic disks (e.g., internal hard disks or removable disks); magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and memory may be augmented by or integrated within a specialized logic circuit arrangement.
[0058] To provide interaction for a user, embodiments of the subject matter described in this application can be implemented on a computer comprising a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user, and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other types of devices can also be used to provide interaction with a user; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual, audible, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.Additionally, a computer can interact with a user by sending documents to a device and receiving documents from a device used by the user; for example, by sending web pages to a web browser on a user's device in response to requests received by the web browser.
[0059] Embodiments of the subject matter described in this application may be implemented in a computer system that includes a backend component, such as a data server, or a middleware component, such as an application server, or a frontend component, such as a user computer, which has a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described in this application, or any combination of one or more such backend, middleware, or frontend components. The components of the system may be interconnected by any form or medium for digital data communication, such as a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), an internet (e.g., the Internet), and peer-to-peer networks (e.g., ad-hoc peer-to-peer networks).
[0060] The computing system can include users and servers. A user and a server are generally located remotely and typically interact via a communication network. The user-server relationship arises from the computer programs running on the respective computers, which establish a user-server relationship with each other. In some embodiments, a server sends data (e.g., an HTML page) to a user device (e.g., for the purpose of displaying the data to a user and receiving user input from a user interacting with the user device). Data generated in the user device (e.g., a result of a user interaction) can be received by the user device from the server.
[0061] Although this application contains many specific implementation details, these should not be interpreted as limitations on the scope of protection of any inventions or that which may be claimed, but rather as descriptions of features specific to particular embodiments of the particular inventions. Specific features described in this application in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented separately in several embodiments or in any suitable subcombination.Furthermore, although features described above as operating in specific combinations and initially even claimed as such, in some cases one or more features from a claimed combination may be removed from the combination, and the claimed combination may be directed to a subcombination or a variation of a subcombination.
[0062] Similarly, although operations are depicted in the drawings in a specific order, this should not be interpreted as requiring that such operations be performed in the specific order shown, or in sequential order, or that all depicted operations be performed to achieve desirable results. Multitasking and parallel processing may be advantageous under specific circumstances. Furthermore, the separation of different system components in the embodiments described above should not be interpreted as requiring such separation in all embodiments, and it should be understood that the described program components and systems may generally be integrated together in a single software product or packaged across multiple software products.
[0063] Thus, specific embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions described in the claims can be performed in a different order and still achieve desirable results. Furthermore, the processes depicted in the accompanying figures do not necessarily require the specific sequence shown or a sequential order to achieve desirable results. In specific implementations, multitasking and parallel processing may be advantageous.< / params>
Claims
[1] Computer-implemented method performed by a data processing unit, the method comprising: Receiving a set of search results, wherein the set contains one or more search results, each containing a deep link to a native application configured to instantiate an instance of a native application, wherein the native application creates environment instances for display on a user device within the native application, and the native application operates independently of any browser application running on the user device; Selecting one or more deep links of a native application from the search results before a user selects a search result; Instantiate for each selected deep link of a native application a background instance of the native application that corresponds to the deep link of the native application; Determine, in response to the occurrence of a background discharge event, background instances of the native application that were instantiated from the deep links of the native application and that were not brought to the foreground prior to the occurrence of the background discharge event; and Terminate each of the background instances of the instantiated native applications that were not brought to the foreground before the background unload event occurred. [2] Computer-implemented method according to claim 1, further comprising: Receiving a user selection of a search result with a deep link from a native application; and Determine that the native application corresponding to the native application deep link has been instantiated in a background instance, and in response, cause the native application instantiated in a background instance to transition to a foreground instance. [3] Computer-implemented method according to claim 1 or 2, further comprising: Generate for each deep link of a native application a unique identifier corresponding to the native application, and the deep link corresponding to the native application; and where instantiating for each deep link of a native application that is selected includes instantiating the background instance of the native application using the unique identifier. [4] Computer-implemented method according to claim 3, further comprising: For each native application that supports multiple instances of the native application, map each unique identifier to a corresponding unique instance of the native application. [5] Computer-implemented method according to claim 4, wherein causing the native application instantiated in the background instance to transition to a foreground instance comprises causing only the unique instance of the native application to transition to the foreground instance. [6] Method according to any of the preceding claims, wherein the selection prior to user selection of a search result of deep links of native applications from the search results comprises selecting only a single deep link of a native application for a native application that supports only a single instance of the native application. [7] Method according to any of the preceding claims, wherein the selection prior to user selection of a search result of deep links of native applications from the search results comprises selecting only deep links of native applications from a suitable subset of search results, wherein each search result in the suitable subset satisfies a ranking threshold. [8] Method according to claim 7, wherein the ranking threshold is based on at least one of the following: a lowest ranking position of a search result, a lowest relevance rating for a query and user preferences for the native applications. [9] Method according to any of the preceding claims, wherein the background unloading event occurs at the expiry of a timeout period measured from the instantiation of the background instances of the native application or wherein the background unloading event occurs when a page is unloaded in which the set of search results is displayed. [10] System that includes: a data processing facility; and Software stored on a non-transitory, computer-readable storage medium that contains instructions executable by the data processing equipment, which, when executed, cause the data processing equipment to perform operations that include: Receiving a set of search results, wherein the set contains one or more search results, each containing a deep link to a native application configured to instantiate an instance of a native application, wherein the native application creates environment instances for display on a user device within the native application, and the native application operates independently of any browser application running on the user device; Selecting one or more deep links of a native application from the search results before a user selects a search result; Instantiate for each selected deep link of a native application a background instance of the native application that corresponds to the deep link of the native application; Determine, in response to the occurrence of a background discharge event, background instances of the native application that were instantiated from the deep links of the native application and that were not brought to the foreground prior to the occurrence of the background discharge event; and Terminate all background instances of instantiated native applications that were not brought to the foreground before the background unload event occurred. [11] System according to claim 10, wherein the operations further comprise: Receiving a user selection of a search result with a deep link from a native application; and Determine that the native application corresponding to the native application deep link has been instantiated in a background instance, and in response, cause the native application instantiated in a background instance to transition to a foreground instance. [12] System according to claim 10 or 11, wherein the operations further comprise: Generate for each deep link of a native application a unique identifier corresponding to the native application, and the deep link corresponding to the native application; and where instantiating for each deep link of a native application that is selected includes instantiating the background instance of the native application using the unique identifier. [13] System according to claim 12, wherein the operations further comprise: For each native application that supports multiple instances of the native application, map each unique identifier to a corresponding unique instance of the native application. [14] System according to claim 14, wherein the instructions cause the data processing device to select deep links of native applications from the search results prior to the user's selection of a search result by selecting only deep links of native applications from a suitable subset of search results, wherein each search result in the suitable subset satisfies a ranking threshold. [15] System according to claim 14, wherein the ranking threshold is based on at least one of the following: a lowest ranking position of a search result, a lowest relevance rating for a query and user preferences for the native applications. [16] Computer storage medium encoded with a computer program, the program comprising instructions which, when executed by a data processing device, cause the data processing device to perform operations which include: Receiving a set of search results, wherein the set contains one or more search results, each containing a deep link to a native application configured to instantiate an instance of a native application, wherein the native application creates environment instances for display on a user device within the native application, and the native application operates independently of any browser application running on the user device; Selecting one or more deep links of a native application from the search results before a user selects a search result; Instantiate for each selected deep link of a native application a background instance of the native application that corresponds to the deep link of the native application; Determine, in response to the occurrence of a background discharge event, background instances of the native application that were instantiated from the deep links of the native application and that were not brought to the foreground prior to the occurrence of the background discharge event; and Terminate all background instances of instantiated native applications that were not brought to the foreground before the background unload event occurred.
Citation Information
Patent Citations
Application pre-launch to reduce user interface latency
US20120042317A1
Predictive pre-launch for applications
US20140372356A1
Accessing Software Application Functionality In Search
US20150242422A1
Interactive Search Results
US20150242510A1