CN107810489A - 应用与设备之间的无缝转换 - Google Patents

应用与设备之间的无缝转换 Download PDF

Info

Publication number
CN107810489A
CN107810489A CN201680035477.0A CN201680035477A CN107810489A CN 107810489 A CN107810489 A CN 107810489A CN 201680035477 A CN201680035477 A CN 201680035477A CN 107810489 A CN107810489 A CN 107810489A
Authority
CN
China
Prior art keywords
calling
context
context data
movable
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680035477.0A
Other languages
English (en)
Other versions
CN107810489B (zh
Inventor
C·L·马林斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107810489A publication Critical patent/CN107810489A/zh
Application granted granted Critical
Publication of CN107810489B publication Critical patent/CN107810489B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

在本文中描述了用于在应用与设备之间进行无缝转换的技术。基于网络的或本地的上下文服务提供用于存储和取回上下文数据的功能。上下文服务可以暴露用于创建唯一活动标识符(“ID”)的创建活动方法。活动ID与诸如在计算设备上执行应用的活动相关联。由上下文服务暴露的接口还可以暴露用于存储上下文数据的方法,所述上下文数据例如可以用于将应用返回其转换前的状态的数据。由上下文服务暴露的接口还可以暴露用于获得上下文数据的方法。上下文服务还可以暴露用于完成活动的方法。还可以向其他服务暴露上下文数据,所述其他服务例如分析上下文数据以向用户提供推荐或其他类型的信息的商业智能网络服务。

Description

应用与设备之间的无缝转换
背景技术
诸如智能电话和平板计算设备之类的移动设备的用户频繁地在不同的全屏应用之间切换以执行不同的任务。例如而不限制,移动设备用户可以利用全屏通信应用来与另一用户或多个用户进行文本或视频对话消息传送。接着,相同的用户可以转换到第二全屏应用以便获得信息,这样的信息关于与对话相关的餐厅或另一类型的活动。
在使用第二应用之后,用户可以返回消息传送应用以便与另外的用户或多个用户分享关于该餐厅或其他类型的活动的信息。然而,当用户返回消息传送应用时,有可能不将该用户返回到其在被转换到第二应用之前在消息传送应用中所处的位置。对于用户而言,这可能会令人困惑并且有时令人混淆。
为了与其他用户或多个用户分享通过使用第二应用所获得的数据,第一用户通常也会需要使用复制/粘帖机制。在某些移动设备上,使用这样的复制/粘帖机制所需的手势或所需的击键对于用户而言可能不完全是凭直觉的。因此,用户可能不理解如何使用复制/粘帖机制来与其他用户或多个用户来分享信息,这也可能导致沮丧。
针对这些和其他考虑呈现了在本文中进行的公开。
发明内容
在本文中描述了用于提供在应用与设备之间进行无缝转换的技术。通过实现本文中所公开的技术,可以在相同或不同计算设备上执行的应用之间存储和共享描述应用当前状态的上下文数据。例如,在上文给出的示例中,第一个应用(即,消息传送应用)可以存储描述其当前状态的方面的上下文数据。第一个应用还可以存储用于由其他应用使用的其他类型的数据。
当进行从第一个应用到第二应用的转换时,第二应用可以获得先前由第一个应用存储的上下文数据。接着,第二应用可以执行利用该上下文数据执行操作,并且潜在地利用描述所执行的操作的文字记录(transcript)来更新上下文数据。当控制随后返回到第一个应用时,可以利用上下文数据将第一个应用返回到其被转换到第二应用时所处的状态。例如而不限制,由第一个应用所提供的用户界面(“UI”)可以返回到其被转换到第二应用之前的所处的状态。由第二应用所发布的文字记录还可以以其他方式由第一个应用显示或利用。
为了提供在上文中所描述的功能,在一些配置中提供了上下文服务。上下文服务可以被实现为基于网络的上下文服务,以使能在相同或不同的联网计算设备上执行的应用之间能够进行无缝转换。上下文服务还可以被实现为本地上下文服务,以使能在相同的计算设备上执行的应用之间能够实现无缝转换,所述计算设备可以不连接至网络。
上下文服务在一些实现中被配置为暴露用于访问其功能的外部接口。例如而不限制,当上下文服务被实现为基于网络的上下文服务时,上下文服务可以被配置为暴露用于访问其功能的网络服务应用程序接口(“API”)。当上下文服务被实现为本地服务时,上下文服务可以被配置为暴露用于由在相同设备上执行的应用使用的本地API。在其他配置中,可以暴露其他类型的接口。
由上下文服务暴露的接口可以包括各种方法。例如而不限制,接口可以暴露用于创建唯一活动标识符(“ID”)的创建活动方法。活动ID与活动相关联,例如执行移动设备上的应用。如果进行转换至另一个应用,则还可以创建针对该应用的唯一活动ID,以及能够被跟踪以实现活动图的关联记录。可以生成并保存定义活动与活动ID之间的关系的活动图。例如,当进行从第一个应用到第二应用的转换时,可以将第一个应用认为是第二应用的父活动。活动图可以定义描述第一个应用与第二应用之间的关系的堆栈。
由上下文服务暴露的接口还可以暴露用于存储上下文数据的方法。例如,应用可以调用该方法以便存储描述它们的当前状态的方面的上下文数据。例如而不限制,应用可以存储深度超链接,该深度超链接可以用于将由该应用所提供的UI返回到在控制从该应用被转换离开时其所处的状态。该方法还可以用于存储描述用于由其他应用以其他方式消费和使用的活动的其他类型的上下文数据。
由上下文服务暴露的接口还可以暴露用于获得先前存储的上下文数据的方法。例如,当进行从第一个应用到第二应用的转换时,第二应用可以调用这样的方法以便获得由第一个应用所发布的上下文数据。接着,第二应用可以以各种方式来利用上下文数据。第二应用还可以利用用于存储上下文的方法以便存储其操作的文字记录。当控制被返回到第一个应用时,第一个应用可以取回并利用上下文数据以便将第一个应用返回到其转换前的状态和/或出于其他目的。
在一些配置中,上下文服务还可以暴露用于完成活动的方法。对这样的方法的调用将删除与指定的活动ID相关联的任何存储的上下文数据并且将该活动ID从在上文中所描述的活动图中移除。该上下文服务还可以被配置为将上下文数据暴露至其他服务,例如分析上下文数据以向用户提供推荐或其他类型的信息的商业智能网络服务。也可以在其他配置中以其他方式利用上下文数据。
应当理解的是,在上文中所描述的各种方法仅仅是说明性的,并且上下文服务可以在其他的配置中暴露其他或额外的方法。还应当理解的是,在上文中所描述的主题还可以被实现为计算机控制的装置、计算机进程、计算系统、或者诸如计算机可读介质之类的制品。这些及各种其他的特征将从阅读以下具体实施方式以及审阅相关联的附图而显而易见。
提供该发明内容以用在下文的具体实施方式中进一步描述的简化的形式引入概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在使用该发明内容来限制所请求保护的主题的范围。此外,所要求保护的主题不限于解决在该公开的任何部分中记载的任何或所有缺点的实现。
附图说明
图1A是示出了在本文中所公开的实现中所使用的基于网络的上下文服务的操作的方面的计算机系统架构图;
图1B是示出了在本文中所公开的实现中所使用的本地上下文服务的操作的方面的计算机系统架构;
图2是示出了由在本文中所公开的一个实现中的上下文服务暴露的创建活动方法的操作的方面的流程图;
图3是示出了由在本文中所公开的一个实现中的上下文服务暴露的存储上下文方法的操作的方面的流程图;
图4是示出了由在本文中所公开的一个实现中的上下文服务暴露的获得活动上下文方法的操作的方面的流程图;
图5是示出了由在本文中所公开的一个实现中的上下文服务暴露的完成活动方法的操作的方面的流程图;
图6是示出了根据在本文中所公开的一个特定实现的使用上下文服务以提供应用之间的无缝转换的方面的时序图;
图7是示出了针对能够实现在本文中所呈现的技术的方面的计算系统的说明性计算机硬件和软件架构的计算机架构图;
图8是示出了能够实现在本文中所呈现的技术的方面的分布式计算环境的图;以及
图9是示出了能够实现在本文中所呈现的技术的方面的计算设备架构的计算机架构图。
具体实施方式
以下的详细描述针对用于在应用与设备之间进行无缝转换的技术。通过在本文中所公开的技术的实现,可以将应用返回到其在被转换到另一个应用之前所处的状态。当在转换到另一个应用之后控制被返回时,使用该机制可以消除有时在将应用返回至不同的状态时导致的混淆。额外地,应用可以共享并且利用能够向用户和/或以其他方式呈现的上下文数据。以该方式使用上下文数据可以将用户从不得不利用在上文中所描述的有时复杂的复制/粘贴机制中解放出来,并且使得应用能够以超越通常的复制/粘贴机制所允许的之外的方式来交互操作。除了在上文中所描述的之外,在本文中所公开的技术的实现还可以提供其他技术益处,例如但不限于,改进的电池寿命、降低的存储器使用等。
尽管结合在计算机系统上执行操作系统和应用程序执行的程序模块的一般上下文中呈现了在本文中所描述的主题,但是,本领域技术人员将认识到可以结合其他类型的程序模块来执行其他实现。通常而言,程序模块包括例程、程序、组件、数据结构、以及执行特定的任务或实现特定的抽象数据类型的其他类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实践在本文中所描述的主题,所述其他计算机系统配置包括手持设备、多处理器系统、基于微处理器的或可编程的消费性电子产品、小型计算机、大型计算机等。
在以下的详细描述中,对形成了其一部分并且作为说明示出了具体的实施例或示例的附图进行参考。现在对附图进行参考,其中,在几幅图通篇中相同的附图标记表示相同的元件,将描述用于提供在应用与设备之间进行无缝转换的各种技术的方面。特别地,图1A是示出了在本文中所公开的实现中利用的、用于提供应用与设备之间的无缝转换的基于网络的上下文服务110A的操作的方面的计算机系统架构图。
如在图1A中所示出的,基于网络的上下文服务110A在一个特定的实现中是在分布式计算环境104中执行的。分布式计算环境104包括在网络上操作、与网络进行通信、或者作为网络的一部分的计算环境。诸如计算设备102之类的一个或多个计算设备可以经由诸如互联网之类的网络106与分布式计算环境108进行通信。
计算设备102可以是膝上型计算机、台式计算机、“板式”或平板计算设备、智能电话、或者其他移动计算设备、或者几乎任何其他类型的计算设备。应当理解的是,尽管在图1A中示出了单个计算设备102,但更大数量的计算设备102可以与计算环境104进行通信以便利用由基于网络的上下文服务110A所提供的功能。将参考图8在下文中提供关于分布式计算环境104的配置和使用的额外的细节。
同样如在图1A中所示出的,计算设备102被配置为执行应用108A和108B(它们可以在本文中被单独称为“应用108”或统称为“所述应用108”)。在一些配置中,计算设备102将在前景中执行的应用108呈现为全屏应用。例如,当应用108A在前景中执行时,由应用108A呈现的UI将消耗计算设备102的整个显示器(在图1A中未示出)。当控制被转换至应用108B以使得在前景中执行应用108B时,由应用108B所呈现的UI将消耗计算设备102的整个显示器。
就这一点而言,应当理解的是,尽管在本文中所呈现的配置主要在使用整个显示器屏幕运行的应用108的上下文中描述的,但是在本文中所公开的技术不限于这样的环境。相反,在本文中所呈现的配置可以在其他的执行环境中被利用,其中应用108利用UI窗口、分区屏幕、或者用于共享屏幕显示器的可用区域的其他UI机制。还应当理解的是,尽管在图1A中示出了单个计算设备102,但是在图1A中示出的配置还可以以类似的方式被利用以分享在不同的联网计算设备102上执行的应用108之间的上下文数据132。
如在上文中简要讨论的,通过实现在本文中所公开的技术,描述应用(例如,应用108A)当前状态的上下文数据132可以在相同或不同的计算设备102上执行的应用108之间存储和共享。例如,在图1A中所示出的示例中,第一个应用108A可以利用基于网络的上下文服务110A来存储描述其当前状态的方面的上下文数据132。第一个应用108A还可以存储其他类型的上下文数据132,以用于由诸如应用108B之类的其他应用使用。
当进行从第一个应用108A到第二应用108B的转换(例如,第二应用108B开始在前景中执行)时,第二应用108B可以从基于网络的上下文服务110A获得先前由第一个应用108A所存储的上下文数据132。接着,第二应用108B可以利用上下文数据132来执行操作,并且潜在地利用基于网络的上下文服务110A以用描述其执行的操作的额外的数据(在本文中其可以被称为“文字记录”)来更新上下文数据132。
当控制随后从第二应用108B被返回至第一个应用108A时,上下文数据132可以从基于网络的上下文服务110A获得并且被利用以将第一个应用108A返回到其被转换到第二应用108B时所处的状态。例如但不限制,由第一个应用108A所提供的UI可以被返回到其刚要转换到第二应用108B之前所处的状态。由第二应用108B所发布的文字记录还可以由第一个应用108A以其他方式显示或利用。
为了向联网的计算设备102提供在上文中所描述的功能,上下文服务110可以被实现为基于网络的上下文服务110A,以使能在相同或不同的联网计算设备108上执行的应用108之间进行无缝转换。由上下文服务110所提供的功能还可以被实现为本地上下文服务110B(在图1B中示出以及在下文描述的),本地上下文服务110B在计算设备102上本地执行以使能在相同的计算设备102上执行的应用108之间进行无缝转换,计算设备102可以不连接至网络106。下文将针对图1B提供关于本地上下文服务110B的配置和操作的额外的细节。下文描述的基于网络的上下文服务110A和本地上下文服务可以被单独地或统称为“上下文服务110”。
在一些实现中,在本文中所呈现的上下文服务110被配置为暴露用于访问其功能的外部接口122。例如而不限制,当上下文服务110被实现为基于网络的上下文服务110A时,上下文服务110可以被配置为暴露用于访问其功能的网络服务API。当上下文服务110被实现为如下文描述的本地执行的服务(即,在与使用其方法的应用108相同的计算设备102上执行)时,上下文服务110可以被配置为暴露本地API以用于由在相同计算设备102上执行的应用108使用。在其他配置中可以暴露其他类型的接口。
由上下文服务110暴露的接口122可以包括各种方法124。例如而不限制,接口122可以暴露用于创建唯一活动ID 128的创建活动方法124A。对创建活动方法124A的调用(例如,在图1A中所示出的创建活动请求126)创建新的唯一活动ID 128,并且将该活动ID 128与活动相关联,例如在计算设备102上执行应用108A。响应于对创建活动ID方法124A的调用,可以将新的活动ID 128返回至调用应用108。
在一些配置中,可以利用对创建活动方法124A的调用来供应活动ID 128。如果利用对创建活动方法124A的调用而供应了活动128,则可以在下文描述的活动图114中创建“转移”记录。转移记录指示控制已经从一个应用108转移至另一个应用。例如而不限制,当控制将要被转交至另一个应用108B时,一个应用108A可以利用其自己的活动ID 128来调用创建活动方法124A。响应于其,基于网络的上下文服务110A可以创建针对子活动(即应用108B)的新的活动ID 128,并且响应于该调用而返回该新的活动ID 128。基于网络的上下文服务110A还可以在下文描述的活动图114中将父活动(即,应用108A的执行)与子活动(即,应用108B的执行)相关联。以该方式,如果进行到诸如应用108B之类的另一个应用的转换,可以将唯一活动ID 128与应用108B相关联,并且应用之间的父/子关系可以反映在下文描述的活动图114中。在下文中将针对图2来提供关于创建活动方法124A的操作的额外的细节。
如在上文中简要描述的,上下文服务110还可以创建和维护定义活动与活动ID128之间的父/子关系的活动图114。例如,且如上文所描述的,当进行从第一个应用108A到第二应用108B的转换时,第一个应用108A可以被认为是第二应用108B的父活动。以该方式,活动图114可以维护定义第一个应用108A与第二应用108B之间的父/子关系的数据。在一个特定的实现中,活动图114被实现为有向有环图。还可以利用其他的实现。
由上下文服务110所暴露的接口122还可以暴露用于存储上下文数据132的存储上下文方法124B。诸如应用108A之类的应用可以生成对该方法124B的调用(在图1A中被示出为存储上下文请求130),例如,以便存储描述其当前状态的方面的上下文数据132。例如而不限制,应用108A可以存储深度超链接或者可以利用另一类型的数据以将由应用108A所提供的UI返回到当控制从应用108A转换离开到诸如应用108B之类的另一个应用时其所处的状态。
存储上下文方法124B还可以用于存储其他类型的上下文数据132,以由其他应用108以其他方式消耗和使用。例如而不限制,存储上下文方法124B可以用于存储上下文数据132,其包括用于由另一个应用108消耗和/或修改的任意XML或JSON。其他数据格式的数据也可以以类似的方式来存储。下文将针对图3来提供关于存储上下文方法124B的操作的额外的细节。
由上下文服务110所暴露的接口122还可以暴露用于获得先前存储的上下文数据132的活动方法124C。例如,当进行从第一个应用108A到第二应用108B的转换时,第二应用108B可以生成对获得活动方法124C的调用(在图1A中被描绘为获得活动请求134),以便获得先前由第一个应用108A所存储的上下文数据132。对获得活动方法124C的调用指定针对其上下文数据132要被返回的活动的活动ID 128。
响应于对方法124C的调用,上下文服务110返回与所指定的活动ID 128关联的先前存储的上下文数据132。接着,第二应用108B可以以各种方式来利用上下文数据132。第二应用108B还可以利用在上文中所描述的存储上下文方法124B,以便存储其操作和/或其他类型的数据的文字记录。
当控制被返回至第一个应用108A时,第一个应用108A还可以利用获得活动方法124C来取回或利用先前存储的上下文数据132。接着,可以利用上下文数据132以便将第一个应用108A返回到其转换前的状态和/或出于其他的目的。例如而不限制,可以使用先前由应用108A所存储的深度超链接以在控制从应用108B返回之后,将应用108A返回到其转换前的状态。下文将针对图4来提供关于获得活动方法124C的操作的额外的细节。
在一些配置中,上下文服务还可以暴露用于完成活动的完成活动方法124D。对这样的方法的调用(在图1A中被示出为完成活动请求136)将导致上下文服务110删除与指定的活动ID 128相关联的所存储的任何上下文数据132并且将该活动ID 128从在上文中所描述的活动图114移除。下文将针对图5来提供关于完成活动方法124D的操作的额外的细节。
在一些配置中,上下文服务110还被配置为向诸如像推荐服务118一样的商业智能服务120之类的其他服务暴露上下文数据132,其中推荐服务118分析上下文数据132以向利用上下文服务110的计算设备102的用户提供推荐或其他类型的信息。在其他配置中,上下文服务110可以向其他服务暴露上下文数据132。
应当理解的是,在上文中所描述的各种方法124仅仅是说明性的并且在其他配置中上下文服务110可以暴露其他或额外的方法124。将在下文中针对图2-5提供方法124的配置、操作、和使用的额外的方面。将在下文中针对图6描述时序图,该时序图示出了用于对在一个特定的使用场景中提供应用108A与108B之间的无缝转换的上下文服务110的使用的方面。
图1B是示出了在计算设备102上本地地执行的上下文服务110的操作的方面的计算机系统架构图。如在图1B中所示出的以及在上文中简要描述的,在一个特定的配置中可以给在本文中所描述的功能的方面提供本地上下文服务110B。如在上文中简要讨论的,本地上下文服务110B在与利用其提供的功能的应用108相同的计算设备102上执行。应用108不需要网络连接来调用由本地上下文服务110B通过接口122暴露的方法124。就这一点而言,应当理解的是,在图1B中所示出的配置中,接口122可以被实现为本地可访问的API。还可以使用与本地API不同的机制,以便使得应用108能够调用由本地地执行的上下文服务110B所暴露的方法124。
与上下文服务110B的本地执行不同,在图1B中所示出的配置以与在图1A中所示出和在上文中所描述的配置相同的方式来操作。例如而不限制,在计算设备102上执行的应用108A可以利用由本地上下文服务110B所暴露的方法124A以获得活动ID 128,利用方法124B来存储上下文数据132,并且利用方法124C来获得上下文数据132。类似地,应用108B可以利用方法124B来获得先前由应用108A存储的上下文数据132,甚至当网络连接对计算设备102不可用时。还可以以类似的方式来利用由本地上下文服务110B所暴露的其他方法124。在下文中针对图2-5提供了关于方法124的操作的额外的细节。
应当理解的是,尽管在图1A和1B中所示出的配置仅示出了单个应用108B通过上下文服务110A和110B从应用108A获得上下文数据132,但是可以利用其他配置,其中,上下文数据132从诸如应用108A之类的一个应用108被共享至多个其他应用108。例如,使用在上文中针对图1A和1B所描述的相同的机制,应用108A可以与多个其他应用108共享上下文数据132。类似地,应用108B或者多个其他应用还可以与其他应用108共享上下文数据132。就这一点而言,应当理解的是,尽管为了便于示出和描述已经在图1A和1B中示出了仅仅两个应用108,但是可以与许多这样的应用108一起利用在本文中所描述的配置。因此,对本领域技术人员而言,其他的配置将是显而易见的。
图2是示出了例程200的流程图,例程200示出了在本文中所公开的一个实现中由上下文服务110所暴露的创建活动方法124A的操作的方面。应当理解的是,在本文中针对图2和其他图描述的逻辑操作可以被实现为(1)在计算系统上运行的一系列的计算机实现的动作或程序模块和/或(2)在计算系统内相互连接的机器逻辑电路或电路模块。所述实现是取决于计算系统的性能和其他要求的选择问题。由此,在本文中所描述的逻辑操作不同地被称为状态操作、结构设备、动作、或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑、和任何其组合来实现。还应当理解的是,可以执行比在附图中所示出的和在本文中所描述的更多或更少的操作。还可以以与在本文中所描述的顺序不同的顺序来执行这些操作。
例程200在操作202处开始,其中,上下文服务110(即,基于网络的上下文服务110A或本地上下文服务110B)接收对用于创建唯一活动ID 128的创建活动方法124A的调用。响应于这样的调用,例程200从操作202继续至操作204,其中上下文服务110创建新的唯一活动ID 128。唯一的ID 128可以是全局唯一的标识符(“GUID”)或者唯一地标识活动的其他类型的数据。
从操作204,例程200继续至操作206,其中上下文服务110确定对创建活动方法124A的调用是否包括活动ID 128。如果所述调用不包括活动ID 128,则例程200从操作206继续至操作208,其中响应于对创建活动方法124A的调用,上下文服务110在操作204处返回新的活动ID 128。接着,例程200从操作208继续至操作210,该例程在操作210处结束。
如果在操作206处,上下文服务110确定对创建活动方法124A的调用包括活动ID128,则例程从操作206继续至操作212。如在上文中所讨论的,如果利用对创建活动方法124A的调用而供应了活动128,则可以在活动图114中创建“转移”记录。转移记录指示控制已经从一个应用108转移至另一个应用。因此,上下文服务110在操作212处确定所传递的活动ID 128是否与活动图114中的现有活动ID 128匹配。如果所传递的活动ID 128与现有ID128不匹配,则例程200从操作212继续至操作216,其中下文服务110可以响应于对创建活动方法124A的调用而返回错误。
然而,如果上下文服务110在操作212处确定所传递的活动ID 128与现有的活动ID128匹配,则例程200从操作212继续至操作214。在操作214处,上下文服务110更新活动图132以反映在操作204处生成的新的活动ID 128是利用对创建活动方法124A的调用供应的现有活动ID 128的子。接着,响应于在操作208处对创建活动方法124A的调用而返回在操作204处创建的新的活动ID 128。以该方式,如果进行从一个应用到另一个应用的转换,则在生成新的唯一ID 128的同时,可以在活动图114中反映应用之间的父/子关系。例程200从操作208继续至操作210,该例程在操作210处结束。
图3是例程300的流程图,其示出了在本文中所公开的一个实现中由上下文服务110所暴露的存储上下文方法124B的操作的方面。例程300在操作302处开始,其中上下文服务110(即,基于网络的上下文服务110A或本地上下文服务110B)接收对用于存储上下文数据132的存储上下文方法124B的调用。响应于这样的调用,例程300从操作302继续至操作304,在操作304中,上下文服务110确定利用对存储上下文方法124B的调用接收的活动ID128是否与活动图114中的现有活动ID匹配。如果所接收的活动ID 128与现有的活动ID 128不匹配,则例程300从操作304继续至操作306,在操作306中,响应于对存储上下文方法124B的调用,可以返回错误。接着,例程300继续至操作312,该例程在操作312处结束。
如果在操作304处,上下文服务110确定所接收的活动ID 128与现有活动ID 128不匹配,则例程300从操作304继续至操作308。在操作308处,上下文服务110存储与所接收的活动ID 128相关联地接收的上下文数据132。上下文数据132可以被存储在活动图114中或者在数据存储116中的另一位置中。接着,在操作310处,响应于对存储上下文方法124B的调用,可以返回成功指示。例程300接着从操作310继续至操作312,该例程在操作312处结束。
图4是示出了例程400的流程图,例程400示出了在本文中所公开的一个实现中由上下文服务110所暴露的获取活动上下文124C的操作的方面。例程400在操作402处开始,其中上下文服务110(即,基于网络的上下文服务110A或本地上下文服务110B)接收对获取活动上下文方法124C的调用,以用于获得与活动ID 128相关联的上下文数据132。响应于这样的调用,例程400从操作402继续至操作404,在操作404处,上下文服务确定利用对获取活动上下文方法124C的调用所接收的活动ID 128是否与活动图114中的现有活动ID匹配。如果所接收的活动ID 128与现有的活动ID 128不匹配,则例程400从操作404继续至操作406,在操作406处,响应于对获取活动上下文方法124C的调用,可以返回错误。接着,例程400继续至操作412,该例程在操作412处终止。
在操作404处,如果上下文服务110确定所接收的活动ID 128与现有的活动ID 128匹配,则例程400从操作404继续至操作408。在操作408处,上下文服务110取回在与所接收的活动ID 128相关联的数据存储116中存储的上下文数据132。接着,在操作410处,响应于对获取活动上下文方法124C的调用而返回上下文数据132。例程400接着从操作410继续至操作412,该例程在操作412处结束。
图5是例程500的流程图,例程500示出了在本文中所公开的一个实现中由上下文服务110所暴露的完成活动方法124D的操作的方面。例程500在操作502处开始,其中上下文服务110(即,基于网络的上下文服务110A或本地上下文服务110B)接收对完成活动方法124D的调用,以用于完成活动。响应于这样的调用,例程500从操作502继续至操作504,在操作504中,上下文服务110确定利用对完成活动方法124D的调用所接收的活动ID 128是否与活动图114中的现有活动ID匹配。如果所接收的活动ID 128与现有的活动ID 128不匹配,则例程500从操作504继续至操作506,在操作504中,响应于对完成活动方法124D的调用,可以返回错误。接着,例程500继续至操作514,该例程在操作514处结束。
如果在操作504处,上下文服务110确定所接收的活动ID 128与现有的活动ID 128匹配,则例程500从操作504继续至操作508。在操作508处,上下文服务110将与所传递的活动ID 128相关联的上下文数据132从数据存储106中删除。接着,例程500从操作508继续至操作510,在操作510处,上下文服务110将所传递的活动ID 128从活动图114移除,由此摧毁了由所传递的活动ID 128及其父(如果存在)所表示的活动之间的父/子关系。例程500从操作510继续至操作512,在操作512中响应于对完成活动方法124D的调用,可以返回成功指示以指示与被传递的活动ID 128相关联的上下文数据132被成功删除。接着,例程500从操作512继续至操作514,该例程在操作514处结束。
在一些配置中,可以以自动化的方式从活动图114移除不同活动之间的父/子关系。例如而不限制,如果在创建活动ID之后经过了指定的时间段,则可以将子活动ID 128从活动图114中自动地移除。还可以响应于在其他配置中的其他条件而以自动化的方式将活动从活动图114修剪掉。
图6是根据本文中所公开的一个特定实现的示出了利用上下文服务110来提供两个应用108A与108B之间的无缝转换的方面的时序图。在图6中示出的示例性场景中,在相同的计算设备102上或者在不同的计算设备102上执行两个应用108A和108B。如在下文中所描述的,应用108A和108B可以利用由上下文服务110所暴露的方法124来创建和交换上下文数据132。下文提供了关于该过程的额外的细节。
如在图6中所示出的,应用108A可以首先向由上下文服务110所暴露的方法124A发送创建活动请求126以创建新活动ID 128。响应于此,上下文服务110响应于对方法124A的调用而创建新的活动ID 128并且返回活动ID 128。在该示例中,新的活动ID 128与应用108A的执行相对应。
一旦应用108A具有新的活动ID 128,则应用108A可以向由上下文服务110所暴露的方法124B发送存储上下文请求130A。例如,应用108A可以利用方法124B来存储包括深度超链接的上下文数据132,所述深度超链接可以用于将应用108A返回到就要将控制转移到应用108B之前其所处的状态。如在上文中所讨论的,上下文数据132还可以存储其他类型的XML、JSON、或其他类型的数据以用于由应用108B使用。
在操作612A处,控制从应用108A被转移至应用108B。例如,应用108B可以在前景中开始执行并且利用计算设备102的整个显示器。在控制转移之后,应用108B可以向由上下文服务110所暴露的方法124C发送获取活动请求134A,以获得先前由应用108A所存储的上下文数据132。接着,应用108B可以以各种方式来利用上下文数据132,在上文中描述了其中的一些。
一旦应用108B已经完成了其操作,则应用108B可以向由上下文服务110所暴露的方法124B发送存储上下文请求130B,以利用其操作的文字记录来更新先前存储的上下文数据132。应用108B还可以向由上下文服务110所暴露的方法124D生成完成活动请求136,以便完成与应用108B的执行相关联的活动。
在操作612B处,将控制从应用108B转移回操作108A。在控制转移回应用108A之后,应用108A可以调用由上下文服务110所暴露的方法124C以获得上下文数据132。如在上文中所讨论的,上下文数据132可以包括深度超链接或者应用108A可以利用以将应用108A恢复到其在转换到应用108B之前的状态的其他信息。上下文数据132还可以包括由应用108B所执行的操作的文字记录。
由此,在操作602处,应用108A可以利用上下文数据132来将其状态(例如,其用户接口)恢复到就要将控制转换到应用108B之前其所处的状态。应用108A还可以显示或者以其他方式利用由应用108B发布到上下文数据132的文字记录。应用108A还可以以在本文中没有具体提及的其他方式来利用上下文数据。
图7是示出了计算机700的架构的计算机架构图,其中计算机700能够执行在本文中描述的软件组件以用于在应用与设备之间进行无缝转换。在图7中所示出的架构是针对服务器计算机、移动电话、电子阅读器、智能电话、台式计算机、上网本计算机、平板计算机、膝上型计算机、或者适合执行在本文中所呈现的软件组件的另一类型的计算设备的架构。就这一点而言,应当理解的是,在图7中所示出的计算机700可以用于实现能够执行在本文中所呈现的软件组件中的任何一个的计算设备。例如而不限制,计算机700可以用于实现能够执行应用108连同本地上下文服务110B一起的计算设备。计算机700还可以用于实现在分布式计算环境104中执行以执行基于网络的上下文服务110A的计算设备,例如服务器计算机。
图7中所示出的计算机700包括中央处理单元702(“CPU”)、包括随机存取存储器706(“RAM”)和只读存储器(“ROM”)708的系统存储器704、以及将存储器704耦合至CPU 702的系统总线710。在ROM 708中存储了帮助在计算机700内的元件之间转移信息的基本例程(例如,在启动期间)。计算机700还包括用于存储操作系统714和以及一个或多个程序的大容量存储设备712,所述一个或多个程序包括但不限于应用108、基于网络的上下文服务110A、或本地上下文服务110B。尽管在图7中没有示出,但大容量存储设备712还可以被配置为存储诸如上下文数据132之类的其他类型的程序和数据。
大容量存储设备712通过连接至总线710的大容量存储控制器(未示出)而连接至CPU 702。大容量存储设备712及其相关联的计算机可读介质为计算机700提供了非易失性存储。尽管在本文中所包含的对计算机可读介质的描述指的是诸如硬盘或CD-ROM驱动器之类的大容量设备,但本领域技术人员应当理解的是,计算机可读介质可以是能够由计算机700访问的任何可用的计算机存储介质或通信介质。
通信介质包括计算机可读指令、数据结构、程序模块、或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且包括任何传输介质。术语“调制数据信号”指的是使其特征中的一个或多个以便于在信号中编码信息的方式改变或设置的信号。作为示例而非限制,通信介质包括有线介质(例如,有线网络或直接有线连接)以及无线介质(例如,声学、射频(RF)、红外、和其他无线介质)。以上的任何的组合应该被包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以存储信息的任何方法和技术实现的易失性和非易失性、可移动、和不可以移动的介质,所述信息例如:计算机可读指令、数据结构、程序模块、或者其他数据。例如,计算机介质包括但不限于:RAM、ROM、EPROM、EEPROM、闪速存储器或其他固态存储器技术;CD-ROM、数字通用盘(“DVD”)、HD-DVD、BLU-RAY、或者其他光存储;盒式磁带、磁带、磁盘存储、或者其他磁存储设备;或者用于存储期望的信息并且能够由计算机700访问的任何其他介质。出于权利要求的目的,短语“计算机存储介质”及其变型不包括波或者信号本身或者通信介质。
根据各种配置,计算机700可以使用通过诸如网络718之类的网络到远程计算机的逻辑连接而在联网环境中操作。计算机700可以通过连接至总线710的网络接口单元720而连接至网络718。应当理解的是,网络接口单元720还可以用于连接至其他类型的网络和远程计算机系统。计算机700还可以包括用于接收并处理来自包括键盘、鼠标、或电子触摸笔(在图7中未示出)的多个其他设备的输入的输入/输出控制器716。类似地,输入/输出控制器716可以向显示屏幕、打印机、或其他类型的输出设备(同样在图7中未示出)提供输出。
应当理解的是,在本文中所描述的软件组件可以当被加载到CPU 702中并且被执行时将CPU 702和整个计算机700从通用计算系统转变成定制为促进实现在本文中所呈现的功能的专用计算系统。CPU 702可以由任何数量的晶体管或其他分立电路元件构成,所述晶体管或其他分立电路元件可以个体地或共同地假定任何数量的状态。更加具体地,响应于在本文中所公开的软件模块内包含的可执行指令,CPU 702可以用作有限状态机。这些计算机可执行指令通过指定CPU 702如何在不同状态之间转变来转换CPU 702,由此转换构成CPU 702的晶体管或其他分立硬件元件。
在本文中所呈现的软件模块编码也可以转换在本文中所呈现的计算机可读介质的物理结构。在本说明书的各种实现中,物理结构的具体转换取决于各种因素。这样的因素的示例包括但不限于用于实现计算机可读介质的技术,而无论计算机可读介质被表示为主存储还是副存储等。例如,如果计算机可读介质被实现为基于半导体的存储器,则在本文中所公开的软件可以通过转换半导体存储器的物理状态来在计算机可读介质上进行编码。例如,软件可以转变构成半导体存储器的晶体管、电容、或其他分立电路元件的状态。软件还可以转换这样的组件的物理状态以便将数据存储在其上。
作为另一示例,在本文中所公开的计算机可读介质可以使用磁或光学技术来实现。在这样的实现中,当将软件编码在其中时,在本文中所呈现的软件可以转换磁或光学介质的物理状态。这些转变可以包括改变给定的磁介质内的特定位置的磁特性。这些转换还可以包括改变给定的光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在不偏离本说明书的范围和精神的情况下,物理介质的其他转换是可能的,其中仅仅为了促进该讨论而提供了前述示例。
根据上文,应当理解的是,许多类型的物理转换在计算机700中发生以便存储和执行在本文中所呈现的软件组件。还应当理解的是,计算机700可以包括其他类型的计算设备,包括手持计算机、嵌入式计算机系统、诸如智能电话和平板计算机之类的移动设备、以及本领域技术人员公知的其他类型的计算设备。还可以预期的是,计算机700可以不包括在图7中所示出的所有组件、可以包括在图7中没有明确地示出的其他组件、或者可以利用与在图7中所示出的完全不同的架构。
图8示出了能够执行在本文中所描述的软件组件以提供应用与设备之间的无缝转换的说明性分布式计算环境104。因此,在图8中所示出的分布式计算环境104可以用于提供针对基于网络的上下文服务110A和/或在本文中描述的其他软件组件中的任何一个而在本文中所描述的功能。
根据各种实现,分布式计算环境104包括在网络804上操作、与网络804通信、或者作为网络804的一部分的计算环境802。一个或多个客户端设备806A-806N(在下文中统一和/或一般地称为“客户端806”)可以通过网络804和/或其他连接(在图8中未示出)来与计算环境802进行通信。在所示出的配置中,客户端806包括诸如膝上型计算机、台式计算机、或其他计算设备之类的计算设备806A;“板式”或平板计算设备(“平板计算设备”)806B;诸如移动电话、智能电话、或其他移动计算设备之类的移动计算设备806C;服务器计算机806D;和/或其他设备806N。应当理解的是,任何数量的客户端806可以与计算环境802通信。参考图7和9在本文中示出并描述了针对客户端806的两个示例计算架构。应当理解的是,所示出的客户端806和在本文中所示出和描述的计算架构是说明性的,并且不应该被解释为以任何方式受到限制。
在所示出的配置中,计算环境802包括应用服务器808、数据存储810、以及一个或多个网络接口812。根据各种实现,应用服务器808的功能可以由作为网络804的一部分执行的、或与网络804通信的一个或多个服务器计算机来提供。计算机服务器808可以托管诸如在本文中所描述的服务之类的各种服务、虚拟机、门户、和/或其他资源。在所示出的配置中,应用服务器808托管用于托管应用或其他功能的一个或多个虚拟机814。根据各种实现,虚拟机814托管一个或多个应用和/或软件模块,例如基于网络的上下文服务110A。应当理解的是,该配置是说明性的,且不应该被解释为以任何方式进行限制。应用服务器808还可以托管或提供对一个或多个网络门户、链接页面、网站、和/或其他信息(“网络门户”)816的访问。
根据各种实现,应用服务器808还包括一个或多个邮箱服务818和一个或多个消息传送服务820。邮箱服务818可以包括电子邮件(“email”)服务。邮箱服务818还可以包括各种个人信息管理(“PIM”)服务,包括但不限于日历服务、联系人管理服务、协作服务、和/或其他服务。消息传送服务820可以包括但不限于即时消息传送(“IM”)服务、聊天服务、论坛服务、和/或其他通信服务。
应用服务器808还可以包括一个或多个社交网络服务822。社交网络服务822可以包括各种社交网络服务,包括但不限于:用于共享和发布状态更新、即时消息、链接、照片、视频、和/或其他信息的服务;用于评论或显示对文章、产品、博客、或其他资源的兴趣的服务;和/或其他服务。在一些配置中,社交网络服务822由FACEBOOK社交网络服务、LINKEDIN职业网络服务、MYSPACE社交网络服务、FOURSQUARE地理网络服务、YAMMER办公室同事网络服务等提供或者包括这些服务。在其他配置中,社交网络服务822由其他服务、站点、和/或可以被称为“社交网络服务提供者”的提供者来提供。例如,在诸如阅读出版的文章、对商品或服务进行评论、出版、协作、游戏等之类的各种活动和/或上下文期间,一些网站允许用户经由电子邮件、聊天服务、和/或其他方式来彼此交互。其他的服务是可能的和预期的。
社交网络服务822还可以包括评论、发博客、和/或微博客服务。这样的服务的示例包括但不限于YELP评论服务、KUDZU评论服务、OFFICETALK企业微博克服务、TWITTER消息传送服务、GOOGLE BUZZ服务、和/或其他服务。应当理解的是,上文的服务列表不是穷举的,并且为了简单起见而在本文中未提及许多额外的和/或可替代的社交网络服务822。由此,在上文中所描述的配置是说明性的,并且不应该被解释为以任何方式受到限制。
如在图8中所示出的,应用服务器808还可以托管其他服务、应用、门户、和/或其他资源(“其他服务”)824。其他服务824可以包括但不限于基于网络的上下文服务110A、和/或在本文中所描述的软件组件中的任何软件组件。因此应当理解的是,计算环境802可以利用各种邮箱、消息传送、社交网络、生产力、和/或其他服务或资源来在本文中提供对在本文中所公开的用于在应用与设备之间进行无缝转换的概念和技术的整合。
如在上文中所提及的,计算环境802可以包括数据存储器810。根据各种实现,数据存储器的功能由在网络804上操作或者与网络804通信的一个或多个数据库提供。数据存储器810的功能还可以由被配置为托管针对计算环境802的数据的一个或多个服务器计算机来提供。数据存储器810可以包括、托管、或提供一个或多个真实的或虚拟的数据存储826A-826N(在下文被统一和/或一般地称为“数据存储826”)。数据存储826被配置为托管由应用服务器808和/或其他数据使用或创建的数据。例如,数据存储826可以用于存储上下文数据132、活动图114、和/或其他类型的数据。
计算环境802可以与网络接口812通信或通过网络接口812访问。网络接口812可以包括各种类型的网络硬件和软件以用于支持两个或更多计算设备之间通信,所述计算设备包括但不限于客户端806和应用服务器808。应当理解的是,网络接口812还可以用于连接至其他类型的网络和/或计算机系统。
应当理解的是,在本文中所描述的分布式计算环境800可以利用任何数量的虚拟计算资源和/或可以被配置为执行在本文中所公开的软件组件的任何方面的其他分布式计算功能来实现在本文中所描述的软件元件的任何方面。根据在本文中所公开的概念和技术的各种实现,分布式计算环境800向客户端806提供在本文中被描述为服务的软件功能。应当理解的是,客户端806还可以包括真实的机器或虚拟机,其包括但不限于:服务器计算机、网络服务器、个人计算机、移动计算设备、智能电话、和/或其他设备。由此,在本文中所公开的概念和技术的各种实现使得任何设备能够被配置为访问分布式计算环境800,从而利用在本文中所描述的用于在应用与设备之间进行无缝转换的功能。
现在转到图9,将描述计算设备的说明性计算设备架构900,所述计算设备能够执行在本文中所描述的用于在应用与设备之间提供无缝转换的各种软件组件。计算设备架构900适用于部分由于形状因子、无线连通性、和/或电池供电操作而促进实现移动计算的计算设备。在一些配置中,计算设备包括但不限于移动电话、平板设备、板式设备、便携视频游戏设备等。此外,计算设备架构900适用于在图8中所示出的客户端806中的任何一个。此外,计算设备架构900的方面适用于传统台式计算机、便携计算机(例如,膝上型计算机、笔记本、超便携本、以及上网本)、服务器计算机、和其他计算机系统,例如在本文中参考图7所描述的那些计算系统。例如,在下文中所公开的单点触控和多点触控方面可以应用于台式计算机,所述台式计算机利用触摸屏或某一其他支持触摸的设备,例如具有触摸功能的跟踪板或支持触摸的鼠标。
在图9中所示出的计算设备架构900包括处理器902、存储器组件904、网络连通性组件906、传感器组件908、输入/输出组件910、以及电源组件912。在所示出的配置中,处理器902与存储器组件904、网络连通性组件906、传感器组件908、输入/输出(“I/O”)组件910、以及电源组件912进行通信。尽管没有示出在图9中所示出的个体组件之间的连接,但是所述组件可以交互以实行设备功能。在一些配置中,组件被设置以便经由一个或多个总线(未示出)来进行通信。
处理器902包括一个或多个中央处理单元(“CPU”)内核,它们被配置为处理数据、执行一个或多个应用程序的计算机可执行指令、以及与计算设备架构900的其他组件进行通信以便执行在本文中所描述的各种功能。处理器902可以用于执行在本文中所呈现的软件组件的方面,并且特别地,执行至少部分地利用支持触摸的输入的软件组件的方面。
在一些配置中,处理器902包括图形处理单元(“GPU”),其被配置为加速由CPU所执行的操作,包括但不限于通过执行通用科学和工程计算应用以及诸如高分辨率视频(例如,720P、1080P、4K、以及更大的)、视频游戏、3D建模应用等之类的图形密集型计算应用而执行的操作。在一些配置中,处理器902被配置为与分立GPU(未示出)进行通信。在任何情况下,CPU和GPU可以根据协同处理CPU/GPU计算模型来配置,其中应用的串行部分在CPU上执行,并且计算密集型部分是由GPU加速的。
在一些配置中,处理器902是与在下文中所描述的其他组件中的一个或多个其他组件一同的片上系统(“SoC”)或者包括在所述片上系统中。例如,SoC可以包括处理器902、GPU、网络连通性组件906中的一个或多个、以及传感器组件908中的一个或多个。在一些配置中,部分地利用堆叠式封装(“PoP”)集成电路封装技术来制造处理器902。此外,处理器902可以是单核处理器或多核处理器。
可以根据ARM架构来创建处理器902,所述ARM架构可用于从英联邦的剑桥市的ARM控股公司获得许可证。可替代地,可以根据x86架构来创建处理器902,例如从加利福尼亚州的Mountain View市的Intel公司或其他公司可获得。在一些配置中,处理器902是从加利福尼亚州San Diego市的高通公司可获得的SNAPDRAGON SoC、从加利福尼亚州Santa Clara市的NVIDIA公司可获得的TEGRA SoC、从韩国首尔市的SAMSUNG公司可获得的HUMMINGBIRDSoC、从Texas州的Dallas市的德州仪器公司可获得的开放多媒体应用平台(“OMAP”)SoC、上述SoC中任何一个的定制版本、或者专有SoC。
存储器组件904包括RAM 914、ROM 916、集成存储存储器(“集成存储”)918、以及可移动存储存储器(“可移动存储”)920。在一些配置中,RAM 914或其部分、ROM 916或其部分、和/或RAM 914与ROM 916的某一组合被集成在处理器902中。在一些配置中,ROM 916被配置为存储固件、操作系统或其部分(例如,操作系统内核)、和/或用于从集成存储918或可移动存储920加载操作系统内核的引导加载程序。
集成存储918可以包括固态存储器、硬盘、或固态存储器和硬盘的组合。集成存储918可以被焊接或以其他方式连接至逻辑板,处理器902和在本文中所描述的其他组件也可以在该逻辑板上连接。由此,集成存储918被集成在计算设备中。集成存储918被配置为存储操作系统或其部分、应用程序、数据、和在本文中描述的其他软件组件。
可移动存储920可以包括固态存储器、硬盘、或固态存储器和硬盘的组合。在一些配置中,代替集成存储918而提供可移动存储920。在其他配置中,可移动存储920被提供为额外的可选存储器。在一些配置中,可移动存储920在逻辑上与集成存储918组合,以使得全部的可用存储器可使用并且向用户示出作为集成存储918和可移动存储920的总组合容量。
可移动存储920被配置为插入到可移动存储存储器插槽(未示出)或其他机制中,可移动存储920利用该机制被插入并且被固定以促进通过其可移动存储920可以与诸如处理器902之类的计算设备的其他组件通信的连接。可移动存储920可以以各种存储器卡格式实施,包括但不限于,PC卡、压缩闪存卡、记忆棒、安全数字(“SD”)、迷你SD、微SD、通用集成电路卡(“UICC”)(例如,订阅者身份模块(“SIM”)或者通用SIM(“USIM”))、专有格式等。
可以理解的是,存储器组件904中的一个或多个可以存储操作系统。根据各种配置,操作系统包括但不限于来自微软公司的WINDOWS MOBILE OS、WINDOWS PHONE OS、或WINDOWS OS,来自加拿大安大略省Waterloo市的RESEARCH IN MOTION有限公司的BLACKBERRY OS、来自加利福尼亚州Cupertino市的苹果公司的IOS、来自加利福尼亚州Mountain View市的GOOGLE有限公司的ANDROID OS。可以预期其他操作系统。
网络连通性组件906包括无线广域网组件(“WWAN组件”)922、无线局域网组件(“WLAN组件”)924、以及无线个域网组件(“WPAN组件”)926。网络连通性组件906促进往来于网络928的通信,网络928可以是WWAN、WLAN、或WPAN。尽管示出了单个网络928,但是网络连通性组件906可以促进与多个网络的同时通信。例如,网络连通性组件906可以促进经由WWAN、WLAN或WPAN中的一个或多个与多个网络的同时通信。
网络928可以是WWAN,例如经由WWAN组件922利用一个或多个移动电信技术来向利用计算设备架构900的计算设备提供声音和/或数据服务的移动电信网络。移动电信网络技术可以包括但不限于移动通信全球系统(“GSM”)、码分多址(“CDMA”)ONE、CDMA 2000、通用移动电信系统(“UMTS”)、长期演进(“LTE”)、以及全球微波接入互操作性(WiMAX)。
此外,网络928可以利用各种信道来访问方法(其可以由或不由前述标准使用),所述方法包括但不限于,时分多址(“TDMA”)、频分多址(“FDMA”)、CDMA、宽带CDMA(“W-CDMA”)、正交频分复用(“OFDM”)、空分多址(“SDMA”)等。数据通信可以使用以下方法来提供:通用分组无线电服务(“GPRS”),用于全球演进的增强型数据速率(“EDGE”),包括高速下行链路分组访问(“HSDPA”)、增强型上行链路(“EUL”)、或者另外被称为高速上行链路分组访问(“HSUPA”)、演进型HSPA(“HSPA+”)的高速分组访问(“HSPA”)协议家族,LTE,以及各种其他当前的和未来的无线数据访问标准。网络928可以被配置为利用上文技术的任何组合来提供声音和/或数据通信。网络928可以被配置为或者被适配成根据后代的技术来提供声音和/或数据通信。
在一些配置中,WWAN组件922被配置为向网络928提供双-多模连通性。例如,WWAN组件922可以被配置为向网络928提供连通性,其中网络928经由GSM和UMTS技术或者经由技术的一些其他组合来提供服务。可替代地,多个WWAN组件922可以用于执行这样的功能,和/或提供额外的功能以支持其他非兼容(即,不能由单个WWAN组件支持)的技术。WWAN组件922可以促进类似的到多个网络(例如,UMTS网络和LTE网络)的连通性。
网络928可以是根据电气和电子工程师协会(“IEEE”)802.11标准中的一个或多个标准来操作的WLAN,所述标准例如IEEE 802.11a、802.11b、802.11g、802.11n、和/或未来的802.11标准(在本文中统称为WI-FI)。可以预期802.11标准草案。在一些配置中,利用一个或多个无线WI-FI接入点来实现WLAN。在一些配置中,无线WI-FI接入点中的一个或多个是具有到充当WI-FI热点的WWAN的连通性的另一计算设备。WLAN组件924被配置为经由WI-FI接入点而连接至网络928。可以经由各种加密技术来使这样的连接安全,所述技术包括但不限于:WI-FI保护接入(“WPA”)、WPA2、有线等效保密(“WEP”)等。
网络928可以是根据红外线数据协会(“IrDA”)、蓝牙、无线通用串行总线(“USB”)、Z-波、ZIGBEE、或某一其他短距无线技术来操作的WPAN。在一些配置中,WPAN组件926被配置为促进经由WPAN与诸如外围设备、计算机、或其他计算设备之类的其他设备进行通信。
传感器组件908包括磁力计930、环境光传感器932、接近度传感器934、加速度计936、陀螺仪938、以及全球定位系统传感器(“GPS传感器”)940。可以预期的是,例如但不限于温度传感器或震动检测传感器的其他的传感器也可以被包含在计算设备架构900中。
磁力计930被配置为测量磁场的强度和方向。在一些配置中,磁力计930提供了针对在存储组件904中的一个中存储的指南针应用程序的测量,以便在参考框架中给用户提供准确的方向,包括基本方向、北、南、东和西。可以向包括指南针组件的导航应用程序提供类似的测量。可以构想通过磁力计930获得的测量的其他使用。
环境光传感器932被配置为测量环境光。在一些配置中,环境光传感器932提供对存储在存储组件904内的应用程序的测量,以便自动地调整显示器的亮度(在下文描述)来针对低亮度和高亮度进行补偿。可以构想由环境光传感器932所获得的测量的其他使用。
接近度传感器934被配置为检测邻近于计算设备而不直接接触的对象或东西的存在。在一些配置中,接近度传感器934检测用户的身体(例如,用户的脸)的存在,并且将该信息提供给存储在存储组件904中的一个内的应用程序,该应用程序利用该接近度信息来启用或禁用计算设备的一些功能。例如,电话应用程序可以响应于接收邻近信息而自动地禁用触摸屏(下文描述的),以使得用户的脸不会无意地造成结束通话或者在通话期间启用/禁用电话应用程序之内的其他功能。可以构想如由接近度传感器934所检测到的接近度的其他使用。
加速度计936被配置为测量准确的加速度。在一些配置中,来自加速度计936的输出由应用程序用作输入机制以控制应用程序的一些功能。在一些配置中,向应用程序提供来自加速度计936的输出以用于在风景和肖像模式之间切换、计算协调加速度、或检测降落时使用。可以构想对加速度计936的其他使用。
陀螺仪938被配置为测量并保存朝向。在一些配置中,来自陀螺仪938的输出由应用程序用作输入机制以控制应用程序的一些功能。例如,陀螺仪938可以用于对视频游戏应用或某一其他应用的3D环境内的运动进行准确识别。在一些配置中,应用程序利用来自陀螺仪938和加速度计936的输出来增强对应用程序的一些功能的控制。可以构想对陀螺仪938的其他使用。
GPS传感器940被配置为从GPS卫星接收信号以用于在计算位置时使用。由GPS传感器940所计算的位置可以由需要位置信息或者从位置信息受益的任何应用程序使用。例如,由GPS传感器940计算的位置可以与导航应用程序一起使用,以提供从该位置到目的地的方向或者从目的地到该位置的方向。此外,GPS传感器940可以用于向诸如E911服务之类的基于外部位置的服务提供位置信息。GPS传感器940可以利用网络连通性组件906中的一个或多个来获得经由WI-FI、WIMAX、和/或的蜂窝三角测量技术所生成的位置信息,从而在获得位置定位时协助GPS传感器940。GPS传感器940还可以在辅助GPS(“A-GPS”)系统中使用。
I/O组件910包括显示器942、触摸屏944、数据I/O接口组件(“数据I/O”)946、音频I/O接口组件(“音频I/O”)948、视频I/O接口组件(“视频I/O”)950、以及相机952。在一些配置中,将显示器942和触摸屏944进行组合。在一些配置中,将数据I/O组件946、音频I/O组件948、和视频I/O组件950中的两个或更多个进行组合。I/O组件910可以包括被配置为支持在下文中所描述的各种接口的分立处理器,或者可以包括内置在处理器902中的处理功能。
显示器942是被配置为以可视的形式呈现信息的输出设备。特别地,显示器942可以呈现图形用户界面(“GUI”)元素、文本、图像、视频、通知、虚拟按钮、虚拟键盘、消息传送数据、互联网内容、设备状态、时间、日期、日历数据、偏好、地图信息、位置信息、以及能够以可视的形式被呈现的任何其他信息。在一些配置中,显示器942是利用任何有源或无源矩阵技术和任何背光技术(如果使用的话)的液晶显示器(“LCD”)。在一些配置中,显示器942是有机发光二极管(“OLED”)显示器。可以构想其他显示器类型。
触摸屏944是被配置为检测触摸的存在和位置的输入设备。触摸屏944可以是电阻性触摸屏、电容性触摸屏、表面声波触摸屏、红外线触摸屏、光学成像触摸屏、分散信号触摸屏、声学脉冲识别触摸屏、或者可以利用任何其他触摸屏技术。在一些配置中,触摸屏944作为透明层而被包含在显示器942顶部,以使得用户能够使用一次或多次触摸来与在显示器942上呈现的对象或其他信息进行交互。在其他配置中,触摸屏944是包含在不包括显示器942的计算设备的表面上的触摸板。例如,计算设备可以具有被包含在显示器942的顶部的触摸屏以及在显示器942对面的表面上的触摸板。
在一些配置中,触摸屏944是单点触摸触摸屏。在其他配置中,触摸屏944是多点触摸触摸屏。在一些配置中,触摸屏944被配置为检测不连续的触摸、单点触摸手势、和/或多点触摸手势。为了方便起见,在本文中将这些被统称为“手势”。现在将描述几个手势。应当理解的是,这些手势是说明性的并且不旨在限制所附权利要求的范围。此外,所描述的手势、额外的手势、和/或可替代的手势可以以软件来实现以与触摸屏944一同使用。由此,开发者可以创建专用于特定应用程序的手势。
在一些配置中,触摸屏944支持轻击手势,其中,用户在呈现在显示器942上的项目上轻击触摸屏944一次。轻击手势可以用于各种原因,包括但不限于,打开或启动任何用户所点击的内容。在一些配置中,触摸屏944支持双击手势,其中用户在呈现在显示器942上的项目上点击触摸屏944两次。双击手势可以用于各种原因,包括但不限于,分阶段地缩小或放大。在一些配置中,触摸屏944支持点击并保持的手势,其中用户点击触摸屏944并保持接触达至少预先定义的时间。点击和保持手势可以用于各种原因,包括但不限于,打开特定于上下文的菜单。
在一些配置中,触摸屏944支持平移手势,其中用户将手指放在触摸屏944上并且在将手指在触摸屏944上移动的同时保持与触摸屏944的接触。平移手势可以用于各种原因,包括但不限于,以受控制的速率移动通过屏幕、图像、或菜单。还可以构想多个手指平移手势。在一些配置中,触摸屏944支持轻弹手势,其中用户在用户想要屏幕移动的方向上滑动手指。轻弹手势可以用于各种原因,包括但不限于,水平地或垂直地滚动通过菜单或页面。在一些配置中,触摸屏944支持捏合和伸展手势,其中用户使用两个手指(例如,拇指和食指)在触摸屏944上进行捏合运动或将两个手指移动分开。捏合和伸展手势可以用于各种原因,包括但不限于逐渐缩小或放大网站、地图、或图片。
尽管已经参考用于执行手势的一个或多个手指的使用而呈现了在上文中所描述的手势,但是诸如脚趾之类的其他附属物或者诸如触摸笔之类的对象可以用于与触摸屏944交互。由此,上文的手势应该被理解为是说明性的而不应该被解释为以任何方式进行限制。
数据I/O接口组件946被配置为促进向计算设备输入数据以及从计算设备输出数据。在一些配置中,数据I/O接口组件946包括被配置为例如出于同步操作的目的而在计算设备与计算机系统之间提供有线连通性的连接器。连接器可以是专有连接器或者标准化连接器,例如USB、微USB、迷你USB、USB-C等。在一些配置中,连接器是用于将计算设备与诸如扩展坞、音频设备(例如,数字音乐播放机)、或视频设备之类的另一设备计算设备对接的底座连接器。
视频I/O接口组件948被配置为向计算设备提供音频输入和/或输出功能。在一些配置中,音频I/O接口组件946包括被配置为收集音频信号的麦克风。在一些配置中,音频I/O接口组件946包括被配置为提供针对耳机或其他外部扬声器的连通性的耳机插孔。在一些配置中,音频接口组件948包括针对音频信号输出的扬声器。在一些配置中,音频I/O接口组件946包括光学音频电缆固定。
视频I/O接口组件950被配置为向计算设备提供视频输入和/或输出功能。在一些配置中,视频I/O接口组件950包括视频连接器,其被配置为将来自另一设备(例如,诸如DVD或蓝光播放机之类的视频媒体播放机)的视频作为输入来接收或者向另一设备(例如,监视器、电视、或某一其他外部显示器)发送视频作为输出。在一些配置中,视频I/O接口组件950包括用于输入/输出视频内容的高分辨率多媒体接口(“HDMI”)、迷你HDMI、微HDMI、显示端口、或者专有连接器。在一些配置中,视频I/O接口组件950或其部分与音频I/O接口组件948或其部分相结合。
相机952可以被配置为捕获静态图像和/或视频。相机952可以利用电荷耦合器件(“CCD”)或互补金属氧化物半导体(“CMOS”)图像传感器来捕获图像。在一些配置中,相机952包括用于在低亮度环境中协助拍照的闪光灯。针对相机952的设置可以被实现为硬件或软件按钮。
尽管未示出,但一个或多个硬件按钮也可以被包括在计算设备架构900中。硬件按钮可以用于控制计算设备的一些操作性方面。硬件按钮可以是专用按钮或多用途按钮。硬件按钮可以是机械的或基于传感器的。
所示出的电源组件912包括一个或多个电池954,其可以连接至电池电量计956。电池954可以是可充电的或可丢弃的。可充电电池类型包括但不限于锂聚合物、锂离子、镍镉、镍氢。电池954中的每个可以由一个或多个单元组成。
电池电量计956可以被配置为测量诸如电流、电压、和温度之类的电池参数。在一些配置中,电池电量计956被配置为测量电池的放电速率效应、温度、使用年限、和其他因素,以在某一误差百分比之内预测剩余寿命。在一些配置中,电池电量计956提供了对被配置为使用上述测量来向用户呈现有用的电源管理的应用程序的测量。电源管理数据可以包括以下中的一个或多个:使用的电池百分比、剩余的电池百分比、电池状况、剩余时间、剩余容量(例如,以瓦时为单位)、电流消耗、以及电压。
电源组件912还可以包括电源连接器,其可以与前述I/O组件910中的一个或多个相结合。电源组件912可以经由电源I/O组件944与外部电源系统或充电设备接合。
根据以下条款来考虑在本文中所公开的各种技术:
条款1。一种装置,包括:一个或多个处理器;以及其上存储有计算机可执行指令的至少一个计算机存储介质,所述计算机可执行指令当由所述一个或多个处理器执行时,使得所述装置:暴露用于存储和取回与活动相关联的上下文数据的接口,所述接口包括用于存储与所述活动相关联的所述上下文数据的第一方法以及用于取回所述上下文数据的第二方法,接收包括所述上下文数据和与所述活动相关联的活动标识符(ID)的对第一方法的调用,响应于对所述第一方法的调用,与所述活动ID相关联地存储所述上下文数据,接收包括所述活动ID的对所述第二方法的调用,以及响应于对所述第二方法的调用而返回与所述活动ID相关联的所述上下文数据。
条款2。条款1的装置,其中,所述接口包括网络服务应用程序接口(API)。
条款3。条款1和2的装置,其中,所述接口包括本地应用程序接口(API)。
条款4。条款1-3的装置,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在所述第一计算设备上执行的第二应用来进行的。
条款5。条款1-4的装置,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在第二计算设备上执行的第二应用来进行的。
条款6。条款1-5的装置,其中,所述上下文数据包括定义对所述第一方法进行调用的应用的状态。
条款7。条款1-6的装置,其中,所述应用进一步被配置为调用所述第二方法以获得定义所述应用的状态的数据并且利用所述数据来将所述应用返回至所述状态。
条款8。一种计算机实现的方法,包括:执行上下文服务,所述上下文服务被配置为暴露用于存储和取回与活动相关联的上下文数据的接口,所述接口包括用于存储与所述活动相关联的所述上下文数据的第一方法以及用于取回所述上下文数据的第二方法;接收对所述第一方法的调用,对所述第一方法的调用包括与所述活动相关联的所述上下文数据以及与所述活动相关联的活动标识符(ID);响应于对所述第一方法的调用,与所述活动ID相关联地存储所述上下文数据并且存储描述所述上下文数据与一个或多个父活动之间的关联的数据;接收对所述第二方法的调用,对所述第二方法的调用包括所述活动ID;以及响应于对所述第二方法的调用,取回与所述活动ID相关联的所述上下文数据并且响应于对所述第二方法的调用而返回所述上下文数据。
条款9。条款8的计算机实现的方法,其中,所述接口包括网络服务应用程序接口(API)。
条款10。条款8和9的计算机实现的方法,其中,所述接口包括本地应用程序接口(API)。
条款11。条款8-10的计算机实现的方法,其中,所述接口还包括用于创建与所述活动相关联的所述活动ID的第三方法。
条款12。条款8-11的计算机实现的方法,其中,所述接口还包括用于完成所述活动的第四方法,并且其中,所述方法还包括接收对所述第四方法的调用,并且响应于对所述第四方法的调用,删除所存储的上下文数据和所述活动ID。
条款13。条款8-12的计算机实现的方法,其中,上下文数据包括定义对第一方法进行调用的应用的状态,且其中该应用被进一步配置成调用第二方法以获得数据以及以使用该数据以将应用返回该状态。
条款14。条款8-13的计算机实现的方法,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在所述第一计算设备上执行的第二应用来进行的。
条款15。条款8-14的计算机实现的方法,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在第二计算设备上执行的第二应用来进行的。
条款16。条款8-15的计算机实现的方法,还包括向一个或多个商业智能服务暴露所述上下文数据。
条款17。一种其上存储有计算机可执行指令的计算机存储介质,所述计算机可执行指令当由计算机执行时,其使得所述计算机:暴露用于存储并取回与活动相关联的上下文数据的接口,所述接口包括用于存储与所述活动相关联的所述上下文数据的第一方法以及用于取回所述上下文数据的第二方法;接收包括所述上下文数据和与所述活动相关联的活动标识符(ID)的对所述第一方法的调用;响应于对所述第一方法的调用,与所述活动ID相关联地存储所述上下文数据;接收包括所述活动ID的对所述第二方法的调用;以及响应于对所述第二方法的调用而返回与所述活动ID相关联的所述上下文数据。
条款18。条款17的计算机存储介质,其中,所述接口包括网络服务应用程序接口(API)或本地应用程序接口(API)。
条款19。条款17和18的计算机存储介质,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在所述第一计算设备上执行的第二应用来进行的。
条款20。条款17和19的计算机存储介质,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在第二计算设备上执行的第二应用来进行的。
基于前述内容,应当理解的是,在本文中已经公开了用于在应用与设备之间进行无缝转换的技术。尽管已经用特定于计算机结构特征、方法性和转换性行为、具体的计算机器、以及计算机可读介质的语言描述了本发明,但应当理解的是,在所附权利要求中所定义的本发明非必须限于在本文中所描述的具体的特征、行为、或介质。相反,在上文中所描述的具体的特征、行为、和介质是作为实现权利要求的示例形式而公开的。
在上文中所描述的主题仅仅是作为说明提供的并且不应当被解释为进行限制。可以在不遵循所示出和描述的示例配置和应用的情况下,以及在不脱离在以下的权利要求中所阐述的本发明的真正精神和范围的情况下,对在本文中所描述的主题进行各种修改和改变。

Claims (15)

1.一种装置,包括:
一个或多个处理器;以及
其上存储有计算机可执行指令的至少一个计算机存储介质,所述计算机可执行指令当由所述一个或多个处理器执行时,使得所述装置:
暴露用于存储和取回与活动相关联的上下文数据的接口,所述接口包括用于存储与所述活动相关联的所述上下文数据的第一方法以及用于取回所述上下文数据的第二方法,
接收包括所述上下文数据和与所述活动相关联的活动标识符(ID)的对所述第一方法的调用,
响应于对所述第一方法的调用,与所述活动ID相关联地存储所述上下文数据,
接收包括所述活动ID的对所述第二方法的调用,以及
响应于对所述第二方法的调用而返回与所述活动ID相关联的所述上下文数据。
2.根据权利要求1所述的装置,其中,所述接口包括网络服务应用程序接口(API)。
3.根据权利要求1所述的装置,其中,所述接口包括本地应用程序接口(API)。
4.根据权利要求1所述的装置,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在所述第一计算设备上执行的第二应用来进行的。
5.根据权利要求1所述的装置,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在第二计算设备上执行的第二应用来进行的。
6.根据权利要求1所述的装置,其中,所述上下文数据包括定义对所述第一方法进行调用的应用的状态的数据。
7.根据权利要求1所述的装置,其中,所述应用还被配置为调用所述第二方法以获得定义所述应用的状态的数据,并且利用所述数据将所述应用返回至所述状态。
8.一种计算机实现的方法,包括:
执行上下文服务,所述上下文服务被配置为暴露用于存储和取回与活动相关联的上下文数据的接口,所述接口包括用于存储与所述活动相关联的所述上下文数据的第一方法以及用于取回所述上下文数据的第二方法;
接收对所述第一方法的调用,对所述第一方法的调用包括与所述活动相关联的所述上下文数据以及与所述活动相关联的活动标识符(ID);
响应于对所述第一方法的调用,与所述活动ID相关联地存储所述上下文数据并且存储描述所述上下文数据与一个或多个父活动之间的关联的数据;
接收对所述第二方法的调用,对所述第二方法的调用包括所述活动ID;以及
响应于对所述第二方法的调用,取回与所述活动ID相关联的所述上下文数据并且响应于对所述第二方法的调用而返回所述上下文数据。
9.根据权利要求8所述的计算机实现的方法,其中,所述接口还包括用于创建与所述活动相关联的所述活动ID的第三方法。
10.根据权利要求9所述的计算机实现的方法,其中,所述接口还包括用于完成所述活动的第四方法,并且其中,所述方法还包括接收对所述第四方法的调用,并且响应于对所述第四方法的调用,删除所存储的上下文数据和所述活动ID。
11.一种其上存储有计算机可执行指令的计算机存储介质,所述计算机可执行指令当由计算机执行时,其使得所述计算机:
暴露用于存储并取回与活动相关联的上下文数据的接口,所述接口包括用于存储与所述活动相关联的所述上下文数据的第一方法以及用于取回所述上下文数据的第二方法;
接收包括所述上下文数据和与所述活动相关联的活动标识符(ID)的对所述第一方法的调用;
响应于对所述第一方法的调用,与所述活动ID相关联地存储所述上下文数据;
接收包括所述活动ID的对所述第二方法的调用;以及
响应于对所述第二方法的调用而返回与所述活动ID相关联的所述上下文数据。
12.根据权利要求11所述的计算机存储介质,其中,所述接口包括网络服务应用程序接口(API)或本地应用程序接口(API)。
13.根据权利要求11所述的计算机存储介质,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在所述第一计算设备上执行的第二应用来进行的。
14.根据权利要求11所述的计算机存储介质,其中,对所述第一方法的调用是通过在第一计算设备上执行的第一应用来进行的,并且其中,对所述第二方法的调用是通过在第二计算设备上执行的第二应用来进行的。
15.根据权利要求11所述的计算机存储介质,其中,所述接口还包括用于创建与所述活动相关联的所述活动ID的第三方法以及用于完成所述活动的第四方法,并且其中,响应于对所述第四方法的调用而删除所存储的上下文数据和所述活动ID。
CN201680035477.0A 2015-06-18 2016-06-14 应用与设备之间的无缝转换 Active CN107810489B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/743,659 2015-06-18
US14/743,659 US9734000B2 (en) 2015-06-18 2015-06-18 Seamless transitions between applications and devices
PCT/US2016/037306 WO2016205157A1 (en) 2015-06-18 2016-06-14 Seamless transitions between applications and devices

Publications (2)

Publication Number Publication Date
CN107810489A true CN107810489A (zh) 2018-03-16
CN107810489B CN107810489B (zh) 2021-05-18

Family

ID=56204026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680035477.0A Active CN107810489B (zh) 2015-06-18 2016-06-14 应用与设备之间的无缝转换

Country Status (4)

Country Link
US (1) US9734000B2 (zh)
EP (1) EP3311274B1 (zh)
CN (1) CN107810489B (zh)
WO (1) WO2016205157A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10834231B2 (en) * 2016-10-11 2020-11-10 Synergex Group Methods, systems, and media for pairing devices to complete a task using an application request
US10261780B2 (en) * 2017-05-01 2019-04-16 Google Llc Transparent upgrade of a system service or application
US11249821B1 (en) * 2021-04-07 2022-02-15 Microsoft Technology Licensing, Llc Cross-platform context activation

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1360695A (zh) * 1999-07-13 2002-07-24 太阳微系统有限公司 用于根据应用生存周期管理该应用的方法和设备
CN1549964A (zh) * 2002-01-04 2004-11-24 微软公司 管理计算系统中协处理器的计算资源的方法和系统
CN1707409A (zh) * 2003-09-19 2005-12-14 美国在线服务公司 用户字和用户操作的上下文预测
CN1938686A (zh) * 2004-03-31 2007-03-28 英特尔公司 提供用户级多线程操作的方法和系统
CN101889423A (zh) * 2007-12-19 2010-11-17 诺基亚公司 用于切换安全的方法、装置、系统和相关的计算机程序产品
CN102224476A (zh) * 2008-10-14 2011-10-19 奥布隆工业有限公司 多进程交互系统和方法
US20130058208A1 (en) * 2010-07-06 2013-03-07 Benjamin L. Pfaff Fault tolerant managed switching element architecture
US20130219413A1 (en) * 2012-02-17 2013-08-22 Microsoft Corporation Contextually interacting with applications

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401138B1 (en) 1996-10-28 2002-06-04 Koninklijke Philips Electronics N.V. Interface for patient context sharing and application switching
WO2001025914A2 (en) 1999-10-01 2001-04-12 Accenture Llp. Operations architectures for netcentric computing systems
US7127514B2 (en) 2000-12-28 2006-10-24 Microsoft Corporation Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client
US7334031B2 (en) 2001-01-12 2008-02-19 Siemens Medical Solutions Health Services Corporation System and user interface supporting processing and activity management for concurrently operating applications
US7325032B2 (en) 2001-02-16 2008-01-29 Microsoft Corporation System and method for passing context-sensitive information from a first application to a second application on a mobile device
US6970947B2 (en) * 2001-07-18 2005-11-29 International Business Machines Corporation Method and apparatus for providing a flexible and scalable context service
US7484220B2 (en) * 2004-05-26 2009-01-27 Qualcomm Incorporated Method, software and apparatus for using application state history information when re-launching applications
US20050288001A1 (en) 2004-06-23 2005-12-29 Foster Derek J Method and system for an application framework for a wireless device
US8037123B2 (en) 2004-08-27 2011-10-11 Microsoft Corporation Securely and efficiently extending data processing pipeline functionality
US7647328B2 (en) 2004-10-08 2010-01-12 Sentillion, Inc. Method and apparatus for processing a context change request in a CCOW environment
US8036140B2 (en) * 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US20070050722A1 (en) 2005-08-29 2007-03-01 Sap Ag Context preservation in a user interface through automated action option presentation
US7475277B1 (en) * 2005-11-10 2009-01-06 Storage Technology Corporation Automated repair of damaged objects
US20090003387A1 (en) 2007-06-27 2009-01-01 Microsoft Corporation Synchronization Between Connection Manager and Extension Components
US20090019424A1 (en) 2007-07-12 2009-01-15 Sap Ag System and method of application context driven access restriction
US20090198820A1 (en) 2007-12-07 2009-08-06 Gallup, Inc. Preserving state information client-server system networked via a stateless protocol
US8024732B2 (en) 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
CN102446311B (zh) * 2010-10-15 2016-12-21 商业对象软件有限公司 过程驱动的业务智能
US8224894B1 (en) 2011-05-09 2012-07-17 Google Inc. Zero-click sharing of application context across devices
US20130006874A1 (en) 2011-06-30 2013-01-03 Avaya Inc System and method for preserving context across multiple customer service venues
US20130024873A1 (en) 2011-07-19 2013-01-24 Mitel Networks Corporation Context-aware applications and methods
US9507630B2 (en) 2012-02-09 2016-11-29 Cisco Technology, Inc. Application context transfer for distributed computing resources
US20130339980A1 (en) 2012-06-14 2013-12-19 Clicksoftware Technologies Ltd Composite application enabling workflow between unmodified constituent applications
US9477692B2 (en) * 2012-10-01 2016-10-25 Oracle International Corporation Systems and methods for applying an analytical model to performance analysis
US20140188815A1 (en) 2013-01-03 2014-07-03 Amazon Technologies, Inc Annotation of Resources in a Distributed Execution Environment
WO2014120222A1 (en) 2013-01-31 2014-08-07 Empire Technology Development, Llc Pausing virtual machines using api signaling
JP6247318B2 (ja) 2013-02-19 2017-12-13 アマゾン テクノロジーズ インコーポレイテッド 共有サービスを介したビデオゲームタスクの委任
US8839266B1 (en) 2013-07-31 2014-09-16 Vmware, Inc. Inter-application communication on mobile platforms

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1360695A (zh) * 1999-07-13 2002-07-24 太阳微系统有限公司 用于根据应用生存周期管理该应用的方法和设备
CN1549964A (zh) * 2002-01-04 2004-11-24 微软公司 管理计算系统中协处理器的计算资源的方法和系统
CN1707409A (zh) * 2003-09-19 2005-12-14 美国在线服务公司 用户字和用户操作的上下文预测
CN1938686A (zh) * 2004-03-31 2007-03-28 英特尔公司 提供用户级多线程操作的方法和系统
CN101889423A (zh) * 2007-12-19 2010-11-17 诺基亚公司 用于切换安全的方法、装置、系统和相关的计算机程序产品
CN102224476A (zh) * 2008-10-14 2011-10-19 奥布隆工业有限公司 多进程交互系统和方法
US20130058208A1 (en) * 2010-07-06 2013-03-07 Benjamin L. Pfaff Fault tolerant managed switching element architecture
US20130219413A1 (en) * 2012-02-17 2013-08-22 Microsoft Corporation Contextually interacting with applications

Also Published As

Publication number Publication date
US9734000B2 (en) 2017-08-15
EP3311274A1 (en) 2018-04-25
WO2016205157A1 (en) 2016-12-22
CN107810489B (zh) 2021-05-18
US20160371130A1 (en) 2016-12-22
EP3311274B1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
CN104541271B (zh) 从电子表格数据生成场景和游览
CN102968312B (zh) 用于应用扩展程序的用户界面占位符
CN104737185B (zh) 用于具有伴随的备注的交互式幻灯片演示的阅读模式的方法、系统、装置和计算机可读存储介质
CN109074351A (zh) 文档协作发现
CN105934756B (zh) 索引电子表格结构属性以供搜索
CN104067215B (zh) 呈现数据驱动表单
CN107924333A (zh) 多租户云服务中的更新日志转换和关联
CN108141702A (zh) 上下文知晓的位置共享服务
CN106537382B (zh) 查询建议
CN108028857A (zh) 智能通知
CN105393222B (zh) 网络应用与本地应用之间的渲染委托
CN106537371A (zh) 可视化建议
US11526322B2 (en) Enhanced techniques for merging content from separate computing devices
CN108292332A (zh) 利用第三方数据和元数据来扩展联合图
US20210158304A1 (en) Enhanced views and notifications of location and calendar information
CN110168588A (zh) 基于位置、使用模式以及内容来识别文档
US10433105B2 (en) Geographically-driven group communications
EP3766025A1 (en) Driving contextually-aware user collaboration based on user insights
CN103257997A (zh) 为视频及其他媒体内容启用复制和粘贴功能
CN108885640A (zh) 生成服务应用
CN107810489A (zh) 应用与设备之间的无缝转换
CN106062709A (zh) 将主题信息从主机应用传播到主机扩展
US20220210133A1 (en) Interim connections for providing secure communication of content between devices
CN107409084A (zh) 消息的后处理
CN105408866B (zh) 远程脚本环境中的上下文关联性

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant