US20150350005A1 - Coordinating activity views across operating system domains - Google Patents
Coordinating activity views across operating system domains Download PDFInfo
- Publication number
- US20150350005A1 US20150350005A1 US14/290,114 US201414290114A US2015350005A1 US 20150350005 A1 US20150350005 A1 US 20150350005A1 US 201414290114 A US201414290114 A US 201414290114A US 2015350005 A1 US2015350005 A1 US 2015350005A1
- Authority
- US
- United States
- Prior art keywords
- operating system
- application
- system domain
- proxy link
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000000694 effects Effects 0.000 title claims abstract description 219
- 230000003213 activating effect Effects 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 230000002730 additional effect Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0246—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
- H04L41/026—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using e-messaging for transporting management information, e.g. email, instant messaging or chat
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/04—Network management architectures or arrangements
- H04L41/042—Network management architectures or arrangements comprising distributed management centres cooperatively managing the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
Definitions
- This disclosure generally relates to managing presentation of related information on a device.
- Each of the applications includes one or more user-interface elements for detecting user input, capturing user input, and/or presenting data.
- the user-interface elements may be referred to as widgets, windows, screens, views, or other such terms.
- An operating system on a device manages the applications and assists in the presentation of the information via the device.
- the operating system (OS) provides common services for the applications that are running on the device.
- the operating system controls presentation of the user-interface elements associated with the applications.
- FIGS. 1A and 1B are example illustrations of managing a cross domain task using proxy links.
- FIG. 2 is an example flow diagram illustrating establishing and using proxy links for multiple OS domains.
- FIG. 3 is an example illustration of presenting an activity view of a first application associated with a first OS domain.
- FIG. 4 is an example illustration of presenting an activity view of a second application associated with a first OS domain.
- FIG. 5 is an example illustration of presenting a task view when a task switcher is activated for a device.
- FIG. 6 is an example illustration of determining a cross-domain task.
- FIGS. 7 and 8 are example illustrations of establishing and using proxy links for a cross-domain task associated with multiple OS domains.
- FIG. 9 is an example illustration of presenting a task view for a cross-domain task.
- FIGS. 10A and 10B are example flow diagrams illustrating managing cross domain tasks with a response value.
- FIG. 11 is an example flow diagram illustrating presenting cross domain tasks.
- FIG. 12A is an example illustration of detecting a selection of a first application associated with a first OS domain.
- FIG. 12B is an example illustration of using a first application associated with a first OS domain.
- FIG. 12C is an example illustration of detecting an activity of a first application that is related to a second application associated with a second OS domain.
- FIG. 13A is an example illustration of detecting performance of an activity of a second application that is associated with a second OS domain.
- FIG. 13B is an example illustration of detecting a response value for an activity of a second application that is associated with a second OS domain.
- FIG. 14A is an example illustration of receiving user input via a device.
- FIG. 14B is an example illustration of presenting a task list for a cross domain task for multiple OS domains.
- FIGS. 15A and 15B are example flow diagrams illustrating managing cross domain tasks.
- FIG. 16A is an example illustration of detecting a user input that initiates an operation for a back-stack feature for a cross domain task.
- FIG. 16B is an example illustration of providing a response value to a first OS domain to revise a presentation of an activity view in the first OS domain that is associated with a cross-domain task.
- FIG. 17A is an example illustration of using a response value to revise presentation of an activity view in a first OS domain that is associated with a cross-domain task.
- FIG. 17B is an example illustration of terminating a cross-domain task.
- FIG. 18 is an illustration of an example device.
- An application may have multiple user interfaces defined for presentation of data and/or capturing input. These user interfaces are referred to herein as “activity views.” Each activity view corresponds to one or more activities.
- An activity refers to a particular function or functions of an application, and refers to a single thing that a user can do within that application. For instance, taking a picture is an activity of a camera application. Therefore, the camera application presents an activity view for taking the picture.
- the activity view can have selectable elements, such as a graphical “picture button,” which can be selected, via user input, to initiate the activity of taking the picture. The selection of the picture button would trigger an event that causes the taking of the picture via a camera.
- the operating system can respond to the event, such as by providing the camera application access to camera resources.
- the group of activity views may be referred to herein as a task.
- Several activity views may be associated with a same “task” based on relationships among the activity views. These relationships can be internally defined (e.g., activity views of a same application or application type, such as image applications) or externally defined (e.g., activity views related based on sequence of inputs). For example, when a camera application is launched (e.g., by a first user input), a task may be created due to launching the application. The camera application may present a first activity view associated with the task.
- a selectable element on the first activity view can be configured to, when selected by a second user input, open a media management application (e.g., a photo/video gallery).
- a media management application e.g., a photo/video gallery
- the media management application launches and presents a second activity view, such as a “gallery” activity view.
- the second activity view may be associated with the same task that was begun with the camera application.
- the operating system can group together the first activity view and the second activity view in the task according to the order in which the first user input and the second user input occurred. As such, the associated activity views may be considered part of the same task within the operating system.
- the operating system can group activity views based on relationships between the activity views, even if the activity views come from different applications (e.g., when the applications are linked to provide a seamless user experience).
- a device can be configured to host multiple operating system instances (referred to herein as “operating system domains”).
- applications of the operating system domains have limited access to each other's data and limited visibility, if any.
- a first OS domain can be designated as a personal domain and a second OS domain as a work domain.
- the first OS domain can host consumer oriented applications (e.g., a social network application, restaurant location applications) and an e-mail application configured for personal e-mail accounts.
- the second OS domain can host various productivity applications and an e-mail application configured for a work account.
- an isolation mechanism e.g., a firewall
- a task may be referred to as cross domain tasks, and cross domain tasks may include activity views from different domains.
- a “cross domain event” can be channeled through “proxies.”
- a cross domain event refers to an event (e.g., mouse click event, screen tap event, etc.) detected in a first OS domain that crosses into another OS domain. An event crosses into another OS domain when it causes execution of program code that presents data of an application of another OS domain.
- a mouse click on a graphical button in a camera application hosted in a first OS domain crosses into a second domain if that graphical button causes presentation of a media management application (e.g., a photo/video gallery) hosted in a second OS domain.
- a media management application e.g., a photo/video gallery
- proxies tasks that reside in different OS domains can be cohesively presented as if a single task.
- the proxies are processes or applications that communicate across the OS domain boundaries and operate as proxies for activity views in different OS domains. The proxies handle communications to coordinate transitions between activity views of different OS domains.
- FIGS. 1A and 1B are example illustrations of managing a cross domain task using proxy links.
- a device 100 runs two independent operating system domains (“OS domains”): first OS domain 101 and second OS domain 102 .
- a first application 103 e.g., a camera application
- a second application 104 e.g., a gallery application
- the first application 103 presents a first activity view 105 (e.g., a main activity view for a camera application).
- the second application 104 presents a second activity view 106 (e.g., a main activity view for a gallery application).
- the second activity view 106 may be launched or opened in response to user input from the first activity view 105 , or vice versa. If one of the activity views is opened in response to input in the other activity view, then the device 100 groups the first activity view 105 from the first OS domain 101 and the second activity view 106 from the second OS domain 102 into a cross domain task.
- the first OS domain 101 may assign a first proxy 107 to the first activity view 105 .
- the first proxy 107 represents the first activity view 105 in the first OS domain 101 , and may be hidden from view.
- the second OS domain 102 assigns a second proxy 108 to the second activity view 106 .
- the first proxy 107 is linked with the second proxy 108 .
- the proxy links can be linked to each other with an identifier (e.g., identifier 115 , also may be referred to as a token).
- the second proxy link 108 represents the second activity view 106 in the second OS domain 102 and may also be hidden from view.
- the first proxy link 107 and the second proxy link 108 are formed, in this example illustration, when a task becomes a cross domain task.
- the first application 103 presents the first activity view 105 , such as by presenting a camera activity view.
- the first application 103 detects a selection in the first activity view 105 to launch an activity associated with the second activity view 106 , such as detecting selection of a button in the first activity view 105 to launch the second application 104 . Since a task that included an activity corresponding to the first activity view 105 now also includes the launched activity associated with the second activity view 106 of the second OS domain 102 , that task becomes a cross domain task.
- the first OS domain 101 determines that the second application 104 corresponds to the second OS domain 102 .
- the first OS domain 101 then generates the first proxy link 107 and sends a message to the second OS domain 102 to generate the second proxy link 108 .
- the first OS domain 101 assigns the identifier 115 to the first proxy link 107 .
- the first OS domain 101 also provides the identifier 115 to the second OS domain 102 so that the second OS domain 102 can assign the identifier 115 to the second proxy link 108 .
- the second proxy link 108 causes the second application 104 to launch with the second activity view 106 .
- the OS domains have formed a unified cross domain task 120 .
- the cross domain task is unified so that the first activity view 105 and the second activity view 106 can be presented (or prevented from being presented) via the display of the device 100 in ways that appear as if they belong together (e.g., as if they both originate from the first application 103 ).
- the first OS domain 101 and the second OS domain 102 can, in cooperation, manage the unified cross domain task 120 . For example, using the identifier 115 , the first OS domain 101 and the second OS domain 102 communicate with each other about the first proxy link 107 and the second proxy link 108 . For instance, when the second OS domain 102 determines that the second activity view 106 should be terminated (e.g., responsive to selection of a back button), the second OS domain 102 determines that the second activity view 106 is associated with the second proxy link 108 and the identifier 115 . The second OS domain 102 then causes the second proxy link 108 to come to a foreground of the display.
- the second proxy link 108 detects that it comes to the foreground and initiates a message indicating the identifier 115 .
- the message indicates for a proxy link in the first OS domain 101 (which is associated with the identifier 115 ), to come to the foreground.
- the second OS domain 102 sends the message to the first OS domain 101 .
- the first OS domain 101 determines that the received identifier 115 is associated with the first proxy link 107 . Consequently, the first OS domain causes the first proxy link 107 to come to the foreground.
- the first proxy link 107 detects that it is coming to the foreground and causes the first activity view 105 to instead come to the foreground to be displayed.
- the OS domains can, together with the use of the proxy links, manage a unified presentation order for the stack of activity views from both applications (“unified activity view stack”).
- unified activity view stack e.g., via pressing the “back” button on the device 100
- the second activity view 106 is closed (e.g., via pressing the “back” button on the device 100 )
- the proxy links 107 and 108 the first activity view 105 is automatically presented.
- FIG. 1B an example of the device 100 from FIG. 1A is depicted as a mobile device 125 .
- the mobile device 125 includes all of the components shown in FIG. 1A .
- the mobile device 125 further includes a task switcher that can present a task list that includes the unified cross domain task 120 via a display 130 .
- a task switcher presents a view of all the tasks that are running on the device 100 .
- the task switcher presents a single, unified task view (“unified task view 140 ”).
- the unified task view 140 may show only the top or active activity view on the unified activity view stack.
- the task switcher may be initiated via user input (e.g., via double-click of the device button 135 or some other user interface command).
- the second OS domain 102 determines that the second activity view 106 is linked with the first activity view 105 via the proxy links (e.g., determines that the second proxy link 108 is linked to the first proxy link 107 ). Consequently, the task switcher presents in the unified task view 140 only a thumbnail image 136 of the second activity view 106 and does not present a thumbnail image of the first activity view 105 .
- the task switcher also determines that the unified cross domain task 120 was initiated from the first application 103 .
- the task switcher may show an icon 137 that is associated with the first application 103 as the application that initiated the task.
- the task switcher causes the second activity view 106 to appear to be from the first application 103 , even though the second activity view 106 is actually from the second application 104 in the second OS domain 102 .
- FIG. 2 is an example flow diagram (“flow”) 200 illustrating establishing and using proxy links for multiple OS domains.
- FIGS. 3 , 4 , 5 , 6 , 7 , 8 , and 9 (“FIGS. 3 - 9 ”) are conceptual diagrams that help illustrate the flow of FIG. 2 . This description will present FIG. 2 in concert with FIGS. 3-9 .
- the flow 200 begins at block 202 , where a device executes a first application within a first operating system (OS) domain of a device.
- the first application is associated with at least a first activity view.
- the first application may be the camera application and the first activity view may be the main view that is presented when the camera launches.
- the flow 200 continues at block 204 , where the device detects user input associated with the first application that is associated with activating a second activity view of a second application.
- the user input associated with the first application may activate a command launch an activity view of a second application.
- the command to launch the second application activity view may be invocation of a callback function defined for a user input event (e.g., graphic button selection).
- a first activity view of a camera application is presented.
- the first activity view may have user-input elements, such as buttons, slider controls, etc., related to taking pictures and/or videos with a camera included in the device.
- the first activity view may also include a user-input element (e.g., a graphical button) that, when selected, would cause a second activity view to appear, such as the gallery activity view for a second application which presents user-input elements related to viewing, editing, and deleting the pictures and videos taken via the camera application.
- a user-input element e.g., a graphical button
- the flow 200 continues at block 206 , where the device determines that the second application corresponds to a second OS domain of the device.
- the first application is different from the second application.
- the first OS domain is different from the second OS domain (e.g., separate, concurrently running instances of an OS).
- the device may be in a mode that runs only one OS domain. As such, the device would not determine whether the second application corresponds to a different OS domain.
- this disclosure will first describe, via FIGS. 3-5 , an example of managing tasks for only one OS domain. The description will then describe, via FIGS. 6-9 , an example of managing tasks for multiple OS domains.
- the first OS domain 301 has various applications 302 that have been installed, such as a first application 310 and a second application 320 .
- the applications 302 have various activity views (“views”) that are presentable via a display.
- the various views may be associated with separate types of activities to perform for the given application.
- the first application 310 includes a view 312 , a view 314 , and a view 316 .
- the first application 310 may be a camera application.
- View 312 for example, may be the main view used to take pictures for the camera application.
- View 314 may be a second view used to take videos.
- View 316 may be a third view used to control settings and preferences for the camera application.
- the second application 320 also includes multiple views, such as view 322 , view 324 , and view 326 .
- the second application 320 may be a gallery application to view, edit, and delete pictures and videos.
- View 322 may be the main view of the gallery application used for viewing pictures and videos.
- View 324 may be a second view of the gallery application used to edit the pictures and videos.
- View 326 may be a third view used to control settings and preferences for the gallery application.
- the first OS domain 301 also includes system elements 330 .
- the system elements 330 manage certain elements of the applications 302 .
- the system elements 330 can manage tasks and the presentation of views associated with tasks.
- Some examples of system elements 330 include a task switcher 331 and an application launcher 333 .
- the application launcher 333 is configured to manage installed applications in the operating system domain, and may be called when one application launches an activity view from another application.
- the task switcher 331 is configured to present a task list and can present representations of the particular tasks as “task views” via a display of the device.
- the task views may be represented as a thumbnail image of the top activity view active for each task.
- view 312 is depicted as being presented as an active view of the display of the device.
- view 312 has a non-dashed outline.
- Views 314 , 316 , 322 , 324 , and 326 have dashed outlines to depict that they are not being presented via the display device.
- An active view refers to a view that is visible via the display.
- some devices such as mobile devices, have small display screens relative to the display screens for larger computing devices. Thus, some devices utilize operating systems that will present only one view at a time via the display.
- the active view is the view that is presented.
- the active view will typically take up more of the display area than other views, and may take up all of the display area.
- Several applications may be running on the device.
- both the first application 310 and the second application 320 are running, but a view of one of the applications is active.
- the task switcher 331 of the device when activated, can present a thumbnail of the last accessed view from any application that is running on the device. For tasks with views associated with different applications, the task switcher 331 will present a thumbnail of the last accessed view from the view stack for a given task.
- FIG. 4 illustrates an example of what the views would look like after view 322 is activated in response to user input associated with view 312 .
- view 312 can include a graphical button that can be selected to launch the second application 320 .
- an operating system procedure to launch the second application 320 may include the application launcher 333 determining whether the second application 320 is installed and determining the location of the second application 320 . Responsive to the graphical button, the second application 320 launches and automatically presents view 322 .
- the application launcher 333 now tracks a task that spans the first application 310 and the second application 320 . For example, the application launcher 333 will store identifiers for view 322 and view 312 in a database record.
- the record may also include an identifier for the task.
- the record may also specify a stack order for the views 322 and 312 .
- the information to maintain the views 322 and 312 within an ordered stack is packaged into the record by the application launcher 333 .
- the task switcher 331 When the task switcher 331 is activated, the task switcher 331 obtains data 404 from the application launcher 333 regarding tasks.
- the data 404 describes all tasks running on the device as well as any given task's view stack.
- the task switcher 331 can use the data 404 to present a visual depiction of the view stack for any given task.
- the data 404 includes information for two separate tasks that are running on the device, a first task 410 (i.e., “task 1 ”) and a second task 420 (i.e., “task 2 ”).
- the first task 410 includes the view stack for the task that relates to the first application 310 and the second application 320 , where the last accessed view is view 322 .
- the second task 420 includes a view stack for a combined email task.
- FIG. 5 depicts an example device 525 .
- the device 525 presents a task view 540 when the task switcher 331 is activated.
- the task switcher 331 is activated when the view 322 is the active view. Therefore, the task view 540 only shows a representation of the view 322 for the first task 410 .
- the task switcher 331 presents a first thumbnail image 536 that represents view 322 .
- the task switcher 331 also determines, from the data 404 , that the first task 410 is initiated from the first application 310 . Consequently, the task switcher 331 shows a first icon 537 that represents the first application 310 .
- the task switcher 331 causes the view 322 to appear to be from the first application 310 , even though the view 322 is actually from the second application 320 .
- the task view 540 also presents a representation of the second task 420 , which includes a thumbnail image 538 for the last accessed view for the second task 420 . Further, an icon 539 indicates the originating application for the second task 420 .
- FIG. 6 a first OS domain 601 is illustrated.
- the first OS domain 601 has various applications 602 that have been installed in the first OS domain 601 .
- the first OS domain 601 may pertain to a first type of application of the device, such as “core” applications for a mobile device (e.g., a camera application, a phone application, a maps application, etc.).
- the first application 610 is instantiated in the first OS domain 601 .
- the applications 602 have various activity views (“views”) that are presentable via a display. The various views may be associated with separate types of activities to perform for the given application.
- the first application 610 includes view 612 , view 614 , and view 616 .
- the first OS domain 601 also includes system elements 630 including a task switcher 631 , a first application launcher 632 (“application launcher 1 ”) and a proxy manager 633 .
- the application launcher 632 is configured to launch and track activity views and tasks contained within the first OS domain 601 .
- the proxy manager 633 is configured to track cross domain tasks and manage proxy links between the first OS domain 601 and the second OS domain 603 .
- the task switcher 631 is configured to present representations of the particular tasks in a task list via a display of the device.
- view 612 is depicted as being presented as the active view of the display of the device.
- a graphical button of the view 612 may be selected to launch a second application 620 .
- the second application 620 is not in the first OS domain 601 , but is instead in a second OS domain 603 .
- the second OS domain 603 has various applications 605 that have been installed in the second OS domain 603 .
- the second OS domain 603 may pertain to a second type of application of the device, such as “personal” or “private” applications for a mobile device (e.g., an image gallery application, a text messaging application, a personal email application, etc.).
- the second application 620 has been instantiated in the second OS domain 603 .
- the applications 605 have various activity views (“views”) that are presentable via a display.
- the various views may be associated with separate types of activities to perform for any given application.
- the second application 620 includes view 622 , view 624 , and view 626 .
- the second OS domain 603 also includes system elements 660 including a second application launcher 662 (“application launcher 2 ”).
- the second application launcher 663 is configured to launch and track activity views and tasks contained within the second OS domain 603 .
- block 206 indicates that the device determines that a second application corresponds to a different OS domain of the device than the first application.
- the first application launcher 633 accesses application data 650 .
- the application data 650 specifies the first OS domain 601 and the second OS domain 603 , and also includes, for each of the first OS domain 601 and the second OS domain 603 , a listing of each of the applications instantiated in each domain.
- the first application launcher 633 detects that the second application 620 is installed in the second OS domain.
- the first application launcher 633 can search or parse the application data 650 to find an indicator 680 associated with the second application 620 .
- the first application launcher 633 can also determines that the indicator 680 for the second application 620 is associated with an indicator 681 for the second OS domain 603 indicated in the application data 650 .
- the first application launcher 633 may only have access to a portion of the application data 650 , such as only the portion pertaining to the first OS domain 601 .
- the first application launcher 633 can query other OS domains to confirm which domain the second application 620 is instantiated within. For example, in some embodiments, each OS domain has OS elements that track applications instantiated within that particular domain.
- the OS domains can utilize a process responsible for inter-domain communications.
- This process (“inter-domain coordinator”) inherits a special kernel permission to pass through an OS domain isolation mechanism (e.g., an OS domain firewall), for example.
- an OS domain isolation mechanism e.g., an OS domain firewall
- the inter-domain coordinator queries the other OS domains.
- the OS domain with an instance of the second application responds with an indication of the OS domain. This indication can be implicit (e.g., when there are only two OS domains on a device) or explicit (e.g., an OS domain identifier indicated in a response).
- each OS domain can access a global directory that is not visible to applications to determine a host OS domain of an application. As applications are instantiated, the host OS domains update the global directory. Locks can be avoided by provisioning different sections or different structures to the different OS domains. In some embodiments, a directory can be created when the different OS domains are configured with the different application assignments.
- a new task in the second OS domain 603 will become part of a cross-domain task that also includes the existing task in the first OS domain 601 .
- the proxy manager 633 is involved in establishing a proxy link between the two domains.
- the flow 200 continues at block 208 , where the device establishes a first proxy link within the first OS domain that corresponds with a second proxy link within the second OS domain.
- the first proxy link is associated with causing the second proxy link to invoke the second activity view of the second application within the second OS domain.
- FIGS. 7 and 8 illustrate one example of establishing a first proxy link within a first OS domain that corresponds with a second proxy link within a second OS domain.
- the first application launcher 632 has determined (e.g., via accessing the application data 650 in FIG. 6 ), that the second application 620 is associated with the second OS domain 603 .
- the first application launcher 632 associated view 612 with a first task ID 760 for the first task.
- a record of the first task ID 760 includes a view identifier 762 (“view 1 ID”) associated with the view 612 . Because the button was selected from the view 612 to launch the second application 620 and the second application 620 is associated with the second OS domain 603 , a cross-domain task will be established.
- a command is sent to the first application launcher 632 to launch the second application 620 .
- the first application launcher 632 determines that the second application 620 is associated with a different domain than the first OS domain 601 , the first application launcher 632 launches a first proxy link 711 (“proxy 1 ”).
- the first proxy link 711 may be an activity view that is not visible.
- the application launcher 760 may generate an object reference for the first proxy link 711 .
- the object reference to the first proxy link 711 will be referred to as the first proxy reference 761 (“proxy 1 ref”) stored with the first task ID 760 for the first task.
- the first application launcher 632 tracks a stacking order (or “view stack”) for the first task by ordering the first proxy reference 761 above that the view identifier 762 . After the first proxy link 711 is generated, the first application launcher 632 may attempt to bring the first proxy link 711 to a foreground of the display so that it is stacked above the view 612 .
- the first proxy link 711 generates a unique identifier (i.e., token 721 ) and provides the token 721 to the proxy manager 633 .
- the proxy manager 633 generates an entry in a data store (e.g., the proxy manager 633 generates a record 702 in a database 701 ).
- the table 701 includes information about proxies in the first OS domain 601 that are bound to a task in a different OS domain, including information 710 pertinent to the cross domain task.
- the record 702 may include the token 721 and the first proxy reference 761 .
- the record 702 can also include information that identifies a second task in a different domain that is related to the first proxy link 711 , which will be described in further detail in FIG. 8 .
- proxy manager 633 after receiving the token 721 from the first proxy link 711 , proxy manager 633 initiates the creation of a second proxy link 811 in the second OS domain 603 .
- the proxy manager 633 communicates the token 721 to the first application launcher 632 and requests that the first application launcher 632 send an instruction to the second application launcher 662 in the second OS domain 603 .
- the first application launcher 632 sends a message 813 to the second application launcher 662 with the instruction to generate the second proxy link 811 .
- the message 813 includes a copy of the token 721 , which is used to generate the second proxy link 811 .
- the second proxy link 811 is launched and a second task ID 860 is created by the second application launcher 662 for the second proxy link 811 .
- the task identifier for the second task will be referred to as second task ID 760 (“task 2 ID”).
- the second task is related to the second proxy link 811 .
- the second application launcher 662 may send a message 814 to the first application launcher 632 to indicate a value for the second task ID 860 .
- the second proxy link 811 may be an activity view that is not visible and which includes specific instructions regarding itself and regarding view 622 .
- the second proxy link 811 requests the second application launcher 662 to launch the second application 620 (if not already running) and bring the view 622 to the foreground.
- the second application launcher 662 may associate the view 622 with the second task ID 760 .
- the second task is a second portion of the cross-domain task as it relates to the second OS domain 603 .
- the second application launcher 662 stores information in an entry of a data store in the second OS domain 603 .
- the second application launcher 662 stores the second task ID 760 .
- the second application launcher 662 also stores an object reference to the second proxy link 811 .
- the object reference to the second proxy link 811 will be referred to as the second proxy reference 861 (“proxy 2 ref”).
- the identifier for the view 662 will be referred to as view identifier 862 .
- the second application launcher 662 tracks a stacking order, or view stack, for the second task by ordering the view identifier 862 above the second proxy reference 861 .
- the proxy manager 633 may store the second task ID 860 in the record 702 . Because the first proxy link 711 and the second proxy link 811 both have the same unique ID associated with them (i.e., the token 721 ), they are uniquely linked or bound together. Further, because the proxy manager 633 includes a copy of the second task ID 860 , the token 721 , and the first proxy reference 761 , the proxy manager 633 has information that can be used by the task switcher 631 to link the first task to the second task as a cross-domain task.
- the second proxy link 811 includes instructions and/or information limited to managing the presentation of the view 622 (e.g., to bring the second proxy link 811 into the foreground of the display when the view 622 is closed). As mentioned, when the second proxy link 811 is generated it may come to the foreground. The second proxy link 811 , however, may not become visible. Rather, the activity that was selected via the view 612 is invoked, which causes the second application 620 to launch and which causes the view 622 to come to the foreground. Further, the first proxy manager 633 switches a domain view for the device to the second OS domain 603 .
- an order of a cross-domain view stack for the cross domain task has the view 612 as the lowest level, the first proxy link 711 above the view 612 , the second proxy link 811 above the first proxy link 711 , and the view 622 above the second proxy link 811 .
- the view 622 is the highest level in the cross-domain view stack because it is in the foreground.
- the cross-domain view stack is composed of two parts. A first part is the view stack for the first task managed by the first OS domain 601 that pertains to the view 612 and the first proxy link 711 .
- the first application launcher 632 tracks a state of the first proxy link 711 and a state of the view 612 as they are individually brought to the foreground.
- the first application launcher 632 stores the state information in a last-in-first-out queue (e.g., a first “back stack” queue), as shown in FIGS. 7 and 8 where the first proxy reference 761 and the view identifier 762 are ordered.
- the order in the first back stack queue indicates that the first proxy link 711 is above the view 612 .
- the second part of the cross-domain view stack is the view stack for the second task managed by the second OS domain 603 .
- the second application launcher 662 tracks a state of the second proxy link 811 and a state of the view 622 as they are individually brought to the foreground.
- the second application launcher 662 stores the state information in a separate last-in-first-out queue (e.g., a second “back stack” queue), as shown in FIG. 8 .
- the order in the second back stack queue indicates that the first proxy link 711 is above the view 612 .
- the first back stack queue and the second back stack queue are not combined. Rather, they are linked by virtue of the proxy links 711 and 811 (e.g., via the token 721 ), and are managed by the proxy manager 633 .
- the proxy links 711 and 811 may be configured to communicate with each other (e.g., using the token 721 as a reference) regarding when to bring one or the other into the foreground. Because the proxy links 711 and 811 have the ability to communicate in such a manner, then the overall back stack sequence for the view stack of the cross domain task is maintained in the proper order.
- FIG. 9 illustrates one example of using the first proxy link within the first OS domain to represent the second activity view of the second application within the second OS domain.
- a task list 940 is launched on a device 925 .
- the device 925 includes the components described in FIGS. 6-8 .
- the task list 940 is launched by the task switcher 631 .
- the task switcher 631 is configured to communicate with first application launcher 632 and the second application launcher 662 to obtain the information it needs to properly present a list of cross-domain tasks.
- the task switcher 631 will query the first application launcher 632 and the second application launcher 662 for all tasks that they are tracking.
- the first application launcher 632 sends to the task switcher a list of the information for the first task.
- the first application launcher 632 may send the first task ID 760 , the first proxy reference 761 , and the view identifier 762 .
- the task switcher 631 detects that the first proxy reference 761 is at the top of the view stack for the first task.
- the task switcher 631 queries the proxy manager 633 (using the first proxy reference 761 ), to determine whether an entry exists in the table 701 for the first proxy reference 761 .
- the proxy manager 633 detects the first proxy reference 761 in the record 702 .
- the proxy manager 633 then returns to the task switcher 631 the second task ID 860 .
- the task switcher 631 determines that the first task is part of a cross-domain task.
- the task switcher 631 uses the second task ID 860 to query the second application launcher 662 .
- the second application launcher 662 returns to the task switcher 662 the view stack for the second task 860 .
- the task switcher 631 determines a stacking order for the cross domain task. In other words, the task switcher 631 determines that the view 612 is within the view stack for the cross domain task.
- the second task switcher 661 does not present a thumbnail image of the view 612 in the task list 940 . Instead, because the view 622 is the active view (i.e. is highest on the view stack for the cross domain task), then the second task switcher 661 only presents a thumbnail image 936 of the view 622 . However, because the view 612 is the lowest on the view stack for the cross domain task, and because the view 612 is associated with the first application 610 , then the task switcher 631 can present an icon 937 that identifies the first application 610 as being the originating application for the cross domain task. Further, the task switcher 631 can detect other tasks that are running.
- the task switcher 631 detects that a third task 920 is running on the first OS domain 601 .
- the task switcher 631 receives information from the first application launcher about the third task 920 .
- the task switcher 631 then presents a representation of the third task 920 in the task list 940 (e.g., presents a thumbnail image 938 for the last accessed view in the third task and presents an icon 939 for the originating application for the third task 920 ).
- another example of using the first proxy link within the first OS domain to represent the second activity view of the second application within the second OS domain includes terminating the second activity view within the second OS domain and causing the first activity view to become the active view again.
- the second application launcher 662 notifies the second proxy link 811 to come to the foreground.
- the second proxy link 811 initiates a communication with the proxy manager 633 (using the token 721 ), to bring the first proxy link 711 to the foreground.
- the second proxy link 811 shuts down the view 622 and the second proxy link 811 deletes itself.
- the proxy manager 633 After receiving the communication from the second proxy link 811 to come to the foreground, the proxy manager 633 will use the token 721 to do a lookup in the table 701 to identify the first proxy link 711 . The proxy manager 633 then instructs the first proxy link 711 to come to the foreground. As the first proxy link 711 begins to come to the foreground, the first proxy link 711 will cause the view 612 to come to the foreground instead. The focus of the display may switch back to the first OS domain 601 . Because the view 612 is in the foreground, the view 612 becomes the active view. The first proxy link 711 then deletes itself. A more detailed explanation of this process is described in connection with FIGS. 15A , 15 B, 16 A, 16 B, 17 A and 17 B.
- FIG. 10A is an example flow diagram (“flow”) 1000 illustrating managing cross domain tasks with a response value.
- FIG. 10B is an example flow diagram (“flow”) 1001 illustrating managing cross domain tasks with a response value.
- FIGS. 12A , 12 B, 12 C, and 13 A are conceptual diagrams that help illustrate the flows of FIGS. 10A and 10B , according to some embodiments. This description will present FIGS. 10A and 10B in concert with FIGS. 12A , 12 B, 12 C, and 13 A. In some embodiments, the operations shown in FIGS. 10A and 10B can be performed in series, while in other embodiments, one or more of the operations can be performed in parallel.
- the flow 1000 begins at block 1002 , where a device detects a selection of a first application.
- a device 1225 presents a device selection screen 1280 .
- the device 1225 detects the selection of an icon 1237 related to a camera application.
- the flow 1000 continues at block 1004 , where the device presents a first activity view.
- the device 1225 presents a first activity view 1212 for a camera application.
- the camera application is assigned to a first OS domain 1201 .
- the first activity view 1212 provides features for taking pictures using a camera of the device 1225 .
- the device 1225 detects that a picture button 1242 is selected which, in FIG. 12C , causes a preview image 1243 of the picture to be shown.
- the flow 1000 continues at block 1006 , where the device detects user input via the first activity view that causes a second application to be activated.
- the first activity view 1212 presents a link 1244 to a gallery application.
- the link 1244 can be selected via user input.
- the link 1244 is configured to cause the gallery application to be launched in a second OS domain 1203 .
- the flow 1000 continues at block 1008 , where the device generates a first proxy link (“proxy 1 ”), which has an identifier (e.g., a token).
- proxy 1 a first proxy link
- the first OS domain 1201 generates a first proxy link 1211 .
- the first OS domain 1201 can generate the first proxy link 1211 according to the description in FIG. 7 .
- the flow 1000 continues at block 1010 , where the device sends a message to a second OS domain to activate the second application.
- the message includes the token and a request for a response value.
- the first proxy link 1211 initiates a message 1213 to a second OS domain 1203 .
- the message 1213 includes a copy of the token and a request to return a copy of the last picture that was taken after the gallery application is closed.
- the gallery application may include features to edit the last picture that was taken.
- the camera application requests a copy of the last picture that was taken to present it again as the preview image 1243 .
- a flow 1001 begins at block where the device receives the message from the first domain and, based on the message, at block 1014 , the device generates a second proxy link (“proxy 2 ”) using the token.
- the device further links to second activity view.
- the second OS domain 1203 receives the message 1213 and generates the second proxy link 1311 .
- the second proxy link 1311 and the first proxy link 1211 are linked, for example, as similarly described in FIG. 2 and FIGS. 6 , 7 , 8 and 9 .
- the flow 1001 continues at block 1016 , where the device launches the second application and brings the second activity view to the foreground.
- the second proxy 131 launches the gallery application and instructs the second activity view 1322 to come to the foreground.
- the second activity view 1322 , the second proxy link 1311 , the first proxy link 1211 and the first activity view 1212 are presented as being in a cross domain view stack, for example similar to the view stacks described in FIGS. 7 , 8 and 9 .
- the second activity view 1322 (in the foreground) is above the second proxy link 1311 in the cross domain view stack.
- the second proxy link 1311 is above the first proxy link 1211 in the cross domain view stack.
- the first proxy link 1211 is above the first activity view 1212 in the cross domain view stack.
- the flow 1001 continues at block 1018 , where the device presents the second activity view.
- the device presents the second activity view. For example, in FIG. 13A after the device 1225 launches the gallery application and brings the second activity view 1322 to the foreground, the device switches the view focus for the device 1225 to the second OS domain 1203 . The second view 1322 then becomes visible via a display of the device 1225 .
- FIG. 11 is an example flow diagram (“flow”) 1100 illustrating presenting cross domain tasks.
- FIGS. 13A , 13 B, 14 A and 14 B are conceptual diagrams that help illustrate the flow of FIG. 11 , according to some embodiments. This description will present FIG. 11 in concert with FIGS. 13A , 13 B, 14 A and 14 B.
- the operations shown in FIG. 11 can be performed in series, while in other embodiments, one or more of the operations can be performed in parallel.
- blocks 1102 and 1108 can be performed in parallel.
- the flow 1100 can be performed in parallel with the flows described in FIGS. 15A and 15B .
- the flow 1100 begins at block 1102 , where a device determines whether an additional view is activated for a cross domain task. If so, then the flow 1000 continues at block 1104 where the device presents the additional activity view. For example, in FIG. 13A , the device 1225 detects a selection of an edit feature 1345 to edit the last picture taken from the camera application. Once selected, an additional activity view 1324 is presented as illustrated in FIG. 13B .
- the flow 1100 continues at block 1106 , where the device includes the additional activity view in a view stack for the cross domain task in the respective domain where the view additional activity view is activated.
- the additional activity view 1324 is positioned at the top of the view stack (e.g., at a front of a back stack queue for the second OS domain 1203 ).
- the additional activity view 1324 provides features to edit the last picture taken. For example, one of the features is a control 1350 used to flip the picture horizontally. After editing the picture (e.g., after flipping the picture horizontally), the additional activity view 1324 is closed and the second OS domain 1203 removes the additional activity view 1324 from the view stack, causing the second activity view 1322 to be displayed again.
- the flow 1100 continues at block 1108 , where the device determines whether a task list feature is selected. If so, then the process continues at block 1110 wherein the device determines that the first proxy link is associated with the second proxy link. For example, in FIG. 14A , after the second activity view 1322 is presented again, the device 1225 receives an additional user input (e.g., a double-click of a navigation button on the device 1225 ).
- an additional user input e.g., a double-click of a navigation button on the device 1225 .
- the flow 1100 continues at block 1112 , where the device presents the second activity view in a task list.
- the device also prevents the first activity view from being presented as a separate task in the task list.
- the device 1225 in response to the additional user input described in FIG. 14A , the device 1225 presents in a task list 1340 , a thumbnail image 1436 of the second activity view 1322 .
- the device 1225 can present the task list 1340 as similarly described in FIG. 9 .
- the thumbnail image 1436 represents the cross domain task in that it only shows a representation of the second activity view 1322 (at the top of the view stack for the cross domain task) and not a representation of the first activity view 1212 (which is below the second activity view 1322 in the view stack for the cross domain stack). If the thumbnail image 1436 is selected from the task list 1340 , then the display returns to the most recently accessed view for that task, which was the second activity view 1322 .
- FIG. 15A is an example flow diagram (“flow”) 1500 illustrating managing cross domain tasks.
- FIG. 15B is an example flow diagram (“flow”) 1501 illustrating managing cross domain tasks.
- FIGS. 16A , 16 B, 17 A and 17 B are conceptual diagrams that help illustrate the flow of FIGS. 15A and 15B , according to some embodiments. This description will present FIGS. 15A and 15B in concert with FIGS. 16A , 16 B, 17 A and 17 B.
- the flow 1500 begins at block 1502 , where a device detects user input via a second activity view to terminate the second activity view.
- the device 1225 receives an additional user input (e.g., a single click of the navigation button on the device 1225 or a selection of a graphical “back” button), which initiates a request to close the second activity view 1322 and present the next lowest view for the cross domain task.
- an additional user input e.g., a single click of the navigation button on the device 1225 or a selection of a graphical “back” button
- the flow 1500 continues at block 1504 , where the device brings the second proxy link to a foreground of a display of the device.
- the additional user input e.g., the single click of the navigation button or the selection of the graphical “back” button
- the second proxy link 1311 comes to the foreground of a display of the device 1225 .
- the flow 1500 continues at block 1506 , where the device instructs the first proxy link to come to foreground of the display.
- the device further passes the response value to the first application.
- the second proxy link 1311 detects that it is coming to the foreground and initiates a message 1613 to be sent to the first OS domain 1201 .
- the message 1613 includes a request for whichever proxy link is associated with the token to come to the foreground.
- the message 1613 includes a copy of the token to pass to the first OS domain 1201 .
- the second OS domain 1203 also includes in the message 1613 a response value associated with the activity or activities for the second activity view 1322 that were requested by the first application 1210 .
- the camera application requested, in the message 1213 , that the gallery application return a value for the last picture taken so that it could present it as the preview image 1243 . Therefore, in FIG. 16B , the message 1613 includes data pertaining to the requested response value.
- the message 1613 may include a copy of the edited image which was modified (e.g., flipped horizontally) as described in FIG. 13B .
- the first OS domain 1201 receives the message 1613 and, based on the token included in the message 1613 , determines that the first proxy link 1211 is associated with the token. The first OS domain 1201 then instructs the first proxy link 1211 to come to the foreground.
- the flow 1500 continues at block 1508 , where the device closes the second application and the second activity view, and deletes the second proxy link.
- the second proxy link 1311 deletes itself.
- the second proxy link 811 if the second proxy link 811 were to delete itself, it would instruct the second application launcher 662 to delete the second task ID 860 , and the second proxy reference 861 associated with the second proxy link 811
- the second OS domain 1203 then transfers the focus for the display of the device 1225 back to the first OS domain 1201 .
- the flow 1501 begins at block 1512 , where the device detects the instruction to bring the first proxy link to the foreground.
- the first OS domain 1201 receives the token from the message 1613 and determines that the token is associated with the first proxy link 1211 .
- the proxy manager 633 would look up the token 721 in the record 702 and determine that it is associated with the first proxy link 711 because of the identifier 761 in the record 702 .
- the flow 1501 continues at block 1514 , where the device brings first proxy link to foreground.
- the first OS domain 1201 receives the message 1613 , it instructs the first proxy link 1211 to come to the foreground.
- the first proxy link 1211 initiates an instruction for the first activity view 1212 to come to the foreground.
- the first activity view 1212 is now in the foreground at the top of the view stack.
- the flow 1501 continues at block 1516 , where the device presents the first activity view as the active view using the response value.
- the device 1225 presents the first activity view 1212 .
- the first activity view 1212 shows the preview image 1243 using the copy of the picture as modified in FIG. 13B .
- the first OS domain 1201 receives the message sent by the second OS domain 1203 to make the device 1225 switch focus to the first OS domain 1201 .
- the focus returns to the first OS domain 1201 . Because the first activity view 1212 is in the foreground, the first activity view 1212 becomes visible on the display of the device 1225 .
- the flow 1501 continues at block 1518 , where the device deletes the first proxy link.
- the first proxy link 1211 deletes itself.
- the first proxy link 711 may instruct the proxy manager 633 to delete the record 702 because first proxy link 711 would no longer be associated with a cross domain task.
- FIGS. 15A and 15B can be performed in series, while in other embodiments, one or more of the operations can be performed in parallel.
- block 1508 may be performed in parallel with any of the blocks 1512 - 1518 .
- an operating system may be configured such that an activity view will not accept an instruction to be grouped under a same task identifier. For instance, after a first OS domain sends an instruction to generate a second proxy link, the second proxy link may attempt to invoke a second application in a second OS domain. However, the activity which invokes the second application may be configured (e.g., defined or declared) so that it will not accept the instruction to be grouped with the second proxy link in a cross domain task. The activity may force the second application to be given a new, separate task in the second OS domain. In such a case, the second proxy link will be created, but not associated with a second activity view for the second application.
- the second proxy link can be configured to destroy itself and send an instruction to the first proxy link to destroy itself.
- the first proxy link will then destroy itself.
- the first activity view in the first OS domain will be the last activity view for the task before the first proxy link was created. If a task list were to be activated, there would be two separate tasks listed, one for the first application in the first OS domain, and one for the second application in the second OS domain.
- any of the domains may include a feature for a task (specifically, the process making up the task) to be terminated while the task is not in the foreground and memory is running low.
- the process is reinitiated when the task comes to foreground.
- a cross domain task is not in the foreground in either a first OS domain or a second OS domain
- the first OS domain and the second OS domain may be configured to independently terminate the processes for their portions of the cross domain task. Any of the individual processes on the respective domains can be reinitiated when the portion of that task is brought to the foreground in that domain.
- Embodiments can perform the operations in a different order, at least some of the operations in parallel, different operations, etc.
- operations of blocks 1102 and 1108 can be performed in parallel.
- the flow 1100 can be performed in parallel with the flows described in FIGS. 15A and 15B .
- operations for the block 1508 may be performed in parallel with, or after, any operations of blocks 1512 , 1514 , 1516 , and 1518 .
- Embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.”
- embodiments of the inventive subject matter may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.
- the described embodiments may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic device(s)) to perform a process according to embodiments, whether presently described or not, since every conceivable variation is not enumerated herein.
- a machine readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer).
- the machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions.
- embodiments may be embodied in an electrical, optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.), or wireline, wireless, or other communications medium.
- Computer program code for carrying out operations of the embodiments may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the program code may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN), a personal area network (PAN), or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- PAN personal area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- FIG. 18 depicts an example device 1800 .
- the device 1800 includes a processor unit 1801 (possibly including multiple processors, multiple cores, multiple nodes, and/or implementing multi-threading, etc.).
- the device 1800 includes memory 1807 .
- the memory 1807 may be system memory (e.g., one or more of cache, SRAM, DRAM, zero capacitor RAM, Twin Transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, etc.) or any one or more of the above already described possible realizations of machine-readable media.
- the device 1800 also includes a bus 1803 (e.g., PCI, ISA, PCI-Express, HyperTransport® bus, InfiniBand® bus, NuBus, etc.).
- the memory 1807 embodies functionality to implement embodiments described above.
- the memory 1807 may include one or more functionalities that facilitate managing tasks. Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processor unit 1801 .
- the functionality may be implemented with an application specific integrated circuit, in logic implemented in the processor unit 1801 , in a co-processor on a peripheral device or card, etc.
- realizations may include fewer or additional components not illustrated in FIG. 18 (e.g., video cards, audio cards, additional network interfaces, peripheral devices, etc.).
- the processor unit 1801 , the storage device(s) 1809 , and the network interface 1805 are coupled to the bus 1803 . Although illustrated as being coupled to the bus 1803 , the memory 1807 may be coupled to the processor unit 1801 .
- the memory 1807 may include separate instances of an operating system, such as a first operating system instance 1831 and a second operating system instance 1835 .
- the first operating system instance 1831 may include any of the components described herein that are associated with a first OS domain.
- the second operating system instance 1835 may include any of the components described herein that are associated with a second OS domain.
- the device 1800 includes a display unit 1821 , such as touchscreen display, a retina display, an autostereoscopic 3D display, etc.
- the first operating system instance 1831 and the second operating system instance 1835 are configured to present views via the display unit 1821 for tasks, such as a for a cross domain task.
- the device 1800 includes user-input detection unit 1822 , configured to detect activation of user-input devices that are built into the device (e.g., a touchscreen, a “back” button, a navigation button, a volume button, biometric reading devices, eye-tracking devices, etc.).
- the display unit 1821 can also be configured to receive user input.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
Description
- This disclosure generally relates to managing presentation of related information on a device.
- Many devices, including personal computers, mobile devices, smartphones, etc., utilize applications to present information. Each of the applications includes one or more user-interface elements for detecting user input, capturing user input, and/or presenting data. The user-interface elements may be referred to as widgets, windows, screens, views, or other such terms. An operating system on a device manages the applications and assists in the presentation of the information via the device. The operating system (OS) provides common services for the applications that are running on the device. In addition, the operating system controls presentation of the user-interface elements associated with the applications.
- The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
-
FIGS. 1A and 1B are example illustrations of managing a cross domain task using proxy links. -
FIG. 2 is an example flow diagram illustrating establishing and using proxy links for multiple OS domains. -
FIG. 3 is an example illustration of presenting an activity view of a first application associated with a first OS domain. -
FIG. 4 is an example illustration of presenting an activity view of a second application associated with a first OS domain. -
FIG. 5 is an example illustration of presenting a task view when a task switcher is activated for a device. -
FIG. 6 is an example illustration of determining a cross-domain task. -
FIGS. 7 and 8 are example illustrations of establishing and using proxy links for a cross-domain task associated with multiple OS domains. -
FIG. 9 is an example illustration of presenting a task view for a cross-domain task. -
FIGS. 10A and 10B are example flow diagrams illustrating managing cross domain tasks with a response value. -
FIG. 11 is an example flow diagram illustrating presenting cross domain tasks. -
FIG. 12A is an example illustration of detecting a selection of a first application associated with a first OS domain. -
FIG. 12B is an example illustration of using a first application associated with a first OS domain. -
FIG. 12C is an example illustration of detecting an activity of a first application that is related to a second application associated with a second OS domain. -
FIG. 13A is an example illustration of detecting performance of an activity of a second application that is associated with a second OS domain. -
FIG. 13B is an example illustration of detecting a response value for an activity of a second application that is associated with a second OS domain. -
FIG. 14A is an example illustration of receiving user input via a device. -
FIG. 14B is an example illustration of presenting a task list for a cross domain task for multiple OS domains. -
FIGS. 15A and 15B are example flow diagrams illustrating managing cross domain tasks. -
FIG. 16A is an example illustration of detecting a user input that initiates an operation for a back-stack feature for a cross domain task. -
FIG. 16B is an example illustration of providing a response value to a first OS domain to revise a presentation of an activity view in the first OS domain that is associated with a cross-domain task. -
FIG. 17A is an example illustration of using a response value to revise presentation of an activity view in a first OS domain that is associated with a cross-domain task. -
FIG. 17B is an example illustration of terminating a cross-domain task. -
FIG. 18 is an illustration of an example device. - The description that follows includes example systems, methods, techniques, instruction sequences, computer program products that relate to managing tasks across multiple operating system domains. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples may refer to operating system instances of a mobile device, it should be understood that the same, or substantially similar techniques, may apply to any type of device that has an operating system. In other instances, well-known instruction instances, protocols, structures and techniques have not been shown in detail in order not to obfuscate the description.
- An application may have multiple user interfaces defined for presentation of data and/or capturing input. These user interfaces are referred to herein as “activity views.” Each activity view corresponds to one or more activities. An activity, as used herein, refers to a particular function or functions of an application, and refers to a single thing that a user can do within that application. For instance, taking a picture is an activity of a camera application. Therefore, the camera application presents an activity view for taking the picture. The activity view can have selectable elements, such as a graphical “picture button,” which can be selected, via user input, to initiate the activity of taking the picture. The selection of the picture button would trigger an event that causes the taking of the picture via a camera. The operating system can respond to the event, such as by providing the camera application access to camera resources.
- When a group of one or more activity views are related to a same executing processor thread, the group of activity views may be referred to herein as a task. Several activity views may be associated with a same “task” based on relationships among the activity views. These relationships can be internally defined (e.g., activity views of a same application or application type, such as image applications) or externally defined (e.g., activity views related based on sequence of inputs). For example, when a camera application is launched (e.g., by a first user input), a task may be created due to launching the application. The camera application may present a first activity view associated with the task. A selectable element on the first activity view can be configured to, when selected by a second user input, open a media management application (e.g., a photo/video gallery). Upon receiving the second user input, the media management application launches and presents a second activity view, such as a “gallery” activity view. The second activity view may be associated with the same task that was begun with the camera application. The operating system can group together the first activity view and the second activity view in the task according to the order in which the first user input and the second user input occurred. As such, the associated activity views may be considered part of the same task within the operating system. The operating system can group activity views based on relationships between the activity views, even if the activity views come from different applications (e.g., when the applications are linked to provide a seamless user experience).
- For various reasons (e.g., security), a device can be configured to host multiple operating system instances (referred to herein as “operating system domains”). In such a scenario, applications of the operating system domains have limited access to each other's data and limited visibility, if any. For example, a first OS domain can be designated as a personal domain and a second OS domain as a work domain. The first OS domain can host consumer oriented applications (e.g., a social network application, restaurant location applications) and an e-mail application configured for personal e-mail accounts. The second OS domain can host various productivity applications and an e-mail application configured for a work account. To confine data (as configured) within the host OS domains, an isolation mechanism (e.g., a firewall) can be configured on a device with multiple OS domains.
- It may be possible for a task to group applications in different OS domains. Such tasks may be referred to as cross domain tasks, and cross domain tasks may include activity views from different domains. According to some embodiments, a “cross domain event” can be channeled through “proxies.” A cross domain event refers to an event (e.g., mouse click event, screen tap event, etc.) detected in a first OS domain that crosses into another OS domain. An event crosses into another OS domain when it causes execution of program code that presents data of an application of another OS domain. For example, a mouse click on a graphical button in a camera application hosted in a first OS domain crosses into a second domain if that graphical button causes presentation of a media management application (e.g., a photo/video gallery) hosted in a second OS domain. With proxies, tasks that reside in different OS domains can be cohesively presented as if a single task. The proxies are processes or applications that communicate across the OS domain boundaries and operate as proxies for activity views in different OS domains. The proxies handle communications to coordinate transitions between activity views of different OS domains.
-
FIGS. 1A and 1B are example illustrations of managing a cross domain task using proxy links. InFIG. 1A , adevice 100 runs two independent operating system domains (“OS domains”):first OS domain 101 andsecond OS domain 102. A first application 103 (e.g., a camera application) runs on thefirst OS domain 101. A second application 104 (e.g., a gallery application) runs on thesecond OS domain 102. Thefirst application 103 presents a first activity view 105 (e.g., a main activity view for a camera application). Thesecond application 104 presents a second activity view 106 (e.g., a main activity view for a gallery application). Thesecond activity view 106 may be launched or opened in response to user input from thefirst activity view 105, or vice versa. If one of the activity views is opened in response to input in the other activity view, then thedevice 100 groups thefirst activity view 105 from thefirst OS domain 101 and thesecond activity view 106 from thesecond OS domain 102 into a cross domain task. - To manage the cross domain task across the
first OS domain 101 and thesecond OS domain 102, thefirst OS domain 101 may assign afirst proxy 107 to thefirst activity view 105. Thefirst proxy 107 represents thefirst activity view 105 in thefirst OS domain 101, and may be hidden from view. Thesecond OS domain 102 assigns asecond proxy 108 to thesecond activity view 106. Thefirst proxy 107 is linked with thesecond proxy 108. As an example, the proxy links can be linked to each other with an identifier (e.g.,identifier 115, also may be referred to as a token). Because a proxy in one OS domain is configured to be linked to a proxy in another OS domain, and vice versa, herein the proxies referred to as a “proxy links.” Therefore, thefirst proxy 107 will henceforth be referred to as the “first proxy link 107” and thesecond proxy 108 will henceforth be referred to as the “second proxy link 108.” Thesecond proxy link 108 represents thesecond activity view 106 in thesecond OS domain 102 and may also be hidden from view. - The
first proxy link 107 and thesecond proxy link 108 are formed, in this example illustration, when a task becomes a cross domain task. Thefirst application 103 presents thefirst activity view 105, such as by presenting a camera activity view. Thefirst application 103 then detects a selection in thefirst activity view 105 to launch an activity associated with thesecond activity view 106, such as detecting selection of a button in thefirst activity view 105 to launch thesecond application 104. Since a task that included an activity corresponding to thefirst activity view 105 now also includes the launched activity associated with thesecond activity view 106 of thesecond OS domain 102, that task becomes a cross domain task. In response to detecting the selection of the button, the first OS domain 101 (e.g., a system process, such as an application launcher) determines that thesecond application 104 corresponds to thesecond OS domain 102. Thefirst OS domain 101 then generates thefirst proxy link 107 and sends a message to thesecond OS domain 102 to generate thesecond proxy link 108. Thefirst OS domain 101 assigns theidentifier 115 to thefirst proxy link 107. Thefirst OS domain 101 also provides theidentifier 115 to thesecond OS domain 102 so that thesecond OS domain 102 can assign theidentifier 115 to thesecond proxy link 108. Thesecond proxy link 108 causes thesecond application 104 to launch with thesecond activity view 106. Consequently, the OS domains have formed a unifiedcross domain task 120. In other words, the cross domain task is unified so that thefirst activity view 105 and thesecond activity view 106 can be presented (or prevented from being presented) via the display of thedevice 100 in ways that appear as if they belong together (e.g., as if they both originate from the first application 103). - The
first OS domain 101 and thesecond OS domain 102 can, in cooperation, manage the unifiedcross domain task 120. For example, using theidentifier 115, thefirst OS domain 101 and thesecond OS domain 102 communicate with each other about thefirst proxy link 107 and thesecond proxy link 108. For instance, when thesecond OS domain 102 determines that thesecond activity view 106 should be terminated (e.g., responsive to selection of a back button), thesecond OS domain 102 determines that thesecond activity view 106 is associated with thesecond proxy link 108 and theidentifier 115. Thesecond OS domain 102 then causes thesecond proxy link 108 to come to a foreground of the display. Thesecond proxy link 108 detects that it comes to the foreground and initiates a message indicating theidentifier 115. The message indicates for a proxy link in the first OS domain 101 (which is associated with the identifier 115), to come to the foreground. Thesecond OS domain 102 sends the message to thefirst OS domain 101. Thefirst OS domain 101 determines that the receivedidentifier 115 is associated with thefirst proxy link 107. Consequently, the first OS domain causes thefirst proxy link 107 to come to the foreground. Thefirst proxy link 107 detects that it is coming to the foreground and causes thefirst activity view 105 to instead come to the foreground to be displayed. Therefore, when thefirst OS domain 101 and thesecond OS domain 102 communicate with each other about thefirst proxy link 107 and the second proxy link 108 (using the identifier 115) the OS domains can, together with the use of the proxy links, manage a unified presentation order for the stack of activity views from both applications (“unified activity view stack”). In other words, when thesecond activity view 106 is closed (e.g., via pressing the “back” button on the device 100), through the use of the proxy links 107 and 108, thefirst activity view 105 is automatically presented. - In
FIG. 1B , an example of thedevice 100 fromFIG. 1A is depicted as amobile device 125. Themobile device 125 includes all of the components shown inFIG. 1A . Themobile device 125 further includes a task switcher that can present a task list that includes the unifiedcross domain task 120 via adisplay 130. For example, a task switcher presents a view of all the tasks that are running on thedevice 100. However, instead of presenting a first task view for the part of the unifiedcross domain task 120 managed by thefirst OS domain 101 and a second task view for the part of the unifiedcross domain task 120 managed by thesecond OS domain 102, the task switcher presents a single, unified task view (“unified task view 140”). Theunified task view 140 may show only the top or active activity view on the unified activity view stack. For instance, when thesecond activity view 106 is active, the task switcher may be initiated via user input (e.g., via double-click of thedevice button 135 or some other user interface command). In response to the user input, thesecond OS domain 102 determines that thesecond activity view 106 is linked with thefirst activity view 105 via the proxy links (e.g., determines that thesecond proxy link 108 is linked to the first proxy link 107). Consequently, the task switcher presents in theunified task view 140 only athumbnail image 136 of thesecond activity view 106 and does not present a thumbnail image of thefirst activity view 105. The task switcher also determines that the unifiedcross domain task 120 was initiated from thefirst application 103. The task switcher may show anicon 137 that is associated with thefirst application 103 as the application that initiated the task. Thus, by presenting thethumbnail image 136 of thesecond activity view 106 and theicon 137 as part of the sameunified task view 140, the task switcher causes thesecond activity view 106 to appear to be from thefirst application 103, even though thesecond activity view 106 is actually from thesecond application 104 in thesecond OS domain 102. -
FIG. 2 is an example flow diagram (“flow”) 200 illustrating establishing and using proxy links for multiple OS domains.FIGS. 3 , 4, 5, 6, 7, 8, and 9 (“FIGS. 3-9”) are conceptual diagrams that help illustrate the flow ofFIG. 2 . This description will presentFIG. 2 in concert withFIGS. 3-9 . - In
FIG. 2 , theflow 200 begins atblock 202, where a device executes a first application within a first operating system (OS) domain of a device. The first application is associated with at least a first activity view. For example, as mentioned inFIGS. 1A and 1B , the first application may be the camera application and the first activity view may be the main view that is presented when the camera launches. - The
flow 200 continues atblock 204, where the device detects user input associated with the first application that is associated with activating a second activity view of a second application. The user input associated with the first application may activate a command launch an activity view of a second application. For example, the command to launch the second application activity view may be invocation of a callback function defined for a user input event (e.g., graphic button selection). To illustrate, a first activity view of a camera application is presented. The first activity view may have user-input elements, such as buttons, slider controls, etc., related to taking pictures and/or videos with a camera included in the device. Also, the first activity view may also include a user-input element (e.g., a graphical button) that, when selected, would cause a second activity view to appear, such as the gallery activity view for a second application which presents user-input elements related to viewing, editing, and deleting the pictures and videos taken via the camera application. - The
flow 200 continues atblock 206, where the device determines that the second application corresponds to a second OS domain of the device. The first application is different from the second application. The first OS domain is different from the second OS domain (e.g., separate, concurrently running instances of an OS). The device may be in a mode that runs only one OS domain. As such, the device would not determine whether the second application corresponds to a different OS domain. As context for the description ofblock 206, this disclosure will first describe, viaFIGS. 3-5 , an example of managing tasks for only one OS domain. The description will then describe, viaFIGS. 6-9 , an example of managing tasks for multiple OS domains. - Referring to
FIG. 3 , afirst OS domain 301 is illustrated. Thefirst OS domain 301 hasvarious applications 302 that have been installed, such as afirst application 310 and asecond application 320. Theapplications 302 have various activity views (“views”) that are presentable via a display. The various views may be associated with separate types of activities to perform for the given application. For example, thefirst application 310 includes aview 312, aview 314, and aview 316. As an example, thefirst application 310 may be a camera application. View 312, for example, may be the main view used to take pictures for the camera application. View 314 may be a second view used to take videos. View 316 may be a third view used to control settings and preferences for the camera application. Thesecond application 320 also includes multiple views, such asview 322,view 324, andview 326. As an example, thesecond application 320 may be a gallery application to view, edit, and delete pictures and videos. View 322 may be the main view of the gallery application used for viewing pictures and videos. View 324 may be a second view of the gallery application used to edit the pictures and videos. View 326 may be a third view used to control settings and preferences for the gallery application. - The
first OS domain 301 also includessystem elements 330. Thesystem elements 330 manage certain elements of theapplications 302. For example, thesystem elements 330 can manage tasks and the presentation of views associated with tasks. Some examples ofsystem elements 330 include atask switcher 331 and anapplication launcher 333. Theapplication launcher 333 is configured to manage installed applications in the operating system domain, and may be called when one application launches an activity view from another application. Thetask switcher 331 is configured to present a task list and can present representations of the particular tasks as “task views” via a display of the device. The task views may be represented as a thumbnail image of the top activity view active for each task. - In
FIG. 3 ,view 312 is depicted as being presented as an active view of the display of the device. For example,view 312 has a non-dashed outline.Views first application 310 and thesecond application 320 are running, but a view of one of the applications is active. Thetask switcher 331 of the device, when activated, can present a thumbnail of the last accessed view from any application that is running on the device. For tasks with views associated with different applications, thetask switcher 331 will present a thumbnail of the last accessed view from the view stack for a given task. -
FIG. 4 illustrates an example of what the views would look like afterview 322 is activated in response to user input associated withview 312. For example, view 312 can include a graphical button that can be selected to launch thesecond application 320. When the graphical button is selected, an operating system procedure to launch thesecond application 320 may include theapplication launcher 333 determining whether thesecond application 320 is installed and determining the location of thesecond application 320. Responsive to the graphical button, thesecond application 320 launches and automatically presentsview 322. Theapplication launcher 333 now tracks a task that spans thefirst application 310 and thesecond application 320. For example, theapplication launcher 333 will store identifiers forview 322 andview 312 in a database record. The record may also include an identifier for the task. The record may also specify a stack order for theviews views application launcher 333. When thetask switcher 331 is activated, thetask switcher 331 obtainsdata 404 from theapplication launcher 333 regarding tasks. Thedata 404 describes all tasks running on the device as well as any given task's view stack. Thetask switcher 331 can use thedata 404 to present a visual depiction of the view stack for any given task. For example, thedata 404 includes information for two separate tasks that are running on the device, a first task 410 (i.e., “task 1”) and a second task 420 (i.e., “task 2”). Thefirst task 410 includes the view stack for the task that relates to thefirst application 310 and thesecond application 320, where the last accessed view isview 322. Thesecond task 420 includes a view stack for a combined email task. -
FIG. 5 depicts anexample device 525. Thedevice 525 presents atask view 540 when thetask switcher 331 is activated. For this illustration, thetask switcher 331 is activated when theview 322 is the active view. Therefore, thetask view 540 only shows a representation of theview 322 for thefirst task 410. For example, thetask switcher 331 presents afirst thumbnail image 536 that representsview 322. Thetask switcher 331 also determines, from thedata 404, that thefirst task 410 is initiated from thefirst application 310. Consequently, thetask switcher 331 shows afirst icon 537 that represents thefirst application 310. Thus, by presenting thefirst thumbnail image 536 and theicon 537 as part of the same representation of thefirst task 410, thetask switcher 331 causes theview 322 to appear to be from thefirst application 310, even though theview 322 is actually from thesecond application 320. Thetask view 540 also presents a representation of thesecond task 420, which includes athumbnail image 538 for the last accessed view for thesecond task 420. Further, anicon 539 indicates the originating application for thesecond task 420. - Now, using
FIGS. 6 , 7, and 8 (“FIGS. 6-8”) as examples, this description will describeblocks FIG. 6 , afirst OS domain 601 is illustrated. Thefirst OS domain 601 hasvarious applications 602 that have been installed in thefirst OS domain 601. For instance, thefirst OS domain 601 may pertain to a first type of application of the device, such as “core” applications for a mobile device (e.g., a camera application, a phone application, a maps application, etc.). Thefirst application 610 is instantiated in thefirst OS domain 601. Theapplications 602 have various activity views (“views”) that are presentable via a display. The various views may be associated with separate types of activities to perform for the given application. For example, thefirst application 610 includesview 612,view 614, andview 616. - The
first OS domain 601 also includessystem elements 630 including atask switcher 631, a first application launcher 632 (“application launcher 1”) and aproxy manager 633. Theapplication launcher 632 is configured to launch and track activity views and tasks contained within thefirst OS domain 601. Theproxy manager 633 is configured to track cross domain tasks and manage proxy links between thefirst OS domain 601 and thesecond OS domain 603. Thetask switcher 631 is configured to present representations of the particular tasks in a task list via a display of the device. - In
FIG. 6 ,view 612 is depicted as being presented as the active view of the display of the device. When theview 612 is active, a graphical button of theview 612 may be selected to launch asecond application 620. Thesecond application 620, however, is not in thefirst OS domain 601, but is instead in asecond OS domain 603. Thesecond OS domain 603 hasvarious applications 605 that have been installed in thesecond OS domain 603. For instance, thesecond OS domain 603 may pertain to a second type of application of the device, such as “personal” or “private” applications for a mobile device (e.g., an image gallery application, a text messaging application, a personal email application, etc.). Thesecond application 620 has been instantiated in thesecond OS domain 603. Theapplications 605 have various activity views (“views”) that are presentable via a display. The various views may be associated with separate types of activities to perform for any given application. For example, thesecond application 620 includesview 622,view 624, andview 626. Furthermore, thesecond OS domain 603 also includessystem elements 660 including a second application launcher 662 (“application launcher 2”). The second application launcher 663 is configured to launch and track activity views and tasks contained within thesecond OS domain 603. - Referring momentarily back to
FIG. 2 , block 206 indicates that the device determines that a second application corresponds to a different OS domain of the device than the first application. For example, inFIG. 6 , when theview 612 is active, and after the button is selected to launch thesecond application 620, thefirst application launcher 633 accessesapplication data 650. Theapplication data 650 specifies thefirst OS domain 601 and thesecond OS domain 603, and also includes, for each of thefirst OS domain 601 and thesecond OS domain 603, a listing of each of the applications instantiated in each domain. Thefirst application launcher 633 detects that thesecond application 620 is installed in the second OS domain. For instance, thefirst application launcher 633 can search or parse theapplication data 650 to find anindicator 680 associated with thesecond application 620. Thefirst application launcher 633 can also determines that theindicator 680 for thesecond application 620 is associated with anindicator 681 for thesecond OS domain 603 indicated in theapplication data 650. In other examples, thefirst application launcher 633 may only have access to a portion of theapplication data 650, such as only the portion pertaining to thefirst OS domain 601. Thefirst application launcher 633 can query other OS domains to confirm which domain thesecond application 620 is instantiated within. For example, in some embodiments, each OS domain has OS elements that track applications instantiated within that particular domain. With no visibility of other OS domains or limited visibility of other OS domains, the OS domains can utilize a process responsible for inter-domain communications. This process (“inter-domain coordinator”) inherits a special kernel permission to pass through an OS domain isolation mechanism (e.g., an OS domain firewall), for example. When the second application is not discovered in the application tracking data of the first OS domain, the inter-domain coordinator queries the other OS domains. The OS domain with an instance of the second application responds with an indication of the OS domain. This indication can be implicit (e.g., when there are only two OS domains on a device) or explicit (e.g., an OS domain identifier indicated in a response). In some embodiments, each OS domain can access a global directory that is not visible to applications to determine a host OS domain of an application. As applications are instantiated, the host OS domains update the global directory. Locks can be avoided by provisioning different sections or different structures to the different OS domains. In some embodiments, a directory can be created when the different OS domains are configured with the different application assignments. - Because
view 612 has received a selection associated with launching thesecond application 620, and thesecond application 620 is installed in thesecond OS domain 603, a new task in thesecond OS domain 603 will become part of a cross-domain task that also includes the existing task in thefirst OS domain 601. As described previously, theproxy manager 633 is involved in establishing a proxy link between the two domains. - Returning momentarily to
FIG. 2 , theflow 200 continues atblock 208, where the device establishes a first proxy link within the first OS domain that corresponds with a second proxy link within the second OS domain. The first proxy link is associated with causing the second proxy link to invoke the second activity view of the second application within the second OS domain. -
FIGS. 7 and 8 illustrate one example of establishing a first proxy link within a first OS domain that corresponds with a second proxy link within a second OS domain. InFIG. 7 , thefirst application launcher 632 has determined (e.g., via accessing theapplication data 650 inFIG. 6 ), that thesecond application 620 is associated with thesecond OS domain 603. Whenview 612 was launched as a first task, thefirst application launcher 632 associatedview 612 with afirst task ID 760 for the first task. A record of thefirst task ID 760 includes a view identifier 762 (“view 1 ID”) associated with theview 612. Because the button was selected from theview 612 to launch thesecond application 620 and thesecond application 620 is associated with thesecond OS domain 603, a cross-domain task will be established. - As a result of the
view 612 receiving a selection to open theview 622 of thesecond application 620, a command is sent to thefirst application launcher 632 to launch thesecond application 620. Thefirst application launcher 632 determines that thesecond application 620 is associated with a different domain than thefirst OS domain 601, thefirst application launcher 632 launches a first proxy link 711 (“proxy 1”). Thefirst proxy link 711 may be an activity view that is not visible. Theapplication launcher 760 may generate an object reference for thefirst proxy link 711. The object reference to thefirst proxy link 711 will be referred to as the first proxy reference 761 (“proxy 1 ref”) stored with thefirst task ID 760 for the first task. Thefirst application launcher 632 tracks a stacking order (or “view stack”) for the first task by ordering thefirst proxy reference 761 above that theview identifier 762. After thefirst proxy link 711 is generated, thefirst application launcher 632 may attempt to bring thefirst proxy link 711 to a foreground of the display so that it is stacked above theview 612. - The
first proxy link 711 generates a unique identifier (i.e., token 721) and provides the token 721 to theproxy manager 633. Theproxy manager 633 generates an entry in a data store (e.g., theproxy manager 633 generates arecord 702 in a database 701). The table 701 includes information about proxies in thefirst OS domain 601 that are bound to a task in a different OS domain, includinginformation 710 pertinent to the cross domain task. For example, therecord 702 may include the token 721 and thefirst proxy reference 761. Therecord 702 can also include information that identifies a second task in a different domain that is related to thefirst proxy link 711, which will be described in further detail inFIG. 8 . - In
FIG. 8 , after receiving the token 721 from thefirst proxy link 711,proxy manager 633 initiates the creation of asecond proxy link 811 in thesecond OS domain 603. For instance, theproxy manager 633 communicates the token 721 to thefirst application launcher 632 and requests that thefirst application launcher 632 send an instruction to thesecond application launcher 662 in thesecond OS domain 603. Thus, thefirst application launcher 632 sends amessage 813 to thesecond application launcher 662 with the instruction to generate thesecond proxy link 811. Themessage 813 includes a copy of the token 721, which is used to generate thesecond proxy link 811. Responsive to the instruction to generate thesecond proxy link 811, thesecond proxy link 811 is launched and asecond task ID 860 is created by thesecond application launcher 662 for thesecond proxy link 811. The task identifier for the second task will be referred to as second task ID 760 (“task 2 ID”). The second task is related to thesecond proxy link 811. Thesecond application launcher 662 may send amessage 814 to thefirst application launcher 632 to indicate a value for thesecond task ID 860. - The
second proxy link 811 may be an activity view that is not visible and which includes specific instructions regarding itself and regardingview 622. Thesecond proxy link 811 requests thesecond application launcher 662 to launch the second application 620 (if not already running) and bring theview 622 to the foreground. Thesecond application launcher 662 may associate theview 622 with thesecond task ID 760. The second task is a second portion of the cross-domain task as it relates to thesecond OS domain 603. Thesecond application launcher 662 stores information in an entry of a data store in thesecond OS domain 603. For example, thesecond application launcher 662 stores thesecond task ID 760. Thesecond application launcher 662 also stores an object reference to thesecond proxy link 811. The object reference to thesecond proxy link 811 will be referred to as the second proxy reference 861 (“proxy 2 ref”). The identifier for theview 662 will be referred to asview identifier 862. Thesecond application launcher 662 tracks a stacking order, or view stack, for the second task by ordering theview identifier 862 above thesecond proxy reference 861. - The
proxy manager 633 may store thesecond task ID 860 in therecord 702. Because thefirst proxy link 711 and thesecond proxy link 811 both have the same unique ID associated with them (i.e., the token 721), they are uniquely linked or bound together. Further, because theproxy manager 633 includes a copy of thesecond task ID 860, the token 721, and thefirst proxy reference 761, theproxy manager 633 has information that can be used by thetask switcher 631 to link the first task to the second task as a cross-domain task. - Referring still to
FIG. 8 , thesecond proxy link 811 includes instructions and/or information limited to managing the presentation of the view 622 (e.g., to bring thesecond proxy link 811 into the foreground of the display when theview 622 is closed). As mentioned, when thesecond proxy link 811 is generated it may come to the foreground. Thesecond proxy link 811, however, may not become visible. Rather, the activity that was selected via theview 612 is invoked, which causes thesecond application 620 to launch and which causes theview 622 to come to the foreground. Further, thefirst proxy manager 633 switches a domain view for the device to thesecond OS domain 603. Because theview 622 is in the foreground, when the domain view is switched to thesecond OS domain 603, theview 622 becomes visible on the display of the device. Therefore, an order of a cross-domain view stack for the cross domain task has theview 612 as the lowest level, thefirst proxy link 711 above theview 612, thesecond proxy link 811 above thefirst proxy link 711, and theview 622 above thesecond proxy link 811. Theview 622 is the highest level in the cross-domain view stack because it is in the foreground. In some embodiments, the cross-domain view stack is composed of two parts. A first part is the view stack for the first task managed by thefirst OS domain 601 that pertains to theview 612 and thefirst proxy link 711. For instance, thefirst application launcher 632 tracks a state of thefirst proxy link 711 and a state of theview 612 as they are individually brought to the foreground. Thefirst application launcher 632 stores the state information in a last-in-first-out queue (e.g., a first “back stack” queue), as shown inFIGS. 7 and 8 where thefirst proxy reference 761 and theview identifier 762 are ordered. The order in the first back stack queue indicates that thefirst proxy link 711 is above theview 612. The second part of the cross-domain view stack is the view stack for the second task managed by thesecond OS domain 603. For example, thesecond application launcher 662 tracks a state of thesecond proxy link 811 and a state of theview 622 as they are individually brought to the foreground. Thesecond application launcher 662 stores the state information in a separate last-in-first-out queue (e.g., a second “back stack” queue), as shown inFIG. 8 . The order in the second back stack queue indicates that thefirst proxy link 711 is above theview 612. In some embodiments, the first back stack queue and the second back stack queue are not combined. Rather, they are linked by virtue of the proxy links 711 and 811 (e.g., via the token 721), and are managed by theproxy manager 633. The proxy links 711 and 811 may be configured to communicate with each other (e.g., using the token 721 as a reference) regarding when to bring one or the other into the foreground. Because the proxy links 711 and 811 have the ability to communicate in such a manner, then the overall back stack sequence for the view stack of the cross domain task is maintained in the proper order. - Returning momentarily to
FIG. 2 , theflow 200 continues atblock 210, where the device uses the first proxy link within the first OS domain to represent the second activity view of the second application within the second OS domain.FIG. 9 illustrates one example of using the first proxy link within the first OS domain to represent the second activity view of the second application within the second OS domain. InFIG. 9 , atask list 940 is launched on adevice 925. Thedevice 925 includes the components described inFIGS. 6-8 . Thetask list 940 is launched by thetask switcher 631. Thetask switcher 631 is configured to communicate withfirst application launcher 632 and thesecond application launcher 662 to obtain the information it needs to properly present a list of cross-domain tasks. For example, when thetask list 940 is launched, thetask switcher 631 will query thefirst application launcher 632 and thesecond application launcher 662 for all tasks that they are tracking. Thefirst application launcher 632 sends to the task switcher a list of the information for the first task. For example, thefirst application launcher 632 may send thefirst task ID 760, thefirst proxy reference 761, and theview identifier 762. Thetask switcher 631 detects that thefirst proxy reference 761 is at the top of the view stack for the first task. Thetask switcher 631 then queries the proxy manager 633 (using the first proxy reference 761), to determine whether an entry exists in the table 701 for thefirst proxy reference 761. Theproxy manager 633 detects thefirst proxy reference 761 in therecord 702. Theproxy manager 633 then returns to thetask switcher 631 thesecond task ID 860. Because theproxy manger 633 returned thesecond task ID 860, thetask switcher 631 determines that the first task is part of a cross-domain task. Thetask switcher 631 uses thesecond task ID 860 to query thesecond application launcher 662. Thesecond application launcher 662 returns to thetask switcher 662 the view stack for thesecond task 860. Thus, as shown inFIG. 9 , thetask switcher 631 determines a stacking order for the cross domain task. In other words, thetask switcher 631 determines that theview 612 is within the view stack for the cross domain task. However, because theview 612 is associated with the cross domain task, and because theview 612 is not the active view, then the second task switcher 661 does not present a thumbnail image of theview 612 in thetask list 940. Instead, because theview 622 is the active view (i.e. is highest on the view stack for the cross domain task), then the second task switcher 661 only presents athumbnail image 936 of theview 622. However, because theview 612 is the lowest on the view stack for the cross domain task, and because theview 612 is associated with thefirst application 610, then thetask switcher 631 can present anicon 937 that identifies thefirst application 610 as being the originating application for the cross domain task. Further, thetask switcher 631 can detect other tasks that are running. For instance, thetask switcher 631 detects that athird task 920 is running on thefirst OS domain 601. Thetask switcher 631 receives information from the first application launcher about thethird task 920. Thetask switcher 631 then presents a representation of thethird task 920 in the task list 940 (e.g., presents athumbnail image 938 for the last accessed view in the third task and presents anicon 939 for the originating application for the third task 920). - Referring momentarily back to block 210, another example of using the first proxy link within the first OS domain to represent the second activity view of the second application within the second OS domain includes terminating the second activity view within the second OS domain and causing the first activity view to become the active view again. For example, referring to
FIG. 8 , when theview 622 is closed, thesecond application launcher 662 notifies thesecond proxy link 811 to come to the foreground. Thesecond proxy link 811 initiates a communication with the proxy manager 633 (using the token 721), to bring thefirst proxy link 711 to the foreground. Thesecond proxy link 811 shuts down theview 622 and thesecond proxy link 811 deletes itself. After receiving the communication from thesecond proxy link 811 to come to the foreground, theproxy manager 633 will use the token 721 to do a lookup in the table 701 to identify thefirst proxy link 711. Theproxy manager 633 then instructs thefirst proxy link 711 to come to the foreground. As thefirst proxy link 711 begins to come to the foreground, thefirst proxy link 711 will cause theview 612 to come to the foreground instead. The focus of the display may switch back to thefirst OS domain 601. Because theview 612 is in the foreground, theview 612 becomes the active view. Thefirst proxy link 711 then deletes itself. A more detailed explanation of this process is described in connection withFIGS. 15A , 15B, 16A, 16B, 17A and 17B. -
FIG. 10A is an example flow diagram (“flow”) 1000 illustrating managing cross domain tasks with a response value.FIG. 10B is an example flow diagram (“flow”) 1001 illustrating managing cross domain tasks with a response value.FIGS. 12A , 12B, 12C, and 13A are conceptual diagrams that help illustrate the flows ofFIGS. 10A and 10B , according to some embodiments. This description will presentFIGS. 10A and 10B in concert withFIGS. 12A , 12B, 12C, and 13A. In some embodiments, the operations shown inFIGS. 10A and 10B can be performed in series, while in other embodiments, one or more of the operations can be performed in parallel. - Referring now to
FIG. 10A , theflow 1000 begins atblock 1002, where a device detects a selection of a first application. For example, inFIG. 12A adevice 1225 presents adevice selection screen 1280. Thedevice 1225 detects the selection of anicon 1237 related to a camera application. - Referring back to
FIG. 10A , theflow 1000 continues atblock 1004, where the device presents a first activity view. For example, inFIG. 12B after theicon 1237 is selected, thedevice 1225 presents afirst activity view 1212 for a camera application. The camera application is assigned to afirst OS domain 1201. Thefirst activity view 1212 provides features for taking pictures using a camera of thedevice 1225. For instance, thedevice 1225 detects that apicture button 1242 is selected which, inFIG. 12C , causes apreview image 1243 of the picture to be shown. - Referring back to
FIG. 10A , theflow 1000 continues atblock 1006, where the device detects user input via the first activity view that causes a second application to be activated. For example, inFIG. 12C , thefirst activity view 1212 presents alink 1244 to a gallery application. Thelink 1244 can be selected via user input. Thelink 1244 is configured to cause the gallery application to be launched in asecond OS domain 1203. - Referring back to
FIG. 10A , theflow 1000 continues atblock 1008, where the device generates a first proxy link (“proxy 1”), which has an identifier (e.g., a token). For example, inFIG. 12C thefirst OS domain 1201 generates afirst proxy link 1211. Thefirst OS domain 1201 can generate thefirst proxy link 1211 according to the description inFIG. 7 . - Referring back to
FIG. 10A , theflow 1000 continues at block 1010, where the device sends a message to a second OS domain to activate the second application. The message includes the token and a request for a response value. For example, inFIG. 12C , when thelink 1244 is selected, thefirst proxy link 1211 initiates a message 1213 to asecond OS domain 1203. The message 1213 includes a copy of the token and a request to return a copy of the last picture that was taken after the gallery application is closed. For instance, the gallery application may include features to edit the last picture that was taken. Thus, the camera application requests a copy of the last picture that was taken to present it again as thepreview image 1243. - Referring now to
FIG. 10B , aflow 1001 begins at block where the device receives the message from the first domain and, based on the message, at block 1014, the device generates a second proxy link (“proxy 2”) using the token. The device further links to second activity view. For example, inFIG. 13A thesecond OS domain 1203 receives the message 1213 and generates thesecond proxy link 1311. Thesecond proxy link 1311 and thefirst proxy link 1211 are linked, for example, as similarly described inFIG. 2 andFIGS. 6 , 7, 8 and 9. - Referring back to
FIG. 10B , theflow 1001 continues at block 1016, where the device launches the second application and brings the second activity view to the foreground. For example, inFIG. 13A the second proxy 131 launches the gallery application and instructs thesecond activity view 1322 to come to the foreground. Thesecond activity view 1322, thesecond proxy link 1311, thefirst proxy link 1211 and thefirst activity view 1212 are presented as being in a cross domain view stack, for example similar to the view stacks described inFIGS. 7 , 8 and 9. The second activity view 1322 (in the foreground) is above thesecond proxy link 1311 in the cross domain view stack. Thesecond proxy link 1311 is above thefirst proxy link 1211 in the cross domain view stack. Thefirst proxy link 1211 is above thefirst activity view 1212 in the cross domain view stack. - Referring back to
FIG. 10B , theflow 1001 continues at block 1018, where the device presents the second activity view. For example, inFIG. 13A after thedevice 1225 launches the gallery application and brings thesecond activity view 1322 to the foreground, the device switches the view focus for thedevice 1225 to thesecond OS domain 1203. Thesecond view 1322 then becomes visible via a display of thedevice 1225. -
FIG. 11 is an example flow diagram (“flow”) 1100 illustrating presenting cross domain tasks.FIGS. 13A , 13B, 14A and 14B are conceptual diagrams that help illustrate the flow ofFIG. 11 , according to some embodiments. This description will presentFIG. 11 in concert withFIGS. 13A , 13B, 14A and 14B. In some embodiments, the operations shown inFIG. 11 can be performed in series, while in other embodiments, one or more of the operations can be performed in parallel. For example, blocks 1102 and 1108 can be performed in parallel. Furthermore, theflow 1100 can be performed in parallel with the flows described inFIGS. 15A and 15B . - In
FIG. 11 , theflow 1100 begins atblock 1102, where a device determines whether an additional view is activated for a cross domain task. If so, then theflow 1000 continues atblock 1104 where the device presents the additional activity view. For example, inFIG. 13A , thedevice 1225 detects a selection of anedit feature 1345 to edit the last picture taken from the camera application. Once selected, anadditional activity view 1324 is presented as illustrated inFIG. 13B . - Referring back to
FIG. 11 , theflow 1100 continues atblock 1106, where the device includes the additional activity view in a view stack for the cross domain task in the respective domain where the view additional activity view is activated. For example, inFIG. 13B theadditional activity view 1324 is positioned at the top of the view stack (e.g., at a front of a back stack queue for the second OS domain 1203). Furthermore, inFIG. 13B , theadditional activity view 1324 provides features to edit the last picture taken. For example, one of the features is acontrol 1350 used to flip the picture horizontally. After editing the picture (e.g., after flipping the picture horizontally), theadditional activity view 1324 is closed and thesecond OS domain 1203 removes theadditional activity view 1324 from the view stack, causing thesecond activity view 1322 to be displayed again. - Referring back to
FIG. 11 , theflow 1100 continues atblock 1108, where the device determines whether a task list feature is selected. If so, then the process continues at block 1110 wherein the device determines that the first proxy link is associated with the second proxy link. For example, inFIG. 14A , after thesecond activity view 1322 is presented again, thedevice 1225 receives an additional user input (e.g., a double-click of a navigation button on the device 1225). - Referring back to
FIG. 11 , theflow 1100 continues atblock 1112, where the device presents the second activity view in a task list. The device also prevents the first activity view from being presented as a separate task in the task list. For example, inFIG. 14B , in response to the additional user input described inFIG. 14A , thedevice 1225 presents in atask list 1340, athumbnail image 1436 of thesecond activity view 1322. Thedevice 1225 can present thetask list 1340 as similarly described inFIG. 9 . Thethumbnail image 1436 represents the cross domain task in that it only shows a representation of the second activity view 1322 (at the top of the view stack for the cross domain task) and not a representation of the first activity view 1212 (which is below thesecond activity view 1322 in the view stack for the cross domain stack). If thethumbnail image 1436 is selected from thetask list 1340, then the display returns to the most recently accessed view for that task, which was thesecond activity view 1322. -
FIG. 15A is an example flow diagram (“flow”) 1500 illustrating managing cross domain tasks.FIG. 15B is an example flow diagram (“flow”) 1501 illustrating managing cross domain tasks.FIGS. 16A , 16B, 17A and 17B are conceptual diagrams that help illustrate the flow ofFIGS. 15A and 15B , according to some embodiments. This description will presentFIGS. 15A and 15B in concert withFIGS. 16A , 16B, 17A and 17B. - In
FIG. 15A , theflow 1500 begins atblock 1502, where a device detects user input via a second activity view to terminate the second activity view. For example, inFIG. 16A , thedevice 1225 receives an additional user input (e.g., a single click of the navigation button on thedevice 1225 or a selection of a graphical “back” button), which initiates a request to close thesecond activity view 1322 and present the next lowest view for the cross domain task. - Referring back to
FIG. 15A , theflow 1500 continues atblock 1504, where the device brings the second proxy link to a foreground of a display of the device. For example, inFIG. 16B , after detecting the additional user input (e.g., the single click of the navigation button or the selection of the graphical “back” button), thesecond proxy link 1311 comes to the foreground of a display of thedevice 1225. - Referring back to
FIG. 15A , theflow 1500 continues atblock 1506, where the device instructs the first proxy link to come to foreground of the display. The device further passes the response value to the first application. For example, inFIG. 16B , thesecond proxy link 1311 detects that it is coming to the foreground and initiates a message 1613 to be sent to thefirst OS domain 1201. The message 1613 includes a request for whichever proxy link is associated with the token to come to the foreground. The message 1613 includes a copy of the token to pass to thefirst OS domain 1201. Furthermore, thesecond OS domain 1203 also includes in the message 1613 a response value associated with the activity or activities for thesecond activity view 1322 that were requested by the first application 1210. For example, as described previously inFIG. 12C , the camera application requested, in the message 1213, that the gallery application return a value for the last picture taken so that it could present it as thepreview image 1243. Therefore, inFIG. 16B , the message 1613 includes data pertaining to the requested response value. For example, the message 1613 may include a copy of the edited image which was modified (e.g., flipped horizontally) as described inFIG. 13B . Thefirst OS domain 1201 receives the message 1613 and, based on the token included in the message 1613, determines that thefirst proxy link 1211 is associated with the token. Thefirst OS domain 1201 then instructs thefirst proxy link 1211 to come to the foreground. - Referring back to
FIG. 15A , theflow 1500 continues atblock 1508, where the device closes the second application and the second activity view, and deletes the second proxy link. For example, inFIG. 17A , after thesecond proxy link 1311 initiated the message 1631 and instructed thesecond activity view 1322 to close, thesecond proxy link 1311 deletes itself. For instance, in the example described inFIG. 8 , if thesecond proxy link 811 were to delete itself, it would instruct thesecond application launcher 662 to delete thesecond task ID 860, and thesecond proxy reference 861 associated with thesecond proxy link 811 Referfing back toFIG. 17A , thesecond OS domain 1203 then transfers the focus for the display of thedevice 1225 back to thefirst OS domain 1201. - Referring now to
FIG. 15B , theflow 1501 begins at block 1512, where the device detects the instruction to bring the first proxy link to the foreground. For example, inFIG. 17A , thefirst OS domain 1201 receives the token from the message 1613 and determines that the token is associated with thefirst proxy link 1211. For example, referring toFIG. 8 , if theproxy manager 633 were to receive a message to bring thefirst proxy link 711 to the foreground, theproxy manager 633 would look up the token 721 in therecord 702 and determine that it is associated with thefirst proxy link 711 because of theidentifier 761 in therecord 702. - Referring back to
FIG. 15B , theflow 1501 continues at block 1514, where the device brings first proxy link to foreground. For example, inFIG. 17A , after thefirst OS domain 1201 receives the message 1613, it instructs thefirst proxy link 1211 to come to the foreground. As thefirst proxy link 1211 comes to the foreground, it does not become visible. Rather, thefirst proxy link 1211 initiates an instruction for thefirst activity view 1212 to come to the foreground. As depicted inFIG. 17A , thefirst activity view 1212 is now in the foreground at the top of the view stack. - Referring back to
FIG. 15B , theflow 1501 continues at block 1516, where the device presents the first activity view as the active view using the response value. For example, inFIG. 17A , thedevice 1225 presents thefirst activity view 1212. Thefirst activity view 1212 shows thepreview image 1243 using the copy of the picture as modified inFIG. 13B . Further, thefirst OS domain 1201 receives the message sent by thesecond OS domain 1203 to make thedevice 1225 switch focus to thefirst OS domain 1201. The focus returns to thefirst OS domain 1201. Because thefirst activity view 1212 is in the foreground, thefirst activity view 1212 becomes visible on the display of thedevice 1225. - Referring back to
FIG. 15B , theflow 1501 continues atblock 1518, where the device deletes the first proxy link. For example, inFIG. 17B , thefirst proxy link 1211 deletes itself. In the example shown inFIG. 8 , thefirst proxy link 711 may instruct theproxy manager 633 to delete therecord 702 becausefirst proxy link 711 would no longer be associated with a cross domain task. - In some embodiments, the operations shown in
FIGS. 15A and 15B can be performed in series, while in other embodiments, one or more of the operations can be performed in parallel. For example, block 1508 may be performed in parallel with any of the blocks 1512-1518. - In some embodiments, an operating system may be configured such that an activity view will not accept an instruction to be grouped under a same task identifier. For instance, after a first OS domain sends an instruction to generate a second proxy link, the second proxy link may attempt to invoke a second application in a second OS domain. However, the activity which invokes the second application may be configured (e.g., defined or declared) so that it will not accept the instruction to be grouped with the second proxy link in a cross domain task. The activity may force the second application to be given a new, separate task in the second OS domain. In such a case, the second proxy link will be created, but not associated with a second activity view for the second application. In such an example, the second proxy link can be configured to destroy itself and send an instruction to the first proxy link to destroy itself. The first proxy link will then destroy itself. The first activity view in the first OS domain will be the last activity view for the task before the first proxy link was created. If a task list were to be activated, there would be two separate tasks listed, one for the first application in the first OS domain, and one for the second application in the second OS domain.
- Furthermore, in some embodiments, any of the domains may include a feature for a task (specifically, the process making up the task) to be terminated while the task is not in the foreground and memory is running low. The process is reinitiated when the task comes to foreground. For example, if a cross domain task is not in the foreground in either a first OS domain or a second OS domain, then the first OS domain and the second OS domain may be configured to independently terminate the processes for their portions of the cross domain task. Any of the individual processes on the respective domains can be reinitiated when the portion of that task is brought to the foreground in that domain.
- While the operations of the example flow diagrams are shown in a particular order to help understand the disclosure, embodiments are not necessarily limited to the illustrated orders. Embodiments can perform the operations in a different order, at least some of the operations in parallel, different operations, etc. For example, operations of
blocks flow 1100 can be performed in parallel with the flows described inFIGS. 15A and 15B . Furthermore, operations for theblock 1508 may be performed in parallel with, or after, any operations ofblocks 1512, 1514, 1516, and 1518. - Embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, embodiments of the inventive subject matter may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium. The described embodiments may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic device(s)) to perform a process according to embodiments, whether presently described or not, since every conceivable variation is not enumerated herein. A machine readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions. In addition, embodiments may be embodied in an electrical, optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.), or wireline, wireless, or other communications medium.
- Computer program code for carrying out operations of the embodiments may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN), a personal area network (PAN), or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
-
FIG. 18 depicts anexample device 1800. Thedevice 1800 includes a processor unit 1801 (possibly including multiple processors, multiple cores, multiple nodes, and/or implementing multi-threading, etc.). Thedevice 1800 includesmemory 1807. Thememory 1807 may be system memory (e.g., one or more of cache, SRAM, DRAM, zero capacitor RAM, Twin Transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, etc.) or any one or more of the above already described possible realizations of machine-readable media. Thedevice 1800 also includes a bus 1803 (e.g., PCI, ISA, PCI-Express, HyperTransport® bus, InfiniBand® bus, NuBus, etc.). Thememory 1807 embodies functionality to implement embodiments described above. Thememory 1807 may include one or more functionalities that facilitate managing tasks. Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on theprocessor unit 1801. For example, the functionality may be implemented with an application specific integrated circuit, in logic implemented in theprocessor unit 1801, in a co-processor on a peripheral device or card, etc. Further, realizations may include fewer or additional components not illustrated inFIG. 18 (e.g., video cards, audio cards, additional network interfaces, peripheral devices, etc.). Theprocessor unit 1801, the storage device(s) 1809, and the network interface 1805 are coupled to thebus 1803. Although illustrated as being coupled to thebus 1803, thememory 1807 may be coupled to theprocessor unit 1801. - In some embodiments, the
memory 1807 may include separate instances of an operating system, such as a firstoperating system instance 1831 and a secondoperating system instance 1835. The firstoperating system instance 1831 may include any of the components described herein that are associated with a first OS domain. The secondoperating system instance 1835 may include any of the components described herein that are associated with a second OS domain. Furthermore, thedevice 1800 includes adisplay unit 1821, such as touchscreen display, a retina display, an autostereoscopic 3D display, etc. The firstoperating system instance 1831 and the secondoperating system instance 1835 are configured to present views via thedisplay unit 1821 for tasks, such as a for a cross domain task. Further, thedevice 1800 includes user-input detection unit 1822, configured to detect activation of user-input devices that are built into the device (e.g., a touchscreen, a “back” button, a navigation button, a volume button, biometric reading devices, eye-tracking devices, etc.). Thedisplay unit 1821 can also be configured to receive user input. - While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for managing tasks, particularly cross domain tasks, as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.
- Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.
Claims (30)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/290,114 US9467329B2 (en) | 2014-05-29 | 2014-05-29 | Coordinating activity views across operating system domains |
CA2893097A CA2893097C (en) | 2014-05-29 | 2015-05-28 | Coordinating activity views across operating system domains |
EP15169926.1A EP2963544B1 (en) | 2014-05-29 | 2015-05-29 | Coordinating activity views across operating system domains |
CN201510288926.XA CN105183495B (en) | 2014-05-29 | 2015-05-29 | Coordinating Activity view is carried out in cross operating system domain |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/290,114 US9467329B2 (en) | 2014-05-29 | 2014-05-29 | Coordinating activity views across operating system domains |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150350005A1 true US20150350005A1 (en) | 2015-12-03 |
US9467329B2 US9467329B2 (en) | 2016-10-11 |
Family
ID=53396225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/290,114 Active 2034-11-15 US9467329B2 (en) | 2014-05-29 | 2014-05-29 | Coordinating activity views across operating system domains |
Country Status (4)
Country | Link |
---|---|
US (1) | US9467329B2 (en) |
EP (1) | EP2963544B1 (en) |
CN (1) | CN105183495B (en) |
CA (1) | CA2893097C (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160034165A1 (en) * | 2014-07-30 | 2016-02-04 | Samsung Electronics Co., Ltd. | Activity processing method and electronic device supporting the same |
US20170262296A1 (en) * | 2016-03-11 | 2017-09-14 | Samsung Electronics Co., Ltd. | Electronic apparatus and controlling method thereof |
US20180032228A1 (en) * | 2014-06-12 | 2018-02-01 | Apple Inc. | Systems and Methods for Efficiently Navigating Between Applications with Linked Content on an Electronic Device with a Touch-Sensitive Display |
US20180074666A1 (en) * | 2014-09-02 | 2018-03-15 | Microsoft Technology Licensing, Llc | Semantic card view |
CN108255683A (en) * | 2016-12-29 | 2018-07-06 | 杭州华为数字技术有限公司 | The method and terminal of message notifying in terminal |
US10402007B2 (en) | 2014-06-12 | 2019-09-03 | Apple Inc. | Systems and methods for activating a multi-tasking mode using an application selector that is displayed in response to a swipe gesture on an electronic device with a touch-sensitive display |
US10824488B2 (en) * | 2016-12-22 | 2020-11-03 | Cloudminds (Shenzhen) Robotics Systems Co., Ltd. | Device detection method and system, electronic device, cloud robot system, and computer program product |
US11966578B2 (en) | 2018-06-03 | 2024-04-23 | Apple Inc. | Devices and methods for integrating video with user interface navigation |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10248452B2 (en) * | 2016-05-20 | 2019-04-02 | Microsoft Technology Licensing, Llc | Interaction framework for executing user instructions with online services |
CN110162389B (en) * | 2019-05-15 | 2022-05-13 | 广州视源电子科技股份有限公司 | Application program starting method and device and intelligent interaction equipment |
CN118132174A (en) * | 2022-12-02 | 2024-06-04 | 华为技术有限公司 | Cross-system content display method and device |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055578A1 (en) * | 2003-02-28 | 2005-03-10 | Michael Wright | Administration of protection of data accessible by a mobile device |
US6883098B1 (en) * | 2000-09-20 | 2005-04-19 | International Business Machines Corporation | Method and computer system for controlling access by applications to this and other computer systems |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US20130298201A1 (en) * | 2012-05-05 | 2013-11-07 | Citrix Systems, Inc. | Systems and methods for network filtering in vpn |
US20140033271A1 (en) * | 2011-10-11 | 2014-01-30 | Citrix Systems, Inc. | Policy-Based Application Management |
US8650303B1 (en) * | 2013-03-29 | 2014-02-11 | Citrix Systems, Inc. | Data management for an application with multiple operation modes |
US8849979B1 (en) * | 2013-03-29 | 2014-09-30 | Citrix Systems, Inc. | Providing mobile device management functionalities |
US8935392B2 (en) * | 2010-11-30 | 2015-01-13 | Google Inc. | Event management for hosted applications |
US9189753B2 (en) * | 2011-10-24 | 2015-11-17 | Blackberry Limited | Multiplatform management system and method for mobile devices |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8726294B2 (en) | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
US20080155103A1 (en) * | 2006-12-21 | 2008-06-26 | Kimberly Tekavec Bailey | AF UNIX Socket Across Systems in the Same Computer on Computer Systems that Support Multiple Operating System Images |
US8160247B2 (en) * | 2007-09-27 | 2012-04-17 | Adobe Systems Incorporated | Providing local storage service to applications that run in an application execution environment |
US8407605B2 (en) * | 2009-04-03 | 2013-03-26 | Social Communications Company | Application sharing |
KR101506683B1 (en) | 2008-08-06 | 2015-03-30 | 삼성전자 주식회사 | Apparatus and method for supporting multiple operating systems |
US9465633B2 (en) | 2011-08-05 | 2016-10-11 | Vmware, Inc. | Displaying applications of a virtual mobile device in a user interface of a mobile device |
CN102541624A (en) * | 2011-12-29 | 2012-07-04 | 国云科技股份有限公司 | Virtual desktop fusion method between desktop virtualized customer side and virtual desktop |
CN103309722A (en) * | 2012-03-14 | 2013-09-18 | 北京三星通信技术研究有限公司 | Cloud computation system and application access method thereof |
-
2014
- 2014-05-29 US US14/290,114 patent/US9467329B2/en active Active
-
2015
- 2015-05-28 CA CA2893097A patent/CA2893097C/en active Active
- 2015-05-29 EP EP15169926.1A patent/EP2963544B1/en active Active
- 2015-05-29 CN CN201510288926.XA patent/CN105183495B/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883098B1 (en) * | 2000-09-20 | 2005-04-19 | International Business Machines Corporation | Method and computer system for controlling access by applications to this and other computer systems |
US20050055578A1 (en) * | 2003-02-28 | 2005-03-10 | Michael Wright | Administration of protection of data accessible by a mobile device |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US8935392B2 (en) * | 2010-11-30 | 2015-01-13 | Google Inc. | Event management for hosted applications |
US20140033271A1 (en) * | 2011-10-11 | 2014-01-30 | Citrix Systems, Inc. | Policy-Based Application Management |
US20140053234A1 (en) * | 2011-10-11 | 2014-02-20 | Citrix Systems, Inc. | Policy-Based Application Management |
US9189753B2 (en) * | 2011-10-24 | 2015-11-17 | Blackberry Limited | Multiplatform management system and method for mobile devices |
US20130298201A1 (en) * | 2012-05-05 | 2013-11-07 | Citrix Systems, Inc. | Systems and methods for network filtering in vpn |
US8650303B1 (en) * | 2013-03-29 | 2014-02-11 | Citrix Systems, Inc. | Data management for an application with multiple operation modes |
US8849979B1 (en) * | 2013-03-29 | 2014-09-30 | Citrix Systems, Inc. | Providing mobile device management functionalities |
US20140297839A1 (en) * | 2013-03-29 | 2014-10-02 | Citrix Systems, Inc. | Providing mobile device management functionalities |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10402007B2 (en) | 2014-06-12 | 2019-09-03 | Apple Inc. | Systems and methods for activating a multi-tasking mode using an application selector that is displayed in response to a swipe gesture on an electronic device with a touch-sensitive display |
US11592923B2 (en) | 2014-06-12 | 2023-02-28 | Apple Inc. | Systems and methods for resizing applications in a multitasking view on an electronic device with a touch-sensitive display |
US20180032228A1 (en) * | 2014-06-12 | 2018-02-01 | Apple Inc. | Systems and Methods for Efficiently Navigating Between Applications with Linked Content on an Electronic Device with a Touch-Sensitive Display |
US10795490B2 (en) | 2014-06-12 | 2020-10-06 | Apple Inc. | Systems and methods for presenting and interacting with a picture-in-picture representation of video content on an electronic device with a touch-sensitive display |
US10732820B2 (en) * | 2014-06-12 | 2020-08-04 | Apple Inc. | Systems and methods for efficiently navigating between applications with linked content on an electronic device with a touch-sensitive display |
US20160034165A1 (en) * | 2014-07-30 | 2016-02-04 | Samsung Electronics Co., Ltd. | Activity processing method and electronic device supporting the same |
US20180074666A1 (en) * | 2014-09-02 | 2018-03-15 | Microsoft Technology Licensing, Llc | Semantic card view |
US10275122B2 (en) * | 2014-09-02 | 2019-04-30 | Microsoft Technology Licensing, Llc | Semantic card view |
US20170262296A1 (en) * | 2016-03-11 | 2017-09-14 | Samsung Electronics Co., Ltd. | Electronic apparatus and controlling method thereof |
US10824488B2 (en) * | 2016-12-22 | 2020-11-03 | Cloudminds (Shenzhen) Robotics Systems Co., Ltd. | Device detection method and system, electronic device, cloud robot system, and computer program product |
CN108255683A (en) * | 2016-12-29 | 2018-07-06 | 杭州华为数字技术有限公司 | The method and terminal of message notifying in terminal |
US11023296B2 (en) * | 2016-12-29 | 2021-06-01 | Huawei Technologies Co., Ltd. | Method for managing multiple operating systems in a terminal |
US11579946B2 (en) | 2016-12-29 | 2023-02-14 | Huawei Technologies Co., Ltd. | Method for managing multiple operating systems in a terminal |
US11966578B2 (en) | 2018-06-03 | 2024-04-23 | Apple Inc. | Devices and methods for integrating video with user interface navigation |
Also Published As
Publication number | Publication date |
---|---|
EP2963544B1 (en) | 2020-07-08 |
EP2963544A1 (en) | 2016-01-06 |
CN105183495B (en) | 2018-06-29 |
CN105183495A (en) | 2015-12-23 |
CA2893097A1 (en) | 2015-11-29 |
US9467329B2 (en) | 2016-10-11 |
CA2893097C (en) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2893097C (en) | Coordinating activity views across operating system domains | |
US11803451B2 (en) | Application exception recovery | |
US11797249B2 (en) | Method and apparatus for providing lock-screen | |
KR102317167B1 (en) | Duplicate Tracking System | |
US10983747B2 (en) | Remote desktop mirroring | |
AU2014398075B2 (en) | Method and apparatus for displaying application interface, and electronic device | |
CN108713183B (en) | Method and electronic device for managing operation of application | |
US9654428B2 (en) | Systems and methods for supporting social productivity using a history buffer | |
JP5268945B2 (en) | How to manage the user interface display | |
RU2599541C2 (en) | Extendible systemic action for implementation of shared use while remaining in current context in background mode | |
US8117555B2 (en) | Cooperating widgets | |
US20240111473A1 (en) | Distributed display method and terminal for application interface | |
US10511674B2 (en) | Gesture based switching of virtual desktop clients | |
US20210097208A1 (en) | Privacy Safeguards for Projecting Content onto a Shared Display Device | |
US20130139113A1 (en) | Quick action for performing frequent tasks on a mobile device | |
US20240086231A1 (en) | Task migration system and method | |
US8689243B2 (en) | Web service API for unified contact store | |
US20180196584A1 (en) | Execution of multiple applications on a device | |
US20160205183A1 (en) | Method and aparatus for backing up data and electronic device | |
WO2018125650A1 (en) | Providing insertion feature with clipboard manager application | |
US20200192539A1 (en) | System and method for operating system event redirection | |
JP2017532650A (en) | Actionable item switcher view | |
US20240028756A1 (en) | Data access method and apparatus, and electronic device | |
CN117608428A (en) | Method, device, equipment and storage medium for page interaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: 2236008 ONTARIO INC., ONTARIO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MAJOR, DANIEL JONAS;GOODMAN, KEVIN DENNIS;NAGARAJAN, SIVAKUMAR;REEL/FRAME:033810/0573 Effective date: 20140828 Owner name: BLACKBERRY LIMITED, ONTARIO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SINGH, RAVI;REEL/FRAME:033810/0616 Effective date: 20140904 |
|
AS | Assignment |
Owner name: 2236008 ONTARIO LIMITED, ONTARIO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QNX SOFTWARE SYSTEMS LIMITED;REEL/FRAME:035700/0845 Effective date: 20150520 |
|
AS | Assignment |
Owner name: 2236008 ONTARIO INC., ONTARIO Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE CORPORATE IDENTIFIER INADVERTENTLY LISTED ON THE ASSIGNMENT AND COVERSHEET AS "LIMITED" PREVIOUSLY RECORDED ON REEL 035700 FRAME 0845. ASSIGNOR(S) HEREBY CONFIRMS THE IDENTIFIER SHOULD HAVE STATED "INC.";ASSIGNOR:QNX SOFTWARE SYSTEMS LIMITED;REEL/FRAME:035785/0156 Effective date: 20150527 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: BLACKBERRY LIMITED, ONTARIO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:2236008 ONTARIO INC.;REEL/FRAME:053313/0315 Effective date: 20200221 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |