Dynamic application content on home screen

By defining widget user interfaces using declarative syntax and pre-rendering dynamic data using background processes, the problem of inefficient user access to application information is solved, achieving low latency and efficient home screen display.

CN115917504BActive Publication Date: 2026-06-09APPLE INC

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
APPLE INC
Filing Date
2021-06-17
Publication Date
2026-06-09

Smart Images

  • Figure CN115917504B_ABST
    Figure CN115917504B_ABST
Patent Text Reader

Abstract

A device implementing a system for rendering widget user interfaces to display dynamic application content on a home screen includes a processor configured to identify a container associated with a first home screen, the container corresponding to an application. The processor is further configured to retrieve data describing a plurality of user interfaces of the application associated with respective times. The processor is further configured to render the plurality of user interfaces prior to the respective times based on the data. The processor is further configured to determine that the first home screen is currently displayed. The processor is also configured to select a first rendered user interface from the rendered user interfaces, wherein the respective time associated with the first rendered user interface corresponds to a current time. The processor is further configured to display the selected first rendered user interface on the first home screen.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 041,762, filed June 19, 2020, entitled “Dynamic Application Content On Home Screen,” the entire disclosure of which is incorporated herein by reference. Technical Field

[0003] This specification relates generally to user interfaces, including methods and systems for efficiently rendering widget user interfaces to display dynamic application content on the home screen. Background Technology

[0004] Applications can provide information that users may find interesting. However, to access this information, users may need to launch the associated application from a shortcut displayed on the home screen. This can take time to locate the application from one or more home screens, wait for the application to launch, and navigate to the relevant section of the application that displays the information of interest to the user. This process is inefficient in terms of both user interaction time and device processing time. Therefore, there is a need to provide streamlined access to application information in an efficient manner. Summary of the Invention

[0005] This subject matter provides methods and systems for efficiently rendering widget user interfaces to display dynamic application content on the home screen. The home screen can be represented by a list of containers containing various content, including shortcuts for launching the application or widget user interfaces for associated installed applications. Widget user interfaces can be defined using a hierarchical view with a declarative syntax, where data for display can be retrieved from application extensions to minimize application wake-ups. Widget user interfaces can be pre-rendered by a background or daemon for a future time. When a container for a widget is displayed on the home screen, one of the rendered user interfaces can be shown based on the current time, providing a responsive user experience with low latency. Various strategies can be implemented for containers regarding rendering update timing, rendering update frequency, and rendering execution time to optimize resource usage. In this way, widget user interfaces for displaying dynamic application content on the home screen can be effectively supported.

[0006] According to various implementations, a method is provided for efficiently rendering a widget-based user interface for displaying dynamic application content on a home screen. The method may include identifying a container associated with a first home screen, the container corresponding to an application, by a first device. The method may include retrieving data by the first device describing multiple user interfaces of the application, each user interface associated with a corresponding time. The method may include rendering the multiple user interfaces by the first device and at least in part based on the data before the corresponding time associated with the user interface. The method may include determining by the first device that the first home screen is currently displayed. The method may include selecting a first rendered user interface from a plurality of rendered user interfaces by the first device, wherein the corresponding time associated with the first rendered user interface corresponds to the current time. The method may include displaying the selected first rendered user interface on the currently displayed first home screen by the first device.

[0007] Other aspects include corresponding systems, apparatuses, and computer program products for implementing computer-based methods.

[0008] Other aspects, features, and advantages of the present invention, as well as the structure and operation of various aspects of the present invention, will be described in detail below with reference to the accompanying drawings. Attached Figure Description

[0009] Some features of this subject matter are set forth in the appended claims. However, for illustrative purposes, several embodiments of this subject matter are illustrated in the following figures.

[0010] Figure 1 An exemplary network environment according to one or more specific implementations is shown, in which a system for providing efficient rendering of widget user interfaces to display dynamic application content on the main screen is implemented.

[0011] Figure 2 A block diagram of an exemplary electronic device according to one or more specific implementations is shown.

[0012] Figure 3 A block diagram of an exemplary electronic device is shown, which executes background processes according to one or more specific implementations and stores application, widget, and rendering timelines.

[0013] Figure 4A An exemplary user interface for adding a widget to the home screen is shown, according to one or more specific implementations.

[0014] Figure 4B An exemplary user interface for customizing a widget user interface to be added to the home screen, according to one or more specific implementations, is shown.

[0015] Figure 5An exemplary home screen user interface is shown according to one or more specific implementations of a display widget user interface.

[0016] Figure 6 A block diagram is shown illustrating a user interface for selecting which rendering to display in a widget container, based on one or more specific implementations.

[0017] Figure 7 An exemplary process is shown, according to one or more specific implementations, for providing efficient rendering of widget user interfaces to display dynamic application content on the home screen.

[0018] Figure 8 Exemplary electronic systems, according to one or more specific implementations, are shown that can be used to implement various aspects of the subject matter technology. Detailed Implementation

[0019] The specific embodiments shown below are intended to describe various configurations of the subject matter and are not intended to represent the only configuration in which the subject matter can be practiced. The accompanying drawings are incorporated herein and form part of the specific embodiments. The specific embodiments include particular details intended to provide a thorough understanding of the subject matter. However, the subject matter is not limited to the specific details described herein and can be practiced using one or more other specific embodiments. In one or more specific embodiments, structures and components are shown in block diagram form to avoid obscuring the concepts of the subject matter.

[0020] To provide readily accessible information from installed applications, operating systems can support the installation of applications (also known as widgets) displayed on the home screen. Widgets can display information from associated applications without requiring the user to launch those applications. While widgets can improve productivity and ease of use, existing systems that support widgets on the home screen may not be optimized for efficient implementations on mobile devices.

[0021] For example, widgets could be allowed to execute arbitrary code with unlimited update frequency and execution time, negatively impacting device battery life, performance, and responsiveness. To manage widgets efficiently and uniformly while providing flexible user interface layouts, declarative syntax can be used to define widget user interfaces within containers, where data for display can be retrieved from application extensions to minimize application wake-ups. Widget user interfaces can be pre-rendered by a background or daemon for future display times. When a container for widgets is displayed on the main screen, one of the rendered user interfaces can be shown based on the current time, providing a responsive user experience with low latency. Various strategies can be implemented for containers regarding update timing, update frequency, and rendering execution time to optimize resource usage.

[0022] Figure 1 An exemplary network environment according to one or more embodiments is illustrated, in which a system for providing efficient rendering of widget user interfaces to display dynamic application content on a home screen is implemented. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.

[0023] Network environment 100 includes electronic devices 102, 104, 106, 108, and 110 (hereinafter referred to as "electronic devices 102-110"), application storage server 114, push notification server 116, and cloud storage server 118 (hereinafter referred to as "servers 114-118"), and network 112. Network 112 may be communicatively coupled (directly or indirectly) to any two or more of, for example, electronic devices 102-110 and servers 114-118. In one or more embodiments, network 112 may be an interconnection network of devices that may include the Internet and / or be communicatively coupled to the Internet. In one or more embodiments, network 112 may correspond to a local area network (e.g., a WiFi network) connecting one or more of electronic devices 102-110. For illustrative purposes, Figure 1 The network environment 100 is illustrated as including electronic devices 102-110 and servers 114-118; however, the network environment 100 may include any number of electronic devices and any number of servers.

[0024] One or more of the electronic devices 102-110 can be, for example, portable computing devices such as laptops, smartphones, smart speakers, digital media players, peripherals (e.g., digital cameras, headphones), tablets, wearable devices such as smartwatches, belts, etc., or any other suitable device including, for example, one or more wireless interfaces, such as WLAN wireless devices, cellular wireless devices, Bluetooth wireless devices, Zigbee wireless devices, near field communication (NFC) wireless devices, and / or other wireless devices. Figure 1 In this embodiment, by way of example, electronic device 102 is depicted as a smartphone, electronic device 104 as a laptop computer, electronic device 106 as a smartwatch, and electronic device 110 as a tablet computer. By way of example, electronic device 108 is depicted as a digital media player (e.g., configured to receive digital data such as music and / or video and stream it to a television or other video display). In one or more embodiments, electronic device 108 may be integrated into a display device.

[0025] One or more of the electronic devices 102-110 may be configured to communicate or otherwise interact with one or more of the servers 114-118. Each electronic device in electronic devices 102-110 may be and / or may include, as described below, relative to... Figure 2 The equipment discussed and / or the following relative to Figure 8 All or part of the electronic system discussed.

[0026] In one or more specific implementations, application store server 114 may be configured to provide applications and associated widget data extensions and widget user interfaces for storage and execution on electronic devices 102-110. Electronic devices 102-110 may periodically query application store server 114 for updated applications, widget data extensions, or widget user interfaces. Updates from application store server 114 may also be pushed to electronic devices 102-110. Push notification server 116 may be configured to receive push notifications for third-party applications, which may be pushed to electronic devices 102-110 in accordance with update policies, such as... Figure 3 As further described herein, cloud storage server 118 can be configured to store data associated with a user account (e.g., files such as documents and / or photos) for download on a user's device, share data and / or send data to other users, and / or (e.g., wirelessly) back up device data.

[0027] One or more of servers 114-118 may be and / or may include the following in combination. Figure 8 All or part of the electronic system described herein. Each of servers 114-118 may include one or more servers, such as a server cloud. For illustrative purposes, a single server is shown and discussed for each of servers 114-118 with respect to various operations. However, these and other operations discussed herein may be performed by one or more servers, and each different operation may be performed by the same or different servers.

[0028] Figure 2 Exemplary devices are shown, according to one or more specific embodiments, that can implement a system for executing machine learning models from memory. For illustrative purposes, this document primarily refers to... Figure 1 To describe electronic device 102 Figure 2 .However, Figure 2 Can correspond to Figure 1Any of the electronic devices 102-110. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.

[0029] Electronic device 102 may include storage device 202, memory 204, processor 212, and communication interface 216. Storage device 202 may correspond to a first type of memory, such as non-volatile memory, including flash memory devices such as NAND flash memory and / or magnetic storage devices. Memory 204 may correspond to a second type of memory, such as volatile memory, including dynamic random access memory (DRAM). Memory 204 may include appropriate logic components, circuitry, and / or code enabling the storage of various types of information, such as received data, generated data, code, and / or configuration information.

[0030] Processor 212 may include appropriate logic components, circuitry, and / or code that enable the processing of data and / or control of the operation of electronic device 102. In this regard, processor 212 may be enabled to provide control signals to various other components of electronic device 102. Processor 212 may also control data transfer between various parts of electronic device 102, including storage device 202 and memory 204. Additionally, processor 212 may enable the implementation of an operating system or otherwise execute code to manage the operation of electronic device 102. Processor 212 may include a general-purpose processor, a graphics processing unit (GPU), and / or a dedicated processor.

[0031] In one or more implementations, memory 204 may store one or more background processes used for managing the main screen, rendering widget user interfaces chronologically, and implementing update strategies. (See the following for details.) Figure 3 As described, the background process can generate future rendered views of the widget user interface that will be displayed on the main screen.

[0032] Communication interface 216 may include suitable logic components, circuitry, and / or code that enable wired or wireless communication via network 112 between any of electronic devices 102-110 and one or more of servers 114-118. Communication interface 206 may include one or more of, for example, Bluetooth, cellular, NFC, Zigbee, WLAN, and USB communication interfaces, or generally, any communication interface.

[0033] In one or more embodiments, one or more of the processor 212, storage device 202, memory 204, communication interface 216, and / or one or more portions thereof may be implemented in software (e.g., subroutines and code), in hardware (e.g., application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), programmable logic device (PLD), controller, state machine, gated logic, discrete hardware component, or any other suitable device), and / or a combination of both.

[0034] Figure 3 A block diagram of an electronic device 102, according to one or more specific embodiments, for executing background processes and storing application 310, widget 320, and timeline 330 is shown. Figure 3 As shown, electronic device 102 may include storage device 202, memory 204, and processor 212. Storage device 202 may include application 310, widget 320, and timeline 330. Application 310 may include application 312A, application 312B, application 312C, data extension 314A, data extension 314B, and data extension 314C. Widget 320 may include containers 322A, 322B, and 322C. Container 322A may include user interface (UI) definition 324A, data 326A, and configuration 328A. Container 322B may include user interface (UI) definition 324B, data 326B, and configuration 328B. Container 322C may include user interface (UI) definition 324C, data 326C, and configuration 328C. Timeline 330 may include rendered views 332A, 332B, 332C, 332D, 332E, 332F, and 332G. Memory 204 may include main screen manager 350, timeline renderer 352, and strategy manager 354.

[0035] like Figure 3 As shown, multiple applications 310 can be installed on electronic device 102, including application 312A corresponding to a calendar application, application 312B corresponding to a sports score application, and application 312C corresponding to a weather application. Applications 310 may, for example, be previously downloaded from application store server 114. Each application 312A-312C is also configured with corresponding data extensions 314A-314C. Data extensions 314A-314C may be lightweight data providers for widget data, enabling the widget user interface to be updated without directly querying widget data from the associated applications 312A-312C, thus bypassing the computationally expensive process of waking up or launching applications 312A-312C.

[0036] Optionally, an associated widget user interface can be provided for each application in application 310. Widget 320 can store associated widgets for each of applications 312A-312C in corresponding containers 322A-322C. For example, container 322A includes user interface (UI) definition 324A, data 326A, and configuration 328A. UI definition 324A defines the user interface for the widget in application 312A at a given time. UI definition 324A can be provided using declarative syntax, such as by declaratively providing the user interface definition with respect to the current time, which can then be interpreted to determine the user interface definition at a future time. User interface elements in UI definition 324A can be defined in a tree or view hierarchy, where each node in the tree represents a specific user interface element. A complete user interface can be provided by rendering the entire view hierarchy. Therefore, an array of view hierarchies can be provided to define the user interface associated with a corresponding future time.

[0037] like Figure 3 As shown, UI definition 324A can query data extension 314A to retrieve data to be displayed by the corresponding widget. For example, data extension 314A can provide user calendar entries previously entered into application 312A. Data 326A can include asset resources and placeholder content, such as when data extension 314A is unavailable or too costly to invoke, such as when the widget update budget is exceeded. For example, placeholder content can correspond to the application's icon. This placeholder content can also include sample offline data to be displayed in the live preview when a new widget is added. Configuration 328A can include configuration items that can include user-adjustable settings such as widget size, widget type, and widget parameters. Containers 322B and 322C can contain elements similar to container 322A but used for the corresponding applications 312B and 312C.

[0038] Note that data extensions 314A-314C are separate from their respective applications 312A-312C. Therefore, the timeline renderer 352 can request dynamic data to be displayed in the widget user interface from the data extensions 314A-314C, rather than directly querying the applications 312A-312C. This minimizes the computationally expensive startup and querying of the applications 312A-312C, resulting in more efficient rendering. For example, when the applications 312A-312C were previously active, they can update the corresponding shared database or flat file accessible to the data extensions 314A-314C, which contains dynamic data that may be used in future widget user interface renderings performed by the timeline renderer 352.

[0039] In this way, data extensions 314A-314C can minimize wake-ups of associated applications 312A-312C to improve computational efficiency. However, if the dynamic data necessary for rendering is unavailable in data extensions 314A-314C, a wake-up of the associated applications 312A-312C can be initiated, provided that policy manager 354 allows it, for example, if the application update budget is met. Furthermore, if the associated applications 312A-312C are already running in the background, data extensions 314A-314C can query the already running applications 312A-312C to update the shared database or flat file with the new dynamic data, since this query does not trigger computationally expensive wake-ups or startup operations.

[0040] The strategy manager 354 determines when to update the timeline 330 based on various update strategies. Each component in containers 322A-322C can request a rendered view to be provided according to an update schedule, which can define, for example, the desired update frequency, the desired update time window, and the desired earliest start date and time for rendering. The strategy manager 354 strives to serve the update schedules of all components while enforcing the update budget.

[0041] For example, in some implementations, each component may be set with a fixed periodic update budget that resets periodically, such as a budget of 50 updates reset daily. Normal rendering of a view based on a requested update schedule may consume a single update, while receiving a push notification from push notification server 116 to render a new view may consume two updates. For example, when a new sports score becomes available, a score update may be pushed to data extension 314B via push notification server 116, which may have previously received score updates via a third-party provider server associated with application 312B. Applications with a large number of static and predictable updates (such as application 312A for calendars and application 312C for weather) may request high-frequency update schedules, as shown in the three rendered views 332A-332C for application 312A and the three rendered views 332E-332G for application 312C. Applications with less predictable updates (such as the sports scoring application 312B) can request low-frequency update scheduling, as shown in the single-rendered view 332D, thus reserving update budget for push notifications. When a widget runs out of its update budget, it can continue to display the last rendered view, or placeholder content such as the application icon can be displayed in place of future updates.

[0042] Because updates can be provided as best as possible, the policy manager 354 can use one or more policies to override or adjust the requested update schedule. For example, one policy may prioritize rendering updates for execution during idle periods to avoid impacting interface responsiveness and improve power management, such as when electronic device 102 is about to enter standby mode. Another policy may prioritize merged updates from multiple widgets to minimize update overhead. Yet another policy may prioritize updates for widgets with a higher probability of being displayed, such as widgets placed on the leftmost home screen page or higher on a widget stack, as further described below. To accommodate various policies for efficient rendering, the policy manager 354 may defer or adjust the timing of requested scheduled updates for widget 320.

[0043] In this way, the strategy manager 354 can use the timeline renderer 352 to efficiently render the widget user interface before display. This allows the electronic device 102 to minimize the on-demand rendering of the widget user interface immediately before display, which could introduce high latency and inefficient use of available processing resources. Furthermore, the management and development of widget user interfaces are highly facilitated because a uniform and standardized format can be used to define the widget user interface within the container, as developers do not need to develop custom widgets for each application.

[0044] The strategy manager 354 can invoke the timeline renderer 352 to render one or more rendered views into the timeline 330 based on the requested widget update schedule, widget update budget, and update strategy, as discussed above. For example, a specific number of view hierarchies can be traversed and rendered to provide a corresponding number of rendered views. Figure 3 In the example shown, three view hierarchies are rendered for each of UI definitions 324A and 324C, while one view hierarchy is rendered for UI definition 324B. The timeline renderer 352 can accordingly render one or more rendered views of the widget user interface for an associated future timestamp, which may also define a time range. For example, referring to container 322A, the timeline renderer 352 can use UI definition 324A and data 326A (which can use configuration 328A to query data extension 314A) to generate a rendered view 332A corresponding to time T1, a rendered view 332B corresponding to time T2, and a rendered view 332C corresponding to time T3. Similarly, the timeline renderer 352 can generate a rendered view 332D for container 322B and rendered views 332E-332G for container 322C.

[0045] Times T1, T2, and T3 can correspond to consecutive future timestamps after rendering. In some implementations, the associated timestamp of each rendered view can correspond to the earliest valid time range. Therefore, rendered view 332A can be valid from time T1 to time T2; at time T2, rendered view 332A may no longer be valid because rendered view 332B is available. Rendered view 332B can be valid from time T2 to time T3, and rendered view 332C can be valid backwards from time T3 until a newer rendered view with a more recent timestamp is available. When a rendered view expires and is no longer valid for the current time, the expired rendered view can be marked for removal from timeline 330, for example, through a garbage collection process.

[0046] The main screen manager 350 may be part of the operating system of the electronic device 102 and may manage the presentation of the main screen and user interaction with the main screen. Accordingly, the main screen manager 350 may determine whether a specific container 332A-332C is displayed on the currently displayed main screen, and if so, further determine, based on the current time, from the timeline 330 a specific rendered view to be shown in the container, as described below. Figure 6 This is described in further detail. If a view valid for the current time is unavailable, the most recently rendered view can be displayed, or placeholder content can be displayed, or a new rendered view can be generated on demand if the policy manager 354 approves the rendering.

[0047] Figure 4A An exemplary user interface for adding widgets to the home screen, according to one or more specific implementations, is shown. Figure 4A As shown, the user interface can display a list of selectable widget user interfaces for adding to the home screen. For example, it can scan a list of installed applications or application 310 and display the corresponding available widget user interfaces from the application store server 114. In some implementations, the list of available widgets may be pre-cached locally by the electronic device 102.

[0048] The displayed widget user interface can correspond to the live view, where the illustrated user interface is the same one displayed during use. However, when processing a large number of widgets at once, querying the associated data extensions (e.g., data extensions 314A-314C) to retrieve the actual live data could take too much processing time. Furthermore, access to network 112 may be unavailable, in which case data extensions 314A-314C may not provide data from external data sources. Therefore, as discussed above, sample offline data from data extensions 326A-326C can be used as example data, suitable for illustrating the appearance of each widget in the live view to avoid querying data extensions 314A-314C.

[0049] Figure 4B An exemplary user interface for customizing a widget user interface to be added to the home screen, according to one or more specific implementations, is shown. For example, if a user selects a weather app widget corresponding to container 322C, various user interfaces can be provided to the user to adjust attributes and parameters in configuration 328C. One of the user-adjustable attributes can be the widget size, where the user can choose from small (1x1), medium (2x1), or large (2x2). These sizes can, for example, correspond to an X x Y grid of icons that will be used on the home screen. Figure 4B As shown, different sizes can display different levels of information, such as hourly weather forecasts in medium-sized widgets in addition to all the information displayed in small-sized widgets. These differences can be stored as part of the corresponding UI definition 324C. If the differences are not defined according to size, the UI layout can simply be scaled and / or rearranged to fit each corresponding widget size.

[0050] Another user-adjustable attribute may include widget type, such as a detailed view of a specific item of interest (e.g., weather in a specific city) versus a general view (e.g., weather in several cities). Yet another user-adjustable user attribute may include widget parameters, which may correspond to user-adjustable preferences and parameters for the associated application. Selection data for widget parameters can be retrieved from the associated data extension. For example, in the context of the weather widget or container 322C, the data extension 314C can be queried for selectable cities to display weather, which can be selected using, for example, a text search input box and / or a drop-down selector menu. Therefore, by adjusting widget parameters in this way, users can also add multiple instances of the same widget with different parameters, for example, to track detailed weather from different cities. Each added and configured widget can be stored in a corresponding container within widget 320. Furthermore, the home screen manager 350 can maintain home screen positioning for each container within widget 320.

[0051] Figure 5 An exemplary home screen user interface is shown, based on one or more specific implementations of a display widget user interface. For example... Figure 5 As shown, application shortcuts 510A to 510Q are displayed in the grid, which can correspond to application icons used to launch associated installed applications. Additionally, placed in the same grid are widget containers 520A, 520B, and 520C, corresponding to the respective containers 322A, 322B, and 322C. Therefore, the home screen can display both application shortcuts and widget user interfaces in the same layout, not just application shortcuts. The home screen manager 350 supports this functionality by storing a list of containers for each home screen that can correspond to application shortcuts, widget containers, or other arbitrary content. As indicated by the home screen indicator 530, the first or leftmost home screen is displayed, where the user has configured three home screens.

[0052] like Figure 5 As shown, the widget containers can be of various sizes, with widget container 520A being a small 1x1 size, widget container 520B being a medium 2x1 size, and widget container 520C being a large 2x2 size. These sizes are exemplary and can support any arbitrary size. In some specific implementations, the home screen manager 350 can prevent larger containers from being shifted by smaller containers when moving and repositioning them. For example, moving widget container 520B cannot move the position of widget container 520C. In this case, if the user wants to move widget container 520B to the lower right corner of the home screen, the user should first move container 520C.

[0053] Furthermore, in some implementations, the home screen manager 350 can support the stacking of multiple widget containers. For example, when multiple widget containers are defined as being in the same position, the home screen manager 350 can treat these multiple widget containers as a stack. The home screen manager 350 can also restrict the widget stack to containers with the same widget size. Users can change the topmost displayed widget container by providing, for example, an up or down swipe gesture, which can trigger an animation of flipping over different widget containers in the stack. As discussed above, the policy manager 354 can prioritize updates to widgets that are more likely to be displayed based on the home screen position, which may include whether the widget container is closer to the top of the widget stack and whether the widget container is placed closer to the first home screen or the leftmost home screen.

[0054] In addition to displaying the widget user interface, the Home Screen Manager 350 also supports interaction with the widget user interface. For example, different parts of the widget user interface can be defined to launch corresponding parts of the associated application in response to user interaction. (Return to Reference) Figure 4A For example, a user can touch the upper area labeled "Team A" in the sports scores widget to find more sports scores associated with "Team A," or they can touch the lower area labeled "Team B" in the sports scores widget to find more sports scores associated with "Team B." The interactive areas of the user interface can be defined in UI definition 324B to access corresponding generic resource identifiers (URIs), which can launch into the associated section of application 312B, or the corresponding historical scores for "Team A" and "Team B."

[0055] Figure 6 A block diagram is shown illustrating a user interface for selecting a rendered widget container, according to one or more specific implementations. The home screen manager 350 may, for example, determine that the home screen selector 620 has selected the widget corresponding to... Figure 5 The first or leftmost home screen of the home screen indicator 530 is used to determine whether the widget container 520A is currently displayed on the display 650, and the widget container 520A can be determined, for example, by referring to the home screen layout 630, which may contain a list of containers for each home screen, as discussed above.

[0056] The main screen manager 350 can then determine the current time 610 and select a rendered view corresponding to the current time 610 from the rendered views 332A-332C. For example, the rendered views 332A-332C may have been previously generated at 4:00 AM, and it is preferable to show the calendar entry for the next calendar event at least 30 minutes in advance. In this case, rendered view 332A may correspond to time T1 at 4:01 AM, rendered view 332B may correspond to time T2 at 12:30 PM, and rendered view 332C may correspond to time T3 at 1:30 PM. Based on the current time 610, the rendered view can be selected accordingly. For example, if the current time 610 indicates 11:00 PM, rendered view 332A can be selected. For example, if the current time 610 indicates 1:40 PM, rendered view 332C can be selected. Therefore, a rendered view with the latest timestamp that is still valid for the current time 610 is preferred for selection. As discussed above, the timestamp of each rendered view can define the earliest valid time range.

[0057] Once a view to be rendered is selected, the main screen renderer 640 can display the selected rendered view in the widget container 520A while rendering the selected main screen according to the main screen selector 620, which selects the main screen based on user input (e.g., left and right swipe input). For example, if the main screen manager 350 selects the rendered view 332C, the rendered view 332C can be displayed within the widget container 520A. Although for simplicity, the display 650 only indicates the widget container 520A, it should be understood that the display 650 may also include other containers indicated in the main screen layout 630 to display, for example... Figure 5 The interface shown.

[0058] In some implementations, the rendered view can be an intermediate representation that can be quickly rendered by the main screen renderer 640 to dynamically adjust to various user interface properties, such as theme color, font, transparency, and other attributes, without requiring a new render of the rendered view. User interface properties can, for example, be inherited from global user interface settings that may be adjustable by the user.

[0059] Figure 7 An exemplary process 700, according to one or more specific implementations, for providing efficient rendering of a widget user interface to display dynamic application content on the home screen is illustrated. This process includes boxes 702, 704, 706, 708, 710, and 712. For illustrative purposes, this document primarily refers to… Figure 1 Process 700 is described using electronic devices 102, 104, 106, 108, and 110. However, process 700 is not limited to electronic devices 102, 104, 106, 108, and 110, and one or more blocks (or operations) of process 700 may be performed by one or more other components and / or other suitable devices. Further for illustrative purposes, the blocks of process 700 are described herein as occurring sequentially or linearly. However, multiple blocks of process 700 may occur in parallel. Moreover, the blocks of process 700 need not be performed in the order shown, and / or one or more blocks of process 700 need not be performed and / or may be replaced by other operations.

[0060] Electronic device 102 identifies a container associated with the first home screen, which corresponds to an application (702). (See reference...) Figure 3 and Figure 6 This could correspond to the container 322A associated with the leftmost home screen in the home screen layout 630, where the electronic device 102 identifies the home screen and the container 322A corresponds to the application 312A.

[0061] Electronic device 102 retrieves data describing multiple user interfaces of the application, each user interface associated with a corresponding time (704). (See reference...) Figure 3This corresponds to electronic device 102 retrieving UI definition 324A, which describes the rendered views 332A, 332B, and 332C of application 312A associated with corresponding times T1, T2, and T3. As discussed above, UI definition 324A can define the user interface using declarative syntax, for example, by defining a widget user interface with respect to the current time to allow the widget user interface to be interpreted at a future time. Furthermore, UI definition 324A can be constructed as an array of view hierarchies, where nodes of the view hierarchy correspond to individual UI elements, and array indices correspond to corresponding times. UI definition 324A can reference extensions or data extensions 314A associated with application 312A to obtain dynamic data for display in the rendered views 332A-332C.

