Pre-start an application using inter-process communication

The application is pre-started through inter-process communication (IPC), and the application startup delay problem is solved, and the rapid response deep link waiting time optimization is achieved.

CN116235145BActive Publication Date: 2025-07-22GOOGLE LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080103874.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-09-09
Publication Date
2025-07-22
Estimated Expiration
2040-09-09

AI Technical Summary

Technical Problem

In the prior art, the application startup delay is relatively long, resulting in an increase in the deep link waiting time.

Method used

The application is pre-started by inter-process communication (IPC), and the first application sends an initialization request before the user selects content, causing the second application to be started as a background process, and quickly renders it when the user actually selects content.

Benefits of technology

Reduces the waiting time for application startup and improves the response speed of deep links.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116235145B_ABST
    Figure CN116235145B_ABST
Patent Text Reader

Abstract

According to one aspect, the method includes executing a first application as a foreground process of an operating system of a computing device and displaying, by the first application, content on a display of the computing device, wherein the content is associated with an action executable by a second application. The method includes, prior to a user action taken with respect to the content displayed on the display, sending, by the first application, an initialization request to an initialization application programming interface (API) of the second application, wherein the initialization request is configured to cause the second application to be launched as a background process of the operating system of the computing device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to pre - launching applications using inter - process communication. Background Art

[0002] An application executed on a device can display content that, when selected, causes another application to be launched. However, the latency from selecting the content and then launching and presenting the application linked to the content can be relatively long. Summary of the Invention

[0003] The present disclosure relates to using inter - process communication (IPC) to pre - launch applications to improve deep - link landing latency. For example, Application A can be executed as a foreground process, where Application A displays content on the device's display. If a user selects the content, Application B can be launched and displayed within the display of the computing device. However, according to an embodiment, before an action is received for the displayed content (e.g., before the user selects the content), Application A can call the initialization API of Application B such that Application B can be launched as a background process. Then, when the user actually selects the content, since Application B is pre - launched, Application B can be presented on the display relatively quickly.

[0004] According to one aspect, a method includes executing a first application as a foreground process of an operating system of a computing device, and displaying, by the first application, content on a display of the computing device, where the content is associated with an action executable by a second application. The method includes, before a user action taken for the content displayed on the display, sending, by the first application, an initialization request to an initialization application programming interface (API) of the second application, where the initialization request is configured to cause the second application to be launched as a background process of the operating system of the computing device.

[0005] According to one aspect, a non - transitory computer - readable medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to execute a first application as a foreground process of an operating system of a computing device, display, by the first application, content on a display of the computing device, where the content is associated with an action executable by a second application, and, before a user action taken for the content displayed on the display, send, by the first application, an initialization request to an initialization application programming interface (API) of the second application, the initialization request being configured to cause the second application to be launched as a background process of the operating system of the computing device

[0006] According to one aspect, an apparatus includes at least one processor and a non-transitory computer-readable medium storing executable instructions that, when executed by the at least one processor, cause the at least one processor to receive, at an initialization application programming interface (API) of a first application, an initialization request from a second application before a user action is taken with respect to content displayed on a display of a computing device, the second application being executed as a foreground process of an operating system of the computing device. In response to the initialization request, an inter-process communication connection is established between the first application and the second application to enable the first application and the second application to communicate with each other, and in response to the initialization request, the first application is launched as a background process of the operating system of the computing device.

[0007] Details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the specification, the drawings, and the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Figure 1A is a diagram of a computing device configured according to one aspect to enable an application to pre-launch another application using inter-process communication.

[0009] Figure 1B illustrates an application that displays content as a foreground process according to one aspect, where the content is associated with an action of another application.

[0010] Figure 1C illustrates a pre-launched application that has been moved to a foreground process according to one aspect.

[0011] Figure 1D illustrates a system for enabling an application to cause another application to prefetch content from a server computer over a network according to one aspect.

[0012] Figure 1E Illustrates an example of a signal for determining whether to pre-launch or prefetch according to one aspect.

[0013] Figure 1F illustrates an example of a request decision module for determining whether to pre-launch an application according to one aspect.

[0014] Figure 1G illustrates an example of a request decision module for determining whether to pre-launch and prefetch according to one aspect.

[0015] Figure 1H illustrates an example of a termination decision module for determining whether to send a termination request to terminate a background process of a pre-launched application according to one aspect.

[0016] Figure 2A diagram showing a computing device configured to enable an application to pre - launch another application using inter - process communication.

[0017] Figure 3 A diagram showing a computing device configured to enable an application to pre - launch another application using inter - process communication according to another aspect.

[0018] Figure 4A A system is shown that enables an application to pre - launch a digital store application using inter - process communication according to one aspect.

[0019] Figure 4B A computing device is shown that enables an application to pre - launch a digital store application using inter - process communication according to one aspect.

[0020] Figure 5 A flowchart is shown depicting example operations for pre - launching an application using inter - process communication according to one aspect.

[0021] Figure 6 A flowchart is shown describing example operations for pre - launching an application using inter - process communication according to another aspect.

[0022] Figure 7 A flowchart is shown describing example operations for pre - launching an application using inter - process communication according to another aspect.

[0023] Figure 8 A diagram showing examples of a computer device and a mobile computer device that can be used to implement the techniques described herein.

[0024] Like reference numerals in the various figures denote like elements. Detailed Description

[0025] This disclosure relates to pre - launching an application using inter - process communication. For example, Application A can execute as a foreground process, where Application A displays content on a display of a computing device (e.g., a mobile computing device). The content is associated with the actions of Application B. For example, if a user selects the content, Application B can be launched and displayed within the display of the computing device. However, according to an embodiment, before receiving an action regarding the displayed content (e.g., before the user selects the content), Application A can send an initialization request to Application B such that Application B can be launched as a background process. Then, when the user actually selects the content, since Application B is pre - launched, Application B can be presented on the display relatively quickly. In some examples, the initialization request also specifies one or more pre - fetch parameters, which causes Application B to pre - fetch and store content in the background. Then, when the user actually selects the content, the pre - fetched content can be presented relatively quickly in Application B.

[0026] Application B includes an Interface Definition Language that defines an initialization Application Programming Interface (API) which provides the calling application (e.g., Application A) with the ability to call a pre-start service. In other words, the initialization API (e.g., also referred to as the pre-start API) defines a pre-start interface that can be used by other applications (e.g., Application A) to pre-start Application B as a background process of the operating system. An initialization request is received at the initialization API, which causes Application B to be started as a background process. In some examples, the receipt of the initialization request causes an Inter-Process Communication (IPC) connection to be created (or established) between Application A and Application B so that Application A and Application B can communicate with each other.

[0027] An IPC connection is a communication protocol that allows processes (e.g., applications) to communicate with each other and synchronize their actions. In some examples, the receipt of the initialization request binds Application A and Application B so that information can be exchanged between Application A and Application B. In some examples, in response to a call to the initialization API from the calling application (e.g., Application A), Application B can provide a service instance (e.g., a binder) to Application A, where the binder is used to identify the method to be called and pass parameters between the applications. When the IPC connection remains active, Application A and Application B can communicate with each other. In some implementations, the operating system may not terminate the called application when the calling application is bound to the called application.

[0028] In some examples, if the IPC connection is terminated (e.g., deactivated), the underlying service (e.g., the pre-start service) is terminated, which causes the background process executing Application B to be terminated. In some examples, in response to the content being removed from the screen (e.g., the content is no longer displayed in Application A) or when a timer expires (e.g., one minute, two minutes, etc.), Application A can send a termination request (e.g., an unbind service call) to the initialization API of Application B, which causes the IPC connection to be terminated, thereby terminating the background process executing Application B. Thus, if the user may not select the content, Application B (which has been pre-started as a background process) will be closed so that those computer resources (e.g., memory, processor) can be made available for other programs.

[0029] Figures 1A to 1H System 100 is shown using inter-process communication to pre-start Application 108a according to one aspect. For example, System 100 enables Application 108b to send an initialization request 126 to the initialization Application Programming Interface (API) 116 of Application 108a to initialize (e.g., start) Application 108a as a background process 106 of the operating system 104 of computing device 102.

[0030] The computing device 102 may include one or more processors 103 formed in a substrate and configured to execute one or more machine-executable instructions or software, firmware, or a combination thereof. The processor 103 may be semiconductor-based, i.e., the processor may include semiconductor material that can execute digital logic. The computing device 102 may include one or more memory devices 107. The memory device 107 may include a main memory that stores information in a format readable and / or executable by the processor 103. The memory device 107 may store an application 108, an operating system 104, and modules (e.g., a request decision module 148, a termination decision module 149), which perform certain operations when executed by the processor 103.

[0031] In some examples, the computing device 102 is a mobile computing device. In some examples, the computing device 102 is a smart phone or a tablet. In some examples, the computing device 102 is a wearable device, a smart TV, or other computing device. In some examples, the computing device 102 is a game console. In some examples, the computing device 102 is an automotive heating unit. The operating system 104 is system software that manages computer hardware, software resources, and provides common services for computing programs. In some examples, the operating system 104 is operable to run on a mobile computer (e.g., a smart phone or a tablet). The computing device includes a display 142 (e.g., a touch screen display, an LED display, etc.), which may display a user interface for an application 108 to be executed by the computing device 102. More than one application 108 may be executed at a time. However, in some examples (e.g., in the case of a smart phone), the size of the display 142 is more suitable for displaying a single executing application 108 at a time.

[0032] The application 108 may include any type of computer program executable by the operating system 104. The application 108 may include mobile applications, e.g., software programs developed for a mobile platform or a mobile device. The application 108 includes application 108a and application 108b. The application 108b is a software program different (and separate) from the application 108a. The application 108a and the application 108b are installed on the operating system 104 of the computing device 102. In some examples, the application 108a and / or the application 108b are downloaded from an online digital storage and installed by the operating system 104 of the computing device 102. In some examples, the application 108a and / or the application 108b are pre-installed on the operating system 104 of the computing device 102.

[0033] In some examples, application 108a is a mobile application (e.g., an application configured to be executed by a mobile platform or mobile device). In some examples, application 108b is a mobile application. If a user selects an icon of application 108a (or application 108b) displayed on the display 142 of computing device 102, the operating system 104 can launch application 108a (or application 108b) as a foreground process 134 and display the application content of application 108a (or application 108b) on the display 142. In some examples, application 108a is a digital store application capable of downloading and installing digital media (e.g., application 108 (e.g., mobile application)) on computing device 102. In some examples, application 108a is an e-commerce application. In some examples, application 108b is a non-browser application (e.g., not a web browser or a mobile web browser). However, application 108a and application 108b can be any type of application configured to execute on the operating system 104 of computing device 102.

[0034] Referring Figure 1A and 1B , application 108b can display content 144 on the display 142 of computing device 102, where application 108b executes as a foreground process 134. A foreground process 134 is required for what the user is doing, and the foreground process 134 has the highest memory priority. For example, when the system memory is low, the operating system 104 can first terminate background processes to free up memory. In some examples, an application 108 executing as a foreground process 134 generates the content displayed on the display 142. In some examples, an application 108 executing as a foreground process 134 can refer to the application 108 located on the display 142, or in other words, the application that the user is currently using. In some examples, an application 108 executing as a foreground process 134 can refer to an application that can consume data and / or is an active application currently running on the operating system 104.

[0035] The content 144 from application 108b displayed on the display 142 can be associated with an action 146 that can be performed by a different application (e.g., application 108a). In other words, application 108b can display content 144 (when it executes as a foreground process 134), but the content 144 (when selected) can launch an interface in application 108a. For example, if a user-provided action is taken with respect to the content 144 (e.g., the user selects (e.g., taps, clicks, etc.) on the content 144), the display 142 can switch to application 108a, as Figure 1C shown. In Figure 1C , application 108a now executes as a foreground process 134.

[0036] Content 144 can be any type of content generated by application 108b, including a link to an action 146 performed by another application 108 (e.g., application 108a). In some examples, content 144 includes information about a product or service that, when selected, causes application 108a to be launched in the foreground process 134. In some examples, content 144 includes advertising content (e.g., a mobile advertisement). In some examples, content 144 includes an advertisement for installing an advertisement. For example, content 144 can reference another application not installed on computing device 102, but when selected, causes operating system 104 to launch application 108a (e.g., a digital store application) so that the user can download and install the application referenced by content 144. In some examples, the selection of a mobile advertisement (e.g., content 144) causes action 146 to launch a digital store application (e.g., application 108a) with a deep link or a specific intent, e.g., to a user interface for downloading other applications. However, note that content 144 can be any type of content provided by application 108b that requires an action 146 by another application 108 when selected.

[0037] Reference Figure 1A and 1B , before a user action is taken with respect to content 144 (e.g., before a user selects an advertisement), application 108b causes application 108a to be pre-launched as a background process 106 of operating system 104. In some examples, application 108 executing as background process 106 does not present a user interface (e.g., does not have an active UI) that is displayed on display 142 of computing device 102. In some examples, application 108 executing as background process 106 can refer to an inactive application, but is active in the background. In some examples, the user is not aware that background process 106 is running. Background process 106 may not be as important as foreground process 134 for what the user is currently doing and, in some examples, is given a lower memory priority by operating system 104.

[0038] Refer to Figure 1A , application 108a defines an interface definition language 110. Interface definition language 110 defines a programming interface that allows application 108a to communicate with other applications 108 including application 108b. According to the embodiments discussed herein, interface definition language 110 defines an initialization API 116 that a calling application (e.g., application 108b) uses to call a pre-launch service. In other words, initialization API 116 (e.g., also referred to as a pre-launch API) defines a pre-launch interface that can be used by other applications 108 (e.g., application 108b) to launch application 108a as a background process 106.

[0039] In some examples, when the content 144 of app 108b is displayed on the display 142 (before the user selects the content 144), app 108b can call the initialization API 116 by sending an initialization request 126 to the initialization API 116 of app 108a. Receiving the initialization request 126 at the initialization API 116 causes the operating system 104 to start app 108a as a background process 106 (e.g., running in the background but not displaying an active UI). In some examples, the start operation can include allocating new memory for the new process (e.g., background process 106), loading the app code into the process memory, and / or scheduling CPU time for the new process. In some examples, receiving the initialization request 126 causes an inter-process communication (IPC) connection 111 to be created (or established) between app 108a and app 108b so that app 108a and app 108b can communicate with each other.

[0040] The IPC connection 111 is a communication protocol that allows processes to communicate with each other and synchronize their actions. In some examples, receiving the initialization request 126 binds app 108a and app 108b (e.g., app 108a and app 108b are linked) so that information can be exchanged between app 108a and app 108b. In some examples, when the IPC connections 111 are established, their execution states are linked or bound. For example, if the user closes app 108b, app 108a will be closed.

[0041] In some examples, when app 108a is bound to app 108b (in other words, the foreground process 134 is bound to the background process 106), the background process 106 is given the same high priority as the foreground process 134, which allows the pre-launch process to continue even when the device memory is low. For example, traditionally, if the device memory is below a threshold level, the operating system 104 can terminate the background process. However, when the foreground process 134 is bound to the background process 106 (e.g., when the IPC connection 111 is established), and if the device memory is below the threshold level, the operating system 104 is prevented from terminating the background process 106 that is executing the pre-launch process.

[0042] In some examples, app 108a can provide a service instance (e.g., a binding) to app 108b, where the service instance (e.g., the binding) is used to identify methods that can be called and to pass parameters between app 108a and app 108b. When the inter-process communication connection 111 remains active, app 108a and app 108b can communicate with each other. In some examples, if the inter-process communication connection 111 is terminated (e.g., deactivated), the underlying service (e.g., the pre-launch service) is terminated, causing the background process 106 that is executing app 108a to be terminated.

[0043] Since application 108a is pre-booted, in response to receiving a user action taken with respect to content 144 that requires action 146 of application 108a, the user interface of application 108a can be presented more quickly on display 142, thereby reducing the wait time for displaying information associated with application 108a. For example, when content 144 is selected in Figure 1B , as Figure 1C shown, application 108a can be quickly loaded into display 142 (in foreground process 134), where since application 108a is pre-booted as background process 106, the wait time for loading application 108 can be reduced (e.g., significantly reduced).

[0044] Figure 1D An example of prefetching content 105 as background process 106 according to one aspect is described. In some examples, as Figure 1D shown, initialization request 126 indicates prefetching of content 105. In some examples, the term "prefetch" can refer to retrieving information from server computer 160 connected to computing device 102 via network 150 while application 108a is executing as a background process 106 of operating system 104.

[0045] Application 108b can display content 144 in foreground process 134, and before the user has selected content 144, application 108b can send initialization request 126, which invokes initialization API 116 to pre-boot application 108a, where initialization request 126 can specify one or more prefetch parameters 132. In some examples, if application 108a is a digital store application, prefetch parameter 132 can provide an application identifier for the application referenced by content 144, and application 108a can prefetch details about the application, such as name, download, rating, and / or reviews, etc. In some examples, prefetch parameter 132 includes an identifier of a resource (e.g., product, application, service, etc.) referenced by content 144. In some examples, prefetch parameter 132 includes an application identifier. In some examples, prefetch parameter 132 includes a product or service identifier. In some examples, prefetch parameter 132 includes a Uniform Resource Locator (URL). However, the type of prefetch parameter 132 can depend on the type of application 108a. In some examples, if application 108a is an e-commerce site, prefetch parameter 132 can include a product identifier and / or a product page to be prefetched.

[0046] If the initialization request 126 specifies one or more prefetch parameters 132, the application 108a may prefetch content 105 according to the prefetch parameters 132 in the background and store (e.g., cache) the content 105 in a memory (e.g., memory device 107) before a user action taken with respect to the content 144 (e.g., before the user selects an advertisement). In some examples, to prefetch the content 105, the application 108a may communicate with the server computer 160 via the network 150 to retrieve the content 105 from the resources 154 stored at the server computer 160. Then, when the user selects the content 144, the display 142 may be quickly switched to the application 108a (e.g., because the application 108a is pre-booted), where the application 108a quickly displays the content 105 (e.g., because the content 105 is pre-fetched).

[0047] The server computer 160 may be a computing device in the form of multiple different devices, such as a standard server, a group of such servers, or a rack server system. In some examples, the server computer 160 may be a single system that shares components such as processors and memories. The resources 154 may be any type of computer resource, such as a web page or information accessible via the network 150. The network 150 may include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. The network 150 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or send data within the network 150. The network 150 may also include any number of hardwired and / or wireless connections.

[0048] The server computer 160 may include one or more processors 161 formed in a substrate, an operating system (not shown), and one or more memory devices 163. The memory device 163 may represent any type (or types) of memory (e.g., RAM, flash memory, cache memory, disk, tape, etc.). In some examples (not shown), the memory device 163 may include external memory, e.g., memory physically remote from the server computer 160 but accessible by the server computer 160. The server computer 160 may include one or more modules or engines representing specially programmed software.

[0049] In some examples, the initialization request 126 indicates pre-boot. In some examples, the initialization request 126 includes information to be pre-booted and prefetched. In some examples, separate requests are used to indicate pre-booting and prefetching of the application 108a. For example, a first request can be sent to the initialization API 116 to pre-boot the application 108a as a background process 106, and then a second request can be sent to the initialization API 116 to prefetch content 105 as a background process 106, where the second request can be sent after the first request, or the first and second requests can be sent around the same time.

[0050] The application 108b can send the initialization request 126 in response to the content 144 being displayed on the display 142. In some examples, the application 108b includes a request decision module 148 that determines whether the application 108b should transmit the initialization request 126 to the initialization API 116 for pre-booting and / or prefetching. In some examples, the decision to pre-boot and / or prefetch occurs when the content 144 is displayed on the display 142. In some examples, the decision to pre-boot and / or prefetch occurs at a moment before the content 144 is displayed on the display 142. In some examples, the decision to pre-boot and / or prefetch occurs at a moment after the content 144 is displayed on the display 142.

[0051] The request decision module 148 can determine whether to transmit the initialization request to the initialization API 116 based on one or more signals 152. The signal 152 can include one or more signals generated by the computing device 102. In some examples, the signal 152 can include one or more signals generated by a server computer. Figure 1E Various examples of the signal 152 for determining whether to pre-boot and / or prefetch are shown. For example, referring Figure 1E , the signal 152 can include the battery charge level 172, the available memory level 174, the network condition 179 of the computing device 102, the click-through rate 176, and / or the predicted conversion rate 178.

[0052] The battery charge level 172 indicates the current charge level of the battery of the computing device 102. The available memory level 174 indicates the current memory level available to the computing device 102. The click-through rate 176 is the ratio of the number of times the content 144 has been selected by the user to the number of times the content 144 has been displayed to the user. The predicted conversion rate 178 is the predicted rate at which the user will perform a certain action (e.g., download the application referenced by the content 144). The network condition 179 can include one or more network metrics regarding the bandwidth / speed of the connection of the computing device 102 to the network 150.

[0053] Figure 1FShows an example operation of determining whether to pre - launch application 108a according to one aspect. Refer to Figure 1F , in operation 121, the request decision module 148 may obtain one or more signals 152. In some examples, the request decision module 148 may obtain the signal 152 in response to the content 144 of application 108b being displayed on the display 142 (e.g., see Figure 1B ) and before the user has selected the content 144. In some examples, the request decision module 148 may obtain the signal 152 in response to the requested content 144. Then, in operation 123, the request decision module 148 may determine whether to pre - launch application 108a based on the signal 152. In some examples, if the battery charge level 172 is below a threshold level (e.g., low battery) and / or if the available memory level 174 is below a threshold level (e.g., low available memory), then the request decision module 148 may determine not to pre - launch application 108a. In some examples, if the click - through rate 176 is below a threshold level and / or if the predicted conversion rate 178 is below a threshold level, then the request decision module 148 may determine not to pre - launch application 108a.

[0054] In some examples, if the battery charge level 172 is above a threshold level, then the request decision module 148 may determine to pre - launch. In some examples, if the available memory level 174 is above a threshold level, then the request decision module 148 may determine to pre - launch. In some examples, if the click - through rate 176 is above a threshold level, then the request decision module 148 may determine to pre - launch. In some examples, if the predicted conversion rate 178 is above a threshold level, then the request decision module 148 may determine to pre - launch. In some examples, if the network condition 179 is above a threshold level, then the request decision module 148 may determine to pre - launch. In some examples, the request decision module 148 may use any combination of the above - mentioned signals 152 to determine whether to pre - launch.

[0055] In some examples, the request decision module 148 inputs the signal 152 into a scoring algorithm that generates a pre - launch score value, and if the pre - launch score value is higher than a threshold, then the request decision module 148 determines to pre - launch application 108a. In some examples, the request decision module 148 may execute a machine - learning algorithm to determine whether to pre - launch application 108a. In some examples, the machine - learning algorithm includes a neural network.

[0056] If the request decision module 148 determines to pre-launch (yes), then in operation 125, the application 108b may send an initialization request 126. For example, the application 108b may send the initialization request 126 to the initialization API 116 of the application 108a, which causes the application 108a to be launched as a background process 106. If the request decision module 148 determines not to pre-launch (no), then in operation 127, the application 108b may not send the initialization request 126, which causes the application 108a not to be launched as a background process 106.

[0057] Figure 1G Exemplary operations for determining whether to pre-launch and pre-fetch according to one aspect are shown. Referring to Figure 1G , in operation 131, the request decision module 148 may obtain one or more signals 152. In some examples, the request decision module 148 may obtain the signal 152 in response to the content 144 of the application 108b being displayed on the display 142 (e.g., see Figure 1B ) and before the user has selected the content 144. Then, in operation 133, the request decision module 148 may determine whether to pre-launch the application 108a based on the signal 152. Operation 133 may be similar to Figure 1F operation 123 and may include any details discussed with reference to that operation. If the request decision module 148 determines not to pre-launch (no), then in operation 135, the request decision module 148 may not send the initialization request 126 to the initialization API 116.

[0058] If the request decision module 148 determines to pre-launch (yes), then in operation 137, the request decision module 148 may determine whether to pre-fetch based on the signal 152. In some examples, the request decision module 148 may use the network condition 179 to determine whether to pre-fetch the content 105. For example, if the network condition 179 (e.g., bandwidth / speed) of the connection from the device to the network 150 is below a threshold level, then the request decision module 148 may determine not to pre-fetch the content 105. However, if the network condition 179 is equal to or greater than the threshold level, then the request decision module 148 may determine to pre-fetch the content 105. In some examples, the request decision module 148 may use another signal 152 (or multiple signals 152) to determine whether to pre-fetch the content 105. For example, the request decision module 148 may compare one or more signals 152 with one or more thresholds, use a scoring algorithm, or use a machine learning algorithm to determine whether to pre-fetch the content 105.

[0059] If the request decision module 148 determines not to prefetch (137, no), then in operation 139, application 108b sends an initialization request 126 to application 108a, where the initialization request 126 indicates to only pre-start application 108a. For example, application 108b can send the initialization request 126 to the initialization API 116 of application 108a without prefetch parameters 132. If the request decision module 148 determines to prefetch (137, yes), then in operation 141, application 108b determines prefetch parameters 132. The prefetch parameters 132 can identify the content 105 to be prefetched and / or the source from which the content 105 will be retrieved. In some examples, the prefetch parameters 132 include identifiers of resources (e.g., products, applications, services, etc.) referenced by content 144. In some examples, the prefetch parameters 132 include application identifiers. In some examples, the prefetch parameters 132 include product or service identifiers. In some examples, the prefetch parameters 132 include a Uniform Resource Locator (URL).

[0060] In operation 143, application 108b sends the initialization request 126 with prefetch parameters 132 to the initialization API 116 of application 108a. In some examples, separate requests are sent for pre-start and prefetch. For example, in response to determining that application 108a should be pre-started, application 108b can send a first request to the initialization API 116, and in response to determining that application 108a should prefetch content 105, application 108b can send a second request with prefetch parameters 132 to the initialization API 116.

[0061] In some examples, the signal 152 includes a user control signal. For example, the user can select pre-start / prefetch. If the request decision module 148 receives a signal indicating that the user has opted out of pre-start, then the request decision module 148 can determine not to send the initialization request 126 (e.g., not pre-start application 108a). In some examples, the signal 152 includes a signal indicating the number of times application 108 has been pre-started on the device over a period of time (e.g., the past hour, etc.). If the number exceeds a threshold, then the request decision module 148 can determine not to send the initialization request 126 (e.g., skip pre-start / prefetch if the device has initiated at least X pre-starts in the past time).

[0062] When an initialization request 126 is received at the initialization API 116 of the application 108a, the application 108a can be pre - started as a background process 106. Additionally, in some examples, the initialization request 126 can include pre - fetch parameters 132, which will instruct the application 108a to pre - fetch and store content 105. In some examples, the application 108b includes a termination decision module 149 for determining whether to terminate the background process 106 that is executing the application 108a. For example, if the termination decision module 149 determines to terminate the background process 106, the application 108b can send a termination request 129 to the initialization API 116, which causes the operating system 104 to terminate the background process 106 that is executing the application 108a. In some examples, the termination request 129 unbinds the application 108b and the application 108a (e.g., the inter - process communication connection 111 is terminated). In some examples, the termination decision module 149 sends the termination request 129 when the content 144 is not being displayed in the application 108b (e.g., the user has moved the content 144 off the screen) or when the timer 151 has expired. In some examples, the termination decision module 149 sends the termination request 129 when the user closes the application 108b. In this way, the memory that has been allocated to the background process 106 that is executing the application 108a can be made available for other programs because there is a relatively good chance that the user will not select the content 144.

[0063] Figure 1H An example operation of the termination decision module 149 is shown. Referring to Figure 1H , the termination decision module 149 can execute process 180 and process 190. In some examples, process 190 is executed in parallel with process 180.

[0064] Regarding process 180, in operation 181, the termination decision module 149 determines (e.g., continuously or periodically) whether content 144 is no longer displayed on the display 142 (e.g., whether the content has moved off the screen). If content 144 is still displayed on the display 142 (No), the termination decision module 149 continues to monitor whether content 144 has moved off the display 142. If content 144 is no longer displayed on the display (Yes), then in operation 183, the termination decision module 149 sends a termination request 129 to the initialization API 116 of application 108a. In response to receiving the termination request 129 at the initialization API 116, the background process 106 that is executing application 108a is terminated (or closed). In some examples, in response to receiving the termination request 129 at the initialization API 116, the inter - process communication connection 111 is terminated, which causes the background process 106 that is executing application 108a to be terminated. In other words, the inter - process communication connection 111 is established in response to receiving the initialization request 126 and remains active until a termination request 129 is received at the initialization API 116. When the inter - process communication connection 111 is active, applications 108a and 108b can communicate with each other. However, in response to receiving the termination request 129, the inter - process communication connection 111 is deactivated (e.g., terminated), which causes the underlying service (e.g., pre - start service) to terminate.

[0065] For process 190, in operation 191, the termination decision module 149 determines whether timer 151 has expired. Timer 151 can be set to any length of time, such as 30 seconds, 1 minute, 2 minutes, 5 minutes, etc. The initiation of timer 151 can start in response to the time when application 108 is pre - started and / or the time when the inter - process communication connection 111 is established (e.g., created or activated). If the termination decision module 149 determines that the timer has not expired (No), the termination decision module 149 continues to determine whether the timer has expired. If the termination decision module 149 determines that the timer has expired (Yes), then in operation 193, the termination decision module 149 sends a termination request 129 to the initialization API 116 of application 108a. In response to receiving the termination request 129 at the initialization API 116, the background process 106 that is executing application 108a is terminated (or closed). For example, once it is no longer likely or possible for the user to select content 144, processes 180 and 190 ensure that the system resources consumed by the pre - started application 108a are released as early as possible. This ensures that the computing device 102 operates efficiently while still reducing the wait time for loading application 108a if the user does indeed select content 144.

[0066] Figure 2Shown is a computing device 202 that enables one application (e.g., application 108b) to pre - start another application (e.g., application 108a) as a background process before the user has selected content 244 for which an action 246 of application 108a is required. Figure 2 The computing device 202 can be Figures 1A to 1H an example of a system of, and can include any details discussed with reference to those figures. For example, application 208a and application 208a can be Figures 1A to 1H example of application 108a of Figures 1A to 1H and application 108b of

[0067] Application 208a includes an interface definition language 210 that defines an initialization API 216 (e.g., a pre - start API). Before an action is taken on content 244 for application 208b, an invoking application (e.g., application 208b) uses the initialization API 216 to pre - start application 208a, where application 208b executes as a foreground process of the operating system of the computing device 202. For example, in response to content 244 being displayed on the display 242, application 208b can call the initialization API 216 by sending a pre - start service call 226 to the initialization API 216. The pre - start service call 226 can be Figures 1A to 1H an example of the initialization request 126 of