[0062] Electronic device 102 presents multiple user interfaces (706) prior to a corresponding time associated with the user interface, based at least in part on this data. (See also...) Figure 3 This could correspond to the timeline renderer 352 rendering views 332A, 332B, and 332C before the associated corresponding times T1 (4:01 AM), T2 (12:30 PM), and T3 (1:30 PM), based at least on UI definition 324A. For example, as discussed above, the policy manager 354 could determine the time for rendering views 332A-332C based on requested update scheduling, update budget, power management, and other factors. For example, the determined time could correspond to 4:00 AM, when electronic device 102 is idle.

[0063] Electronic device 102 determines that the current display is the first main screen (708). (See reference...) Figure 6 This corresponds to the home screen selector 620 selecting the leftmost home screen, which results in... Figure 5 The user interface is displayed on monitor 650.

[0064] Electronic device 102 selects a first rendered user interface from a plurality of rendered user interfaces, wherein the corresponding time associated with the first rendered user interface corresponds to the current time (710). See reference. Figure 6 This corresponds to the main screen renderer 640 selecting from rendered views 332A, 332B, or 332C, where the corresponding times T1 (4:01 AM), T2 (12:30 PM), or T3 (1:30 PM) correspond to the current time 610. As discussed above, this can be determined by using the timestamps of the earliest valid time range defined for the rendered views 332A-332C, where the most recently rendered view that is still valid for the current time 610 is preferably selected.

[0065] Electronic device 102 displays the selected first rendered user interface (712) on the currently displayed first main screen. (See reference...) Figure 6 This corresponds to the main screen renderer 640 displaying the selected rendered view 332A, 332B, or 332C in the leftmost widget container 520A currently displayed on the main screen on the monitor 650. The resulting rendering on the monitor 650 can look similar to Figure 5 .

[0066] As described above, one aspect of the present invention is the collection and use of data available from specific and legitimate sources for displaying a widget user interface. This disclosure contemplates that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data may include demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, data or records related to a user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or any other personal information.

[0067] This disclosure recognizes that the use of such personal information data in the techniques of this invention can benefit users. For example, personal information data can be used to identify verbal commands. Therefore, the use of such personal information data can facilitate transaction processing (e.g., online transaction processing). Furthermore, this disclosure also contemplates other uses of personal information data that are beneficial to users. For example, health and fitness data can be used according to user preferences to provide insights into their overall health status, or can be used as positive feedback to individuals using the technology to pursue health goals.

[0068] This disclosure assumes that entities responsible for collecting, analyzing, disclosing, transmitting, storing, or otherwise using such personal information data will comply with established privacy policies and / or privacy practices. Specifically, it is expected that such entities will implement and consistently apply privacy practices generally recognized as meeting or exceeding industry or governmental requirements for protecting user privacy. Such information regarding the use of personal data should be prominently displayed and easily accessible to the user, and should be updated as the collection and / or use of data changes. Users' personal information should be collected only for lawful use. Furthermore, such collection / sharing should only occur after receiving user consent or other lawful grounds provided for in applicable law. In addition, such entities should consider taking any necessary steps to protect and safeguard access to such personal information data and ensure that others with access to personal information data comply with their privacy policies and processes. Additionally, such entities may be subject to third-party evaluations to demonstrate their compliance with widely accepted privacy policies and practices. Furthermore, policies and practices should be tailored to the specific types of personal information data collected and / or accessed, and made applicable to applicable laws and standards, including specific jurisdictional considerations that may be used to impose higher standards. For example, in the United States, the collection or access to certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly.

[0069] Regardless of the foregoing, this disclosure also anticipates implementation schemes for users to selectively block the use or access to personal information data. That is, this disclosure anticipates providing hardware and / or software components to prevent or block access to such personal information data. For example, in the case of outputting media content, the subject matter technology can be configured to allow users to opt-in or opt-out to participate in the collection of personal information data during or at any time after registering for the service. In addition to providing opt-in and opt-out options, this disclosure also envisions providing notifications related to access to or use of personal information. For example, users may be notified when downloading an application that their personal information data will be accessed, and then reminded again just before the application accesses the personal information data.

[0070] Furthermore, the purpose of this disclosure is to manage and process personal information data to minimize the risk of unintentional or unauthorized access or use. Once data is no longer needed, this risk can be minimized by limiting data collection and deleting data. Additionally, and where applicable, including in certain health-related applications, data deidentification can be used to protect user privacy. Deidentification can be facilitated, where appropriate, by removing identifiers, controlling the amount or specificity of stored data (e.g., collecting location data at the city level rather than the address level), controlling how data is stored (e.g., aggregating data among users), and / or other methods such as differentiated privacy.

[0071] Therefore, while this disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, it is also contemplated that various embodiments can be implemented without access to such personal information data. That is, various embodiments of the present invention will not be unable to function properly due to the absence of all or part of such personal information data.

[0072] Figure 8 An electronic system 800 is shown that can be used to implement one or more specific embodiments of the subject matter technology. The electronic system 800 may be... Figure 1 One or more of the electronic devices 102-110 shown, and / or one of the servers 114-118, and / or may be part of them. Electronic system 800 may include various types of computer-readable media and interfaces for various other types of computer-readable media. Electronic system 800 includes a bus 808, one or more processing units 812, system memory 804 (and / or a register), ROM 810, persistent storage device 802, input device interface 814, output device interface 806, and one or more network interfaces 816, or subsets and variations thereof.

[0073] Bus 808 generally represents all system buses, peripheral bus, and chipset bus that communicatively connect numerous internal devices of electronic system 800. In one or more embodiments, bus 808 communicatively connects one or more processing units 812 to ROM 810, system memory 804, and permanent storage device 802. One or more processing units 812 retrieve instructions to be executed and data to be processed from these various memory units in order to perform the processes disclosed in this subject matter. In different embodiments, one or more processing units 812 may be a single processor or a multi-core processor.

[0074] ROM 810 stores static data and instructions required by one or more processing units 812 and other modules of the electronic system 800. On the other hand, persistent storage device 802 can be a read-write memory device. Persistent storage device 802 can be a non-volatile memory cell that stores instructions and data even when the electronic system 800 is powered off. In one or more embodiments, mass storage devices (such as magnetic disks or optical disks and their corresponding disk drives) can be used as persistent storage device 802.

[0075] In one or more embodiments, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as persistent storage device 802. Like persistent storage device 802, system memory 804 may be a read-write memory device. However, unlike persistent storage device 802, system memory 804 may be volatile read-write memory, such as random access memory. System memory 804 may store any instructions and data that one or more processing units 812 may need during operation. In one or more embodiments, the processes disclosed in this subject matter are stored in system memory 804, persistent storage device 802, and / or ROM 810. One or more processing units 812 retrieve instructions to be executed and data to be processed from these various memory units to execute the processes of one or more embodiments.

[0076] Bus 808 is also connected to input device interface 814 and output device interface 806. Input device interface 814 enables a user to transmit information and select commands to electronic system 800. Input devices that can be used with input device interface 814 may include, for example, an alphanumeric keypad and a pointing device (also known as a "cursor control device"). Output device interface 806 may, for example, enable the display of images generated by electronic system 800. Output devices that can be used with output device interface 806 may include, for example, printers and display devices such as liquid crystal displays (LCDs), light-emitting diode (LED) displays, organic light-emitting diode (OLED) displays, flexible displays, flat panel displays, solid-state displays, projectors, or any other device for outputting information. One or more embodiments may include a device that acts as both an input device and an output device, such as a touchscreen. In these embodiments, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, voice, or tactile input.

[0077] Finally, as Figure 8 As shown, bus 808 also couples electronic system 800 to one or more networks and / or one or more network nodes via the one or more network interfaces 816, such as Figure 1 One or more of the servers 114-118 shown are included. In this way, electronic system 800 may be part of a computer network (such as a LAN, wide area network (“WAN”), or intranet), or may be part of a network of networks (such as the Internet). Any or all of the components of electronic system 800 may be used in conjunction with the subject matter disclosed herein.

[0078] The embodiments within the scope of this disclosure may be implemented, in whole or in part, using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) on which one or more instructions are written. The tangible computer-readable storage medium may also be substantially non-transitory.

[0079] Computer-readable storage media can be any storage medium that can be read, written, or otherwise accessed by general-purpose or special-purpose computing devices, including any processing electronics and / or processing circuits capable of executing instructions. For example, without limitation, computer-readable media can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. Computer-readable media can also include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash memory, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, track memory, FJG, and Millipede memory.

[0080] Furthermore, computer-readable storage media may include any non-semiconductor memory, such as optical disc storage devices, magnetic disk storage devices, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more embodiments, the tangible computer-readable storage medium may be directly coupled to a computing device, while in other embodiments, the tangible computer-readable storage medium may be indirectly coupled to a computing device, for example, via one or more wired connections, one or more wireless connections, or any combination thereof.

[0081] Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be implemented as executable or non-executable machine code, or as high-level language instructions that can be compiled to produce executable or non-executable machine code. Furthermore, instructions can also be implemented as data, or may include data. Computer executable instructions can also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As those skilled in the art will recognize, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without altering the underlying logic, functionality, processing, and output.

[0082] While the above discussion primarily concerns microprocessors or multi-core processors that execute software, one or more specific implementations are executed by one or more integrated circuits such as ASICs or FPGAs. In one or more specific implementations, such integrated circuits execute instructions stored on the circuit itself.

[0083] Those skilled in the art will recognize that the various exemplary blocks, modules, elements, components, methods, and algorithms described herein can be implemented as electronic hardware, computer software, or a combination of both. To illustrate this interchangeability between hardware and software, the various exemplary blocks, modules, elements, components, methods, and algorithms have been generally described above in terms of functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the system as a whole. Those skilled in the art can implement the described functionality in different ways for each specific application. Various components and blocks can be arranged differently (e.g., in different orders or divided in different ways) without departing from the scope of the subject matter.

[0084] It should be understood that the specific order or hierarchy of the boxes in the process disclosed in this invention is an example of an exemplary method. Based on design preferences, it should be understood that the specific order or hierarchy of the boxes in the process may be rearranged or all shown boxes may be executed. Any box within these boxes may be executed simultaneously. In one or more embodiments, multitasking and parallel processing may be advantageous. Furthermore, the division of various system components in the above embodiments should not be construed as requiring such division in all embodiments, and it should be understood that program components and systems may generally be integrated together in a single software product or packaged into multiple software products.

[0085] As used in this specification and any claim of this patent application, the terms "base station," "receiver," "computer," "server," "processor," and "memory" refer to electronic devices or other technical devices. These terms exclude persons or groups of persons. For the purposes of this specification, the terms "display" or "being displayed" mean displaying on an electronic device.

[0086] As used herein, the phrase "at least one of" following a series of items separated by the terms "and" or "or" modifies the list as a whole, not each member of the list (i.e., each item). The phrase "at least one of" does not require selection of at least one of each of the listed items; rather, it allows for the inclusion of at least one of any one item and / or at least one of any combination of items and / or at least one of each item. For example, the phrases "at least one of A, B, and C" or "at least one of A, B, or C" respectively refer to only A, only B, or only C; any combination of A, B, and C; and / or at least one of each of A, B, and C.

[0087] The predicates “configured to,” “operable to,” and “programmed to” do not imply any specific tangible or intangible modification to a particular subject but are intended to be used interchangeably. In one or more embodiments, a processor configured to monitor and control operations or components may also mean that the processor is programmed to monitor and control operations or that the processor is operable to monitor and control operations. Similarly, a processor configured to execute code may be interpreted as a processor programmed to execute code or operable to execute code.