[0068] More specifically, in response to content 244 being displayed on the display 242 (or in response to Figures 1A to 1H the request decision module 148 of

[0069] In response to receiving the pre-launch service call 226, the application 208a is launched as a background process of the operating system of the computing device 202. Additionally, in response to receiving the pre-launch service call 226, the application 208a obtains a binder 212 (e.g., a service instance) (defined in interface definition language) and returns the binder 212 to the application 208b. The binder 212 may define one or more methods 214 that the application 208b uses (e.g., calls) to send information to the application 208a. The inter-process communication connection 211 may be established in response to receiving the binder 212. The inter-process communication connection 211 may remain active until an unbind service call 233 is received at the initialization API 216, where the unbind service call 233 terminates the inter-process communication connection 211. The unbind service call 233 may be Figures 1A to 1H an example of the termination request 129. While the inter-process communication connection 211 remains active, the application 208b may call the methods 214 defined by the binder 212 to send information to the application 208a.

[0070] According to the embodiments discussed herein, since the application 208a will need to run when the user selects the content 244, the unbind service call 233 is delayed. For example, the unbind service call 233 is delayed until a timer (e.g., Figure 1A the timer 151) expires or the content 244 is not displayed in the foreground process. In other words, the application 208b (e.g., Figure 1A the termination decision module 149) determines whether the content 244 has moved off the screen or the timer has expired, and if the content 244 has moved off the screen or the timer has expired, the application 208b transmits the unbind service call 233 to terminate the inter-process communication connection 211, which causes the background process executing the application 208a to be terminated.

[0071] In some examples, one or more prefetch parameters 232 may be passed to the application 208a by calling the methods 214 defined by the binder 212 before sending the unbind service call 233 to the initialization API 216 of the application 208a. For example, as described above, the application 208a returns the binder 212 to the application 208b in response to the pre-launch service call 226, where the binder 212 defines one or more methods 214 that the application 208b calls to pass information to the application 208a. In some examples, the application 208b uses one or more methods 214 to call the initialization API 216 to provide the prefetch parameters 232 to the application 208a.

[0072] Figure 3A computing device 302 is shown having an application (e.g., 308b) that can cause two applications (e.g., application 308a, application 308c) to be pre-started and / or prefetched according to one aspect. The computing device 302 can be Figures 1A to 1H an example of the computing device 102 and / or Figure 2 the computing device 202 and can include any details discussed with respect to those figures. For example, the computing device 302 can include one or more processors 303, one or more memory devices 307, an operating system 304, and applications 308 (e.g., application 308a, application 308b, application 308c).

[0073] As Figure 3 shown, the application 308b can execute as a foreground process 334, where the application 308b displays content 344 on a display 342 of the computing device 302. The content 344 can be associated with an action 346-1 of the application 308a and an action 346-2 of the application 308c. In some examples, when the content 344 of the application 308b is displayed on the display 342 (before the user selects the content 344), the application 308b can send a first initialization request (e.g., Figures 1A to 1H the initialization request 126) to the initialization API 316-1 of the application 308a and can send a second initialization request (e.g., Figures 1A to 1H the initialization request 126) to the initialization API 316-2 of the application 308c. The initialization API 316-1 is defined in the interface definition language of the application 308a. The initialization API 316-2 is defined in the interface definition language of the application 308c. In some examples, the second initialization request and the first initialization request are sent at least partially in parallel with each other. In some examples, the first initialization request includes one or more prefetch parameters to cause the application 308a to prefetch content. In some examples, the second initialization request includes one or more prefetch parameters to cause the application 308c to prefetch content.

[0074] A first initialization request is received at initialization API 316-1, which causes application 308a to be launched as a background process 306. In some examples, receipt of the first initialization request causes a first IPC connection 311-1 to be created (or established) between application 308a and application 308b, enabling application 308a and application 308b to communicate with each other. A second initialization request is received at initialization API 316-2, which causes application 308c to be launched as a background process 306. In some examples, receipt of the second initialization request causes a second IPC connection 311-2 to be created (or established) between application 308c and application 308b, enabling application 308c and application 308b to communicate with each other. Then, when a user action regarding content 344 is received, application 308a and / or application 308c can switch to display 242 in a relatively fast manner because both applications are pre-launched.

[0075] Figure 4A and 4B illustrates a system 400 that enables an application (e.g., application 408b) to pre-launch another application (e.g., digital store application 408a) and / or enables the digital store application 408a to prefetch content. System 400 can be Figures 1A to 1H system 100, Figure 2 computing device 202, and / or Figure 3 an example of computing device 302, and can include any details discussed with reference to those figures. For example, system 400 can include a server computer 460 having one or more processors 461, one or more memory devices 463, an online digital storage 480 storing digital media 481 that users can download and install, and an advertising engine 482 configured to insert application installation content 444 into an application. System 400 includes a computing device 402 configured to communicate with the server computer 460 via a network 450. Computing device 402 includes an operating system 404 that executes multiple applications 408, and applications 408 include a digital store application 408a and an application 408b.

[0076] Application 408b can display application installation content 444 on a display 442 of computing device 402, where application 408b executes as a foreground process 434. For example, application installation content 444 can reference another application (e.g., application 408c) not installed on computing device 402, but when selected, causes the operating system 404 to launch the digital store application 408a, enabling the user to download and install the application 408c referenced by the application installation content 444. In some examples, selection of the application installation content 444 causes an action to launch the digital store application 408a.

[0077] Before a user action is taken with respect to the application installation content 444 (e.g., before the user selects an advertisement), the application 408b causes the digital store application 408a to be pre - launched as a background process 406 of the operating system 404. The digital store application 408a defines an Interface Definition Language 410. The Interface Definition Language 410 defines a programming interface that allows the digital store application 408a to communicate with other applications 408, including the application 408b. According to the embodiments discussed herein, the Interface Definition Language 410 defines an initialization API 416, where the calling application (e.g., the application 408b) is used to call the pre - launch service. In other words, the initialization API 416 (e.g., also referred to as the pre - launch API) defines a pre - launch interface that can be used by other applications 408 (e.g., the application 408b) to pre - launch the digital store application 408a as a background process 406.

[0078] In some examples, when the application installation content 444 of the application 408b is displayed on the display 442 (before the user has selected the application installation content 444), the application 408b can send an initialization request 426 to the digital store application 408a. The initialization request 426 is received at the initialization API 416, which causes the digital store application 408a to be launched as a background process 406. In some examples, the receipt of the initialization request 426 causes an Inter - Process Communication (IPC) connection 411 to be created (or established) between the digital store application 408a and the application 408b, enabling the digital store application 408a and the application 408b to communicate with each other.

[0079] The IPC connection 411 is a communication protocol that allows processes to communicate with each other and synchronize their actions. In some examples, the receipt of the initialization request 426 binds the digital store application 408a and the application 408b (e.g., the digital store application 408a and the application 408b are linked), enabling information to be exchanged between the digital store application 408a and the application 408b. In some examples, the digital store application 408a and the application 408b are linked according to the techniques described in the reference Figure 2 When the inter - process communication connection 411 remains active, the digital store application 408a and the application 408b can communicate with each other. In some examples, if the inter - process communication connection 411 is terminated (e.g., deactivated), the underlying service (e.g., the pre - launch service) is terminated, causing the background process 406 that executes the digital store application 408a to be terminated.

[0080] Then, when a user action regarding the app installation content 444 is received, the digital store app 408a can be loaded more quickly, thereby reducing the wait time for displaying information associated with the digital store app 408a. For example, when the app installation content 444 is selected, the digital store app 408a can be quickly loaded into the display 442 (in the foreground process 434), where the wait time for presenting the digital store app 408a can be reduced (e.g., significantly reduced) because the digital store app 408a is pre-started as a background process 406.

[0081] In some examples, the initialization request 426 specifies one or more prefetch parameters 432. In some examples, the prefetch parameters 432 can provide an app identifier for the app 408c referenced by the app installation content 444, and the digital store app 408a can prefetch details about the app 408c, such as name, download, rating, and / or reviews, etc. For example, if the initialization request 426 specifies one or more prefetch parameters 432, then the digital store app 408a can prefetch content as a background process 406 according to the (one or more) prefetch parameters 432 and store (e.g., cache) the content in the memory before a user action is taken regarding the app installation content 444 (e.g., before the user selects an advertisement). Then, when the user selects the app installation content 444, the display 442 can be quickly switched to the digital store app 408a (e.g., because the digital store app 408a is pre-started), where the digital store app 408a quickly displays the prefetched content.

[0082] In some examples, the app 408b includes a request decision module 448 that determines whether the app 408b should transmit the initialization request 426 to the initialization API 416 for pre-starting and / or prefetching. In some examples, the request decision module 448 determines whether to transmit the initialization request to the initialization API 416 based on one or more signals 452. The signal 452 can be any of the signals 152 described in Figures 1A to 1H reference. The request decision module 448 can perform any of the operations described in Figures 1A to 1H reference.

[0083] When an initialization request 426 is received at the initialization API 416 of the digital store application 408a, the digital store application 408a can be pre-started as a background process 406. Additionally, in some examples, the initialization request 426 can include prefetch parameters 432, which will instruct the digital store application 408a to prefetch and store content. In some examples, the application 408b includes a termination decision module 449 to determine whether to terminate the background process 406 that executes the digital store application 408a. For example, if the termination decision module 449 determines to terminate the background process 406, the application 408b can send a termination request 429 to the initialization API 416, which causes the background process 406 to be terminated. In some examples, when the application installation content 444 is not displayed in the application 408b (e.g., the user has moved the application installation content 444 off the screen) or the timer 451 expires, the termination decision module 449 sends the termination request 429. In this way, the memory that has been allocated to the background process 406 that executes the digital store application 408a can be used for other programs because there is a relatively good chance that the user will not select the application installation content 444. The termination decision module 449 can perform any of the operations described by the termination decision module 449 that references Figures 1A to 1H and is described.

[0084] Figure 5 FIG. 500 is a flowchart of an example operation of using inter-process communication to pre-start an application according to one aspect. Although the flowchart 500 of Figures 1A to 1H is explained with respect to the system 100 of Figure 5 the flowchart 500 is applicable to any of the embodiments discussed herein. Although Figure 5 the flowchart 500 of Figure 5 shows the operations in a sequential order, it should be understood that this is merely an example and can include additional or alternative operations. Additionally,

[0085] Operation 502 includes executing a first application 108b as a foreground process 134 of an operating system 104 of a computing device 102. Operation 504 includes displaying, by the first application 108b, content 144 on a display 142 of the computing device 102, where the content 144 is associated with an action 146 executable by a second application 108a. Operation 506 includes, prior to a user action being taken with respect to the content 144 displayed on the display 142 of the computing device 102, sending, by the first application 108b, an initialization request 126 to an initialization application programming interface (API) 116 of the second application 108a, where the initialization request 126 is configured to cause the second application 108a to be launched as a background process 106 of the operating system 104 of the computing device 102.

[0086] In some examples, the operation includes sending, by the first application 108b, a termination request 129 to the initialization API 116 of the second application 108a in response to the content 144 not being displayed on the display 142, where the termination request 129 is configured to cause the background process 106 executing the second application 108a to be terminated.

[0087] In some examples, the operation includes sending, by the first application 108b, a termination request 129 to the initialization API 116 of the second application 108a in response to an expiration of a timer 151, where the termination request 129 is configured to cause the background process 106 executing the second application 108a to be terminated.

[0088] In some examples, the initialization request 126 is configured to establish an inter-process communication connection 111 between the first application 108b and the second application 108a to enable the first application 108b and the second application 108a to communicate with each other.

[0089] In some examples, the operation includes sending, by the first application 108b, a termination request 129 to the initialization API 116 of the second application 108a in response to the content 144 not being displayed on the display 142 or in response to an expiration of the timer 151, where the termination request 129 is configured to terminate the inter-process communication connection 111.

[0090] In some examples, the operation includes determining, by the second application 108a, whether to send the initialization request 126 to the initialization API 116 of the second application 108a based on at least one signal 152.

[0091] In some examples, at least one signal 152 includes a battery charge level 172, wherein an initialization request 126 is transmitted in response to the battery charge level 172 being greater than a threshold level. In some examples, at least one signal 152 includes an available memory level 174, wherein an initialization request 126 is transmitted in response to the available memory level 174 being greater than a threshold level. In some examples, at least one signal 152 includes a dot rate 176 associated with content 144 displayed by a first application 108b, wherein an initialization request 126 is sent in response to the dot rate 176 being greater than a threshold level. In some examples, at least one signal 152 includes a predicted transition rate 178 associated with content 144 displayed by a first application 108b, wherein an initialization request 126 is sent in response to the predicted transition rate 178 being greater than a threshold level. In some examples, at least one signal 152 includes a network condition 179 of the computing device 102, wherein an initialization request 126 is sent in response to the network condition 179 being greater than a threshold level. In some examples, the initialization request 126 includes at least one prefetch parameter 132 such that the first application 108b can prefetch content 105 from the server computer 160 on the network 150 as a background process 106.

[0092] Figure 6 is a flowchart 600 depicting example operations for pre-booting an application using inter-process communication according to one aspect. Although the flowchart 600 Figure 2 is explained with respect to a computing device 202 of Figure 6 the flowchart 600 is applicable to any embodiment discussed herein. Although Figure 6 the flowchart 600 shows operations in a sequential order, it should be understood that this is merely an example and may include additional or alternative operations. Additionally, Figure 6 the operations and related operations may be performed in an order different from that shown, or in parallel or overlapping fashion. The operations of the flowchart 600 may be viewed from the perspective of a calling application (e.g., application 108b, application 208b, application 308b, application 408b).

[0093] Operation 602 includes receiving a pre-boot service call 226. For example, in response to determining that application 208a is to be pre-booted (before a user action is taken with respect to content 244 of application 208b displayed on the display 242 of computing device 202), the initialization API 216 of application 208a receives a pre-boot service call 226 from application 208b. In some examples, the pre-boot service call 226 includes an intent 213, a service connection object 215, and a flag 217. In some examples, receipt of the pre-boot service call 226 causes application 208a to be pre-booted.

[0094] Operation 604 includes sending a service instance (e.g., binder 212), wherein the service instance (e.g., binder 212) includes one or more methods 214 to be used by an application (e.g., application 208a) to call an initialization API 216. In some examples, receipt of the service instance causes an inter-process communication connection 211 to be established, wherein application 208a and application 208b can communicate with each other while inter-process communication connection 211 is active.

[0095] Operation 606 includes starting a timer associated with the interprocess communication connection 211 (eg, Figure 1A In some examples, the timer is started when the inter-process communication connection 211 is established. In some examples, the duration defined by the timer can be any value, such as 30 seconds, 1 minute, 2 minutes, 5 minutes, etc.

[0096] Operation 608 includes determining whether the content 244 has been moved off the screen or whether the timer has expired. For example, the application 208b monitors the timer and whether the content 244 is still displayed on the display 242, or whether it is no longer displayed. If not, the process returns to operation 608 to continue to determine whether the content 244 has been moved off the screen or whether the timer has expired. If yes, the process continues to operation 610.

[0097] Operation 610 includes terminating the inter-process communication connection 211. In some examples, the application 208b sends an unbind service call 233 to the initialization API 216, which causes the background process executing the application 208b to be terminated.

[0098] Figure 7 700 is a flowchart depicting example operations for pre-launching an application using inter-process communication according to one aspect. Figures 1A to 1H The System 100 explains Figure 7 700, but the flowchart 700 is applicable to any of the embodiments discussed herein. Figure 7 The flowchart 700 shows the operations in a sequential order, but it should be understood that this is merely an example and additional or alternative operations may be included. Figure 7 The operations and related operations may be performed in a different order than shown, or in a parallel or overlapping manner. The operations of flowchart 700 are from the perspective of the linked application (eg, application 108a, application 208a, application 308a, digital store application 408a).

[0099] Operation 702 includes receiving an initialization request 126 from a second application 108b at an initialization application programming interface (API) 116 of a first application 108a before a user action is taken with respect to content 144 displayed on a display 142 of a computing device 102, the second application 108b executing as a foreground process 134 of an operating system 104 of the computing device 102.

[0100] Operation 704 includes establishing an inter-process communication connection 111 between the first application 108a and the second application 108b in response to the initialization request 126 to enable the first application 108a and the second application 108b to communicate with each other. Operation 706 includes starting the first application 108a as a background process 106 of an operating system 104 of the computing device 102 in response to the initialization request 126.

[0101] Although the disclosed inventive concepts include those defined in the appended claims, it should be understood that the inventive concepts may also be defined in accordance with the following embodiments:

[0102] Embodiment 1 is a method for pre-starting an application using inter-process communication, the method including executing a first application as a foreground process of an operating system of a computing device, displaying content on a display of the computing device by the first application, and sending an initialization request from the first application to an initialization application programming interface (API) of a second application before a user action is taken with respect to the content displayed on the display.

[0103] Embodiment 2 is the method according to Embodiment 1, wherein the content is associated with an action executable by the second application.

[0104] Embodiment 3 is the method according to any one of Embodiments 1 to 2, wherein the computing device is a mobile computing device.

[0105] Embodiment 4 is the method according to any one of Embodiments 1 to 3, wherein the initialization request is configured to cause the second application to be started as a background process of an operating system of the computing device.

[0106] Embodiment 5 is the method according to any one of Embodiments 1 to 4, further including transmitting a termination request from the first application to the initialization API of the second application in response to the content not being displayed on the display.

[0107] Embodiment 6 is the method according to any one of Embodiments 1 to 5, wherein the termination request is configured to cause the background process executing the second application to be terminated.

[0108] Embodiment 7 is the method according to any one of Embodiments 1 to 6, further comprising transmitting, by the first application in response to expiration of a timer, a termination request to the initialization API of the second application.

[0109] Embodiment 8 is the method of any one of Embodiments 1 to 7, wherein the initialization request is configured to establish an inter-process communication connection between the first application and the second application, enabling the first application and the second application to communicate with each other.

[0110] Embodiment 9 is the method according to any one of Embodiments 1 to 8, further comprising transmitting, by the first application in response to the content not being displayed on the display or in response to expiration of a timer, a termination request to the initialization API of the second application.

[0111] Embodiment 10 is the method of any one of Embodiments 1 to 9, wherein the termination request is configured to terminate the inter-process communication connection.

[0112] Embodiment 11 is the method of any one of Embodiments 1 to 10, further comprising determining, by the second application based on at least one signal, whether to transmit an initialization request to the initialization API of the second application.

[0113] Embodiment 12 is the method of any one of Embodiments 1 to 11, wherein the at least one signal includes a battery charge level.

[0114] Embodiment 13 is the method of any one of Embodiments 1 to 12, wherein the initialization request is transmitted in response to the battery charge level being greater than a threshold level.

[0115] Embodiment 14 is the method of any one of Embodiments 1 to 13, wherein the at least one signal includes an available memory level.

[0116] Embodiment 15 is the method according to any one of Embodiments 1 to 14, wherein the initialization request is transmitted in response to the available memory level being greater than a threshold level.

[0117] Embodiment 16 is the method of any one of Embodiments 1 to 15, wherein the at least one signal includes a dot progression rate associated with the content displayed by the first application.

[0118] Embodiment 17 is the method according to any one of Embodiments 1 to 16, wherein the initialization request is transmitted in response to the dot progression rate being greater than a threshold level.

[0119] Embodiment 18 is the method of any one of Embodiments 1 to 17, wherein the at least one signal includes a predicted conversion rate associated with the content displayed by the first application.

[0120] Example 19 is the method of any one of Examples 1 to 18, wherein an initialization request is transmitted in response to a predicted conversion rate being greater than a threshold level.

[0121] Example 20 is the method according to any one of Examples 1 to 19, wherein the at least one signal includes the network condition of the computing device.

[0122] Example 21 is the method according to any one of Examples 1 to 20, wherein the initialization request is transmitted in response to the network condition being greater than a threshold level.

[0123] Example 22 is the method according to any one of Examples 1 to 21, wherein the initialization request includes at least one prefetch parameter to enable the first application to prefetch content from a server computer over the network as a background process.

[0124] Embodiment 23 is the method of any one of Embodiments 1 to 22, further comprising obtaining one or more signals.

[0125] Example 24 is the method of any one of Examples 1 to 23, wherein the one or more signals include at least one of a battery charge level, an available memory level, a dot progression rate, a predicted conversion rate, or a network condition.

[0126] Example 25 is the method of any one of Examples 1 to 24, further comprising determining to pre - start a second application based on the one or more signals.

[0127] Example 26 is the method of any one of Examples 1 to 25, further comprising determining to prefetch content from a server computer over the network based on the one or more signals.

[0128] Example 27 is the method according to any one of Examples 1 to 26, wherein the initialization request includes at least one prefetch parameter to enable the second application to prefetch the content as a background process.

[0129] Example 28 is the method of any one of Examples 1 to 27, wherein the second application includes a digital store application.

[0130] Example 29 is the method of any one of Examples 1 to 28, wherein the first application includes a non - browser application.

[0131] Example 30 is the method of any one of Examples 1 to 29, further comprising receiving an indication of a user action taken with respect to content displayed on a display of the computing device.

[0132] Example 31 is a method of any one of Examples 1 to 30, further comprising loading a second application in the foreground process on a display of a computing device.

[0133] Example 32 is a non-transitory computer-readable storage medium including instructions stored thereon, the instructions being configured to cause a computing system to perform the method of any one of Examples 1 to 31 when executed by at least one processor.

[0134] Example 33 is an apparatus comprising means for performing the method of any one of Examples 1 to 31.

[0135] Example 34 is an apparatus comprising: at least one processor; and at least one memory including computer program code; the at least one memory and the computer program code being configured to, with the at least one processor, cause the apparatus to at least perform the method of any one of Examples 1 to 31.

[0136] Example 35 is a method of pre-starting an application using inter-process communication, the method including receiving an initialization request from a second application at an initialization application programming interface (API) of a first application, the second application being executed as a foreground process of an operating system of a computing device before a user action taken with respect to content displayed on a display of the computing device, establishing an inter-process communication connection between the first application and the second application in response to the initialization request to enable the first application and the second application to communicate with each other, and starting the first application as a background process of the operating system of the computing device in response to the initialization request.

[0137] Example 36 is the method of Example 35, wherein the initialization request includes at least one prefetch parameter.

[0138] Example 37 is the method of any one of Examples 35 to 36, further comprising retrieving content from a server computer by the first application over a network according to the at least one prefetch parameter.

[0139] Example 38 is the method of any one of Examples 35 to 37, further comprising storing the content in a memory device of the computing device by the first application.

[0140] Example 39 is the method of any one of Examples 35 to 38, further comprising receiving a termination request from the second application at the initialization API of the second application in response to the content not being displayed on the display or in response to a timer expiration.

[0141] Example 40 is the method of any one of Examples 35 to 39, which further includes terminating the inter-process communication connection such that the second application executed as a background process is terminated.

[0142] Example 41 is the method of any one of Examples 35 to 40, wherein the computing device is a mobile computing device.

[0143] Example 42 is the method of any one of Examples 35 to 41, wherein the first application is a digital store application.

[0144] Example 43 is the method of any one of Examples 35 to 42, wherein the second application is a non-browser application.

[0145] Example 44 is a non-transitory computer-readable storage medium including instructions stored thereon, the instructions being configured to cause a computing system to perform the method of any one of Examples 35 to 43 when executed by at least one processor.

[0146] Example 45 is an apparatus including means for performing the method of any one of Examples 35 to 43.

[0147] Example 46 is an apparatus including: at least one processor; and at least one memory including computer program code; the at least one memory and the computer program code being configured to, with the at least one processor, cause the apparatus to at least perform the method of any one of Examples 35 to 43.

[0148] Figure 8 Examples of computer device 800 and mobile computer device 850 that can be used with the techniques described herein are shown. In some implementations, computer device 800 is an example of computing device 102, computing device 202, computing device 302, or computing device 402. In some implementations, computer device 800 is an example of server computer 160. In some implementations, mobile computer device 850 is an example of computing device 102, computing device 202, computing device 302, or computing device 402. Computing device 800 is intended to represent various forms of digital computers such as laptop computers, desktop computers, tablet computers, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other suitable computing devices. Computing device 850 is intended to represent various forms of mobile devices such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown herein, their connections and relationships, and their functions are merely exemplary and are not intended to limit the implementations of the invention described and / or claimed in this document.

[0149] The computing device 800 includes a processor 802, a memory 804, a storage device 806, a high-speed interface 808 connected to the memory 804 and the high-speed expansion port 810, and a low-speed interface 812 connected to the low-speed bus 814 and the storage device 806. The processor 802 can be a semiconductor-based processor. The memory 804 can be a semiconductor-based memory. Each of the components 802, 804, 806, 808, 810, and 812 is interconnected using various buses and can be suitably mounted on a common motherboard or otherwise installed. The processor 802 can process instructions for execution within the computing device 800, including instructions stored in the memory 804 or the storage device 806, to display graphical information of a GUI on an external input / output device (such as a display 816 coupled to the high-speed interface 808). In other implementations, multiple processors and / or multiple buses and multiple memories and memory types can be suitably used. Additionally, multiple computing devices 800 can be connected, where each device provides a portion of the necessary operations (such as, for example, as a server farm, a set of blade servers, or a multi-processor system).

[0150] The memory 804 stores information within the computing device 800. In one implementation, the memory 804 is one or more volatile memory units. In another implementation, the memory 804 is one or more non-volatile memory units. The memory 804 can also be another form of computer-readable medium, such as a magnetic disk or an optical disk.

[0151] The storage device 806 is capable of providing large-capacity storage for the computing device 800. In one implementation, the storage device 806 can be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine-readable medium, such as the memory 804, the storage device 806, or the memory on the processor 802.

[0152] The high-speed controller 808 manages the bandwidth-intensive operations of the computing device 800, while the low-speed controller 812 manages the less bandwidth-intensive operations. This distribution of functionality is merely exemplary. In one implementation, the high-speed controller 808 is coupled to the memory 804, the display 816 (e.g., via a graphics processor or accelerator), and the high-speed expansion port 810, which can accept various expansion cards (not shown). In this implementation, the low-speed controller 812 is coupled to the storage device 806 and the low-speed expansion port 814. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device, such as a switch or a router, for example, via a network adapter.

[0153] The computing device 800 can be implemented in a variety of different forms, as shown in the figure. For example, it can be implemented as a standard server 820, or implemented multiple times in a group of such servers. It can also be implemented as part of a rack server system 824. In addition, the present invention can be implemented in a personal computer such as a laptop computer 822. Alternatively, the components from the computing device 800 can be combined with other components in a mobile device (not shown), such as device 850. Each such device can include one or more computing devices 800, 850, and the entire system can consist of multiple computing devices 800, 850 that communicate with each other.

[0154] The computing device 850 includes components such as a processor 852, a memory 864, an input / output device such as a display 854, a communication interface 866, and a transceiver 868. The device 850 can also have a storage device, such as a microdrive or other device, to provide additional storage. Each of the components 850, 852, 864, 854, 866, and 868 is interconnected using various buses, and several components can be suitably mounted on a common motherboard or otherwise installed.

[0155] The processor 852 can execute instructions within the computing device 850, including instructions stored in the memory 864. The processor can be implemented as a chipset of chips, which includes individual and multiple analog and digital processors. For example, the processor can provide the coordination of the other components of the device 850, such as the control of the user interface, the applications running on the device 850, and the wireless communication of the device 850.

[0156] The processor 852 can communicate with the user through the control interface 858 and the display interface 856 coupled to the display 854. The display 854 can be, for example, a TFT LCD (Thin Film Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other suitable display technology. The display interface 856 can include appropriate circuitry for driving the display 854 to present graphics and other information to the user. The control interface 858 can receive commands from the user and convert them for submission to the processor 852. In addition, an external interface 862 can be provided to communicate with the processor 852 to enable near-field communication of the device 850 with other devices. The external interface 862 can provide, for example, wired communication in some implementations, or wireless communication in other implementations, and can also use multiple interfaces.

[0157] The memory 864 stores information within the computing device 850. The memory 864 can be implemented as one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. Extended memory 874 can also be provided and connected to the device 850 through the expansion interface 872, which can include, for example, a SIMM (Single In-line Memory Module) card interface. Such extended memory 874 can provide additional storage space for the device 850, or can also store applications or other information for the device 850. Specifically, the extended memory 874 can include instructions for executing or supplementing the above processes, and can also include security information. Thus, for example, the extended memory 874 can be provided as a security module for the device 850 and can be programmed with instructions that allow for the secure use of the device 850. In addition, security applications can be provided via the SIMM card and additional information, such as placing identification information on the SIMM card in a non-stealable manner.

[0158] The memory can include, for example, flash memory and / or NVRAM memory, as described below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine-readable medium, such as the memory 864, the extended memory 874, or the memory on the processor 852, which can be received, for example, through the transceiver 868 or the external interface 862.

[0159] Device 850 can communicate wirelessly via communication interface 866, which may include digital signal processing circuitry when necessary. Communication interface 866 can provide communication under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messages, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, etc. Such communication can occur, for example, via radio frequency transceiver 868. Additionally, short-range communication can occur, such as using Bluetooth, Wi-Fi, or other such transceivers (not shown). Further, a GPS (Global Positioning System) receiver module 870 can provide additional navigation and location-related wireless data to device 850, which can be appropriately used by applications running on device 850.

[0160] Device 850 can also communicate audibly using audio codec 860, which can receive oral information from a user and convert it into usable digital information. Audio codec 860 can similarly generate audible sounds for the user, such as via a speaker, e.g., in the handset of device 850. Such sounds can include sounds from a voice telephone call, can include recorded sounds (e.g., voice messages, music files, etc.), and can also include sounds generated by applications operating on device 850.

[0161] Computing device 850 can be implemented in many different forms, as shown. For example, it can be implemented as a cellular phone 880. It can also be implemented as part of a smart phone 882, a personal digital assistant, or other similar mobile devices.

[0162] In addition to the above description, controls can be provided to a user to allow the user to make choices regarding whether and when the systems, programs, or features described herein can collect user information (e.g., information about the user's social network, social actions or activities, occupation, user preferences, or the user's current location), and whether the user sends content or communications from the server. Further, before storing or using certain data, the data can be processed in one or more ways so as to remove personally identifiable information. For example, the identity of the user can be treated so that personally identifiable information cannot be determined for the user, or the user's geographical location can be generalized where location information is obtained (e.g., at the city, zip code, or state level) so that the user's specific location cannot be determined. Thus, the user can control what information about the user is collected, how that information is used, and what information is provided to the user.

[0163] The various implementations of the systems and techniques described herein can be implemented in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include implementations in one or more computer programs that are executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

[0164] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages, and / or in assembly / machine language. As used herein, the term “machine-readable medium,” “computer-readable medium” refers to any computer program product, apparatus, and / or device (e.g., a disk, optical disk, memory, programmable logic device (PLD)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and / or data to a programmable processor.

[0165] To provide for interaction with a user, the systems and techniques described herein can be implemented on a computer having 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 for interaction with the user; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.

[0166] The systems and techniques described herein can be implemented in a computing system that includes a backend component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a frontend component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein). Or any combination of such backend, middleware, or frontend components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.

[0167] A computing system may include a client and a server. The client and the server are typically far apart from each other and typically interact via a communication network. The relationship between the client and the server is created by computer programs that run on the respective computers and have a client-server relationship with each other.

[0168] In this specification and the appended claims, the singular forms "a", "an" and "the" do not exclude plural references unless the context clearly dictates otherwise. Additionally, unless the context clearly dictates otherwise, conjunctions such as "and", "or" and "and / or" are inclusive. For example, "A and / or B" includes A alone, B alone and A with B. Further, the connecting lines or connectors shown in the various figures presented herein are intended to represent example functional relationships and / or physical or logical couplings between the various elements. Many alternative or additional functional relationships, physical connections or logical connections may exist in the actual device. Additionally, no item or component is essential for the practice of the embodiments disclosed herein unless the element is specifically described as "essential" or "critical".

[0169] Terms such as but not limited to about, substantially, generally etc. are used herein to indicate values or ranges that are not required and need not be specified with their exact values. As used herein, the terms discussed above will have the meaning readily and immediately understood by a person of ordinary skill in the art.

[0170] Further, terms such as up, down, top, bottom, side, end, front, back etc. are used herein with reference to the orientation currently being considered or shown. If they are considered with respect to another orientation, it should be understood that these terms must be modified accordingly.

[0171] In this specification and the appended claims, the singular forms "a", "an" and "the" do not exclude plural references unless the context clearly indicates otherwise. Additionally, unless the context clearly dictates otherwise, conjunctions such as "and", "or" and "and / or" are inclusive. For example, "A and / or B" includes A alone, B alone and A with B.

[0172] Although certain example methods, devices and articles have been described herein, the scope of coverage of this patent is not limited thereto. It should be understood that the terms used herein are for the purpose of describing particular aspects and not for purposes of limitation. Rather, this patent covers all methods, devices and articles that fall entirely within the scope of the claims of this patent.

Claims

1. A method for pre-starting an application using inter-process communication, characterized in that, The method includes: Executing a first application as a foreground process of an operating system of a computing device; Displaying, by the first application, content on a display of the computing device, the content being associated with an action executable by a second application; and Before a user action is taken on the content displayed on the display, sending, by the first application, an initialization request to an initialization application programming interface (API) of the second application, The initialization request being configured to create an inter-process communication connection between the first application and the second application to enable the first application and the second application to communicate with each other, and to cause the second application to be started as a background process of the operating system of the computing device, wherein the foreground process is bound to the background process such that the background process is given, by the operating system, a memory priority corresponding to the memory priority of the foreground process.

2. The method according to claim 1, wherein Further includes: In response to the content being removed from the display, sending, by the first application, a termination request to the initialization API of the second application, the termination request being configured to cause the background process executing the second application to be terminated.

3. The method according to claim 1, wherein Further includes: In response to a timer expiration, sending, by the first application, a termination request to the initialization API of the second application, the termination request being configured to cause the background process executing the second application to be terminated.

4. The method according to claim 1, wherein Further includes: In response to the initialization request, creating an inter-process communication connection between the first application and the second application to enable the first application and the second application to communicate with each other.

5. The method according to claim 4, wherein Further includes: In response to the content being removed from the display or in response to a timer expiration, terminating the inter-process communication connection.

6. The method according to claim 1, wherein Further includes: The second application determines whether to send the initialization request to the initialization API of the second application based on at least one signal.

7. The method according to claim 6, characterized in that, The at least one signal includes a battery charge level, wherein the initialization request is sent in response to the battery charge level being greater than a threshold level.

8. The method according to claim 6, characterized in that, The at least one signal includes an available memory level, wherein the initialization request is sent in response to the available memory level being greater than a threshold level.

9. The method according to claim 6, wherein The at least one signal includes a dot progression rate associated with the content displayed by the first application, wherein the initialization request is sent in response to the dot progression rate being greater than a threshold level.

10. The method according to claim 6, characterized in that The at least one signal includes a predicted conversion rate associated with the content displayed by the first application, wherein the initialization request is sent in response to the predicted conversion rate being greater than a threshold level.

11. The method according to claim 6, wherein The at least one signal includes a network condition of the computing device, wherein the initialization request is sent in response to the network condition being greater than a threshold level.

12. The method according to claim 1, characterized in that, The initialization request includes at least one prefetch parameter to enable the first application to prefetch content from a server computer over a network as a background process.

13. A non-transitory computer-readable medium storing executable instructions, characterized in that, The executable instructions, when executed by at least one processor, cause the at least one processor to perform operations, the operations including: Executing a first application as a foreground process of an operating system of a computing device; Display content on a display of the computing device by the first application, the content being associated with an action executable by a second application; and Before a user action is taken on the content displayed on the display, send an initialization request from the first application to an initialization application programming interface (API) of the second application, The initialization request is configured to create an inter-process communication connection between the first application and the second application, so that the first application and the second application can communicate with each other, and cause the second application to be started as a background process of the operating system of the computing device, wherein the foreground process is bound to the background process, so that the background process is given a memory priority by the operating system corresponding to the memory priority of the foreground process.

14. The non-transitory computer-readable medium according to claim 13, wherein, The operation further includes: Obtain one or more signals, the one or more signals including at least one of a battery charge level, an available memory level, a dot rate, a predicted conversion rate, and a network condition; Determine to pre-start the second application based on the one or more signals; and Determine to prefetch content from a server computer via a network based on the one or more signals, wherein the initialization request includes at least one prefetch parameter to enable the second application to prefetch the content as a background process.

15. The non-transitory computer-readable medium according to claim 13, wherein The second application includes a digital store application, and the first application includes a non-browser application.

16. The non-transitory computer-readable medium according to claim 13, wherein The operation further includes: Receive an indication of a user action taken on the content displayed on the display of the computing device; and Execute the second application in a foreground process on the display of the computing device.

17. The non-transitory computer-readable medium according to claim 13, wherein The initialization request is configured to establish an inter-process communication connection between the first application and the second application, so that the first application and the second application can communicate with each other, wherein the operation further includes: In response to the content being removed from the display, or in response to a timer expiration, send a termination request from the first application to the initialization API of the second application, the termination request being configured to terminate the second application executing as the background process.

18. An apparatus for pre-starting an application using inter-process communication, characterized in that, The apparatus includes: At least one processor; and A non-transitory computer-readable medium storing executable instructions, the executable instructions, when executed by the at least one processor, cause the at least one processor to: Receive an initialization request from a second application at an initialization application programming interface (API) of a first application before a user action is taken on content displayed on a display of a computing device by the second application, the second application executing as a foreground process of the operating system of the computing device, the content being associated with an action executable by the second application; In response to the initialization request, create an inter-process communication connection between the first application and the second application, so that the first application and the second application can communicate with each other; and In response to the initialization request, start the first application as a background process of the operating system of the computing device Among them, to create the inter-process communication connection, the foreground process is bound to the background process, so that the background process is given by the operating system a memory priority corresponding to the memory priority of the foreground process.

19. The device according to claim 18, characterized in that, The initialization request includes at least one prefetch parameter, wherein the executable instructions include instructions that cause the at least one processor to perform the following actions when executed by the at least one processor: The first application retrieves content from a server computer via a network according to the at least one prefetch parameter; and The first application stores the content in a memory device of the computing device.

20. The device according to claim 18, characterized in that, The executable instructions include instructions that cause the at least one processor to perform the following actions when executed by the at least one processor: In response to the removal of the content from the display or in response to the expiration of a timer, receive a termination request from the second application at the initialization API of the second application; Terminate the inter-process communication connection; And Terminate the second application running as the background process.

Citation Information

Patent Citations

  • Messaging application interacting with one or more extension applications

    CN107491296A