[0088] Phrases such as aspect, that aspect, on the other hand, some aspects, one or more aspects, implementation, that implementation, another implementation, some implementations, one or more implementations, implementation scheme, that implementation scheme, another implementation scheme, some implementation schemes, one or more implementation schemes, configuration, that configuration, other configuration, some configurations, one or more configurations, subject matter technology, disclosure, this disclosure, other variations thereof, etc., are for convenience only and do not imply that disclosures involving one or more such phrases are essential to the subject matter technology, nor do they imply that such disclosures apply to all configurations of the subject matter technology. Disclosures involving one or more such phrases may apply to all configurations or one or more configurations. Disclosures involving one or more such phrases may provide one or more examples. Phrases such as aspect or some aspects may refer to one or more aspects, and this applies similarly to the other foregoing phrases.

[0089] The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” or “example” is not necessarily to be construed as preferred or superior to other specific embodiments. Furthermore, the terms “comprising,” “having,” etc., as used in the specification or claims, are intended to be inclusive, similar to how “comprising” is interpreted when used as a transitional word in the claims.

[0090] All structural and functional equivalents of elements throughout the various aspects described herein that are known or later become apparent to those skilled in the art are expressly incorporated herein by reference and are intended to be covered by the claims. Furthermore, nothing disclosed herein is intended to be made public, regardless of whether such disclosure is expressly stated in the claims. No claim element should be interpreted in accordance with 35 U.S.SC §112(f) unless the element is expressly stated using the phrase “means for…” or, in the case of a method claim, using the phrase “step for…”.

[0091] The preceding descriptions are provided to enable those skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Therefore, this claim is not intended to be limited to the aspects shown herein, but rather to be consistent with the language of the claim, wherein references to elements in singular values ​​are not intended to mean “only one,” but rather “one or more,” unless specifically indicated. Unless otherwise specifically stated, the term “some” means one or more. Male pronouns (e.g., his) include female and neutral (e.g., her and its), and vice versa. Titles and subtitles (if any) are used for convenience only and do not limit the disclosure of this subject matter.

Claims

1. A method for rendering a user interface, comprising: A container associated with a first home screen is identified by a first device, and the container corresponds to an application; The first device retrieves data describing multiple user interfaces of the application, each user interface being associated with a different corresponding predetermined display time value; In addition to the different corresponding predetermined display time values, the time for rendering each of the plurality of user interfaces before the different corresponding predetermined display time values ​​is determined at least in part based on one or more factors; The application's multiple user interfaces are rendered by the first device and at least in part based on the data at a time prior to the determined corresponding predetermined display time values ​​associated with the user interface; The first device determines that the first main screen is currently being displayed; The first device selects a first rendered user interface from the plurality of rendered user interfaces, wherein the corresponding predetermined display time value associated with the first rendered user interface corresponds to the current time; as well as The first device displays the selected first rendered user interface on the currently displayed first main screen.

2. The method according to claim 1, wherein the data includes a view hierarchy structure.

3. The method of claim 1, wherein the data uses declarative syntax.

4. The method of claim 1, wherein the data references an extension of the application that is separate from the application.

5. The method of claim 4, wherein the data defines one or more parameters for the extension of the application.

6. The method of claim 4, wherein the data includes sample data content in lieu of references to extensions of the application.

7. The method of claim 6, wherein the sample data content is used to provide a real-time view of the user interface before associating the container with the first home screen.

8. The method of claim 1, wherein the data defines an interactive portion of the user interface, and the method further comprises receiving user input for one of the interactive portions of the user interface to initiate an associated portion of the application.

9. The method of claim 1, wherein the container is identified from a list of containers defining the arrangement of the first home screen.

10. The method of claim 1, wherein the rendering is based on an update strategy.

11. The method of claim 10, wherein the update strategy is based on at least one of a periodic update budget for the application or the location of the first home screen.

12. The method of claim 1, wherein the one or more factors include: The update schedule requested by the container, the update budget of the container, or power management factors.

13. The method of claim 10, wherein the update strategy is based on an update schedule requested in the data by an extension of the application that is executed separately from the application.

14. The method of claim 10, wherein the update strategy is based on a merged update of multiple containers.

15. The method of claim 10, wherein the update strategy is based on the power management of the first device.

16. An electronic device comprising: Memory; as well as At least one processor, said at least one processor being configured to: Identify the widgets associated with the first home screen, the widgets corresponding to applications; Retrieve data describing multiple user interfaces of the widget, each of which is associated with a different corresponding predetermined display time; In addition to the different corresponding predetermined display times, the time for rendering each of the plurality of user interfaces before the different corresponding predetermined display times is determined at least in part based on one or more factors; Each of the plurality of user interfaces of the widget is rendered at least in part based on the data at a time prior to the determined predetermined display time associated with the user interface; The first main screen is currently being displayed; Select a first rendered user interface from the plurality of rendered user interfaces, wherein the corresponding predetermined display time associated with the first rendered user interface corresponds to the current time; as well as The selected first rendered user interface is displayed on the currently displayed first main screen.

17. The electronic device of claim 16, wherein the data comprises a view hierarchy structure using declarative syntax.

18. The electronic device of claim 16, wherein the processor is configured to retrieve data from the plurality of user interfaces describing the widget, which are separate from the application and correspond to the widget.

19. The electronic device of claim 16, wherein the processor is configured to render the plurality of user interfaces based on an update strategy, the update strategy using at least one of the following: a periodic update budget for the widgets, the position of the first home screen, an update schedule defined in the data, a merged update for the plurality of containers, and power management.

20. A non-transitory machine-readable medium storing instructions, said instructions causing said one or more processors, when executed, to: Identify the widgets associated with the first home screen, the widgets corresponding to applications; Retrieve data describing multiple user interfaces of the application, each of which is associated with a different corresponding predetermined display time; In addition to the different corresponding predetermined display times, the time for rendering each of the plurality of user interfaces before the different corresponding predetermined display times is determined at least in part based on one or more factors; Each of the plurality of user interfaces is rendered at least in part based on the data at a time prior to the determined predetermined display time associated with the user interface; The first main screen is currently being displayed; Select a first rendered user interface from the plurality of rendered user interfaces, wherein the corresponding predetermined display time associated with the first rendered user interface corresponds to the current time; as well as The selected first rendered user interface is displayed on the currently displayed first main screen.