将应用的状态从第一设备传输至第二设备的方法和系统转让专利

申请号 : CN201610882939.4

文献号 : CN107066317B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 亚历山大·弗里德里希·库舍尔特朗德·托马斯·维尔纳赫里斯托·斯特凡诺夫·斯特凡诺夫

申请人 : 谷歌有限责任公司

摘要 :

所公开的主题涉及用于将应用的状态从第一设备传输至第二设备的方法和系统。在一个方面,一种方法包括从第一计算设备接收将第一应用的状态从第一计算设备传输至第二计算设备的第一请求。该方法进一步包括向第二计算设备发送许可发起传输的第二请求。该方法进一步包括从第二计算设备接收发起传输的许可。该方法进一步包括基于所接收到的许可从第一计算设备接收该第一应用的状态。该方法进一步包括将所接收到的第一应用的状态发送至第二设备。

权利要求 :

1.一种用于将应用的状态从第一计算设备传输至第二计算设备的计算机实现的方法,所述方法包括:由所述第一计算设备检测所述第二计算设备的存在,其中所述存在的检测基于所述第二计算设备与所述第一计算设备的接近性;

向所述第二计算设备发送发起所述第一计算设备上的第一应用的状态的传输的请求,其中所述第二计算设备上的第二应用被配置为恢复所述第一应用的所述状态;

从所述第二计算设备接收发起所述传输的许可;

基于所接收的许可向所述第二计算设备发送所述第一应用的所述状态;以及从所述第二计算设备接收成功传输的指示。

2.根据权利要求1所述的计算机实现的方法,其中所述存在的检测基于所述第二计算设备与所述第一计算设备的物理接近性或网络接近性中的至少一个。

3.根据权利要求1所述的计算机实现的方法,所述存在的检测基于所述第二计算设备与所述第一计算设备之间的第一网络连接,其中所述第一网络连接被配置用于短距离通信。

4.根据权利要求1所述的计算机实现的方法,其中所述第一计算设备被配置为基于检测到所述存在而提供指示所述第二计算设备的所述存在的第一通知以显示,其中所述第一通知被配置为接受第一命令以使得所述第一计算设备向所述第二计算设备发送发起所述传输的所述请求。

5.根据权利要求4所述的计算机实现的方法,其中所述第二计算设备被配置为提供指示发起所述传输的所述请求的第二通知以显示,并且其中所述第二通知被配置为接受第二命令以使得所述第二计算设备向所述第一计算设备发送发起所述传输的所述许可。

6.根据权利要求5所述的计算机实现的方法,其中发送至所述第一计算设备的所述许可是作为对所述第二计算设备上的第二通知的响应,所述第二通知指示发起将所述第一应用的所述状态从所述第一计算设备传输至所述第二计算设备的所述请求。

7.根据权利要求1所述的计算机实现的方法,其中所述第一计算设备被配置为基于所接收的指示来从所述第一计算设备去除所述第一应用的所述状态。

8.根据权利要求1所述的计算机实现的方法,其中所述第一应用是第一基于web的应用并且所述第二应用是第二基于web的应用,并且其中所述第一基于web的应用的状态包括所述第一基于web的应用的操作历史。

9.根据权利要求1所述的计算机实现的方法,其中所述第一应用是第一web浏览器并且所述第二应用是第二web浏览器,并且其中所述第一应用的所述状态对应于所述第一web浏览器中的web浏览会话。

10.根据权利要求1所述的计算机实现的方法,其中所述第一应用的所述状态以文档对象模型格式来表达。

11.一种用于将应用的状态传输至第二计算设备的计算设备,所述计算设备包括:存储器,所述存储器包括指令;和

处理器,所述处理器被配置为执行所述指令以:

检测所述第二计算设备的存在,其中所述存在的检测基于所述第二计算设备与所述计算设备的接近性;

向所述第二计算设备发送发起所述计算设备上的第一应用的状态的传输的请求,其中所述第二计算设备上的第二应用被配置为恢复所述第一应用的所述状态;

从所述第二计算设备接收发起所述传输的许可;

基于所接收的许可向所述第二计算设备发送所述第一应用的所述状态;以及从所述第二计算设备接收成功传输的指示。

12.根据权利要求11所述的计算设备,其中所述第二计算设备与所述计算设备的接近性是所述第二计算设备与所述计算设备的物理接近性或网络接近性中的至少一个。

13.根据权利要求11所述的计算设备,所述存在的检测基于所述第二计算设备与所述计算设备之间的第一网络连接,其中所述第一网络连接被配置用于短距离通信。

14.根据权利要求11所述的计算设备,其中所述处理器进一步被配置为:基于检测到所述存在而提供指示所述第二计算设备的所述存在的第一通知以显示,其中所述第一通知被配置为接受第一命令以使得所述计算设备向所述第二计算设备发送发起所述传输的所述请求。

15.根据权利要求14所述的计算设备,其中所述第二计算设备被配置为提供指示发起所述传输的所述请求的第二通知以显示,并且其中所述第二通知被配置为接受第二命令以使得所述第二计算设备向所述计算设备发送发起所述传输的所述许可。

16.根据权利要求15所述的计算设备,其中发送至所述计算设备的所述许可是作为对所述第二计算设备上的所述第二通知的响应,所述第二通知指示发起将所述第一应用的所述状态从所述计算设备传输至所述第二计算设备的所述请求。

17.根据权利要求11所述的计算设备,其中所述第一应用是第一基于web的应用并且所述第二应用是第二基于web的应用,并且其中所述第一基于web的应用的状态包括所述第一基于web的应用的操作历史。

18.根据权利要求11所述的计算设备,其中所述第一应用是第一web浏览器并且所述第二应用是第二web浏览器,并且其中所述第一应用的所述状态对应于所述第一web浏览器中的web浏览会话。

19.根据权利要求11所述的计算设备,其中所述第一应用的所述状态以文档对象模型格式来表达。

20.一种包含指令的非易失性计算机可读存储介质,所述指令在由计算设备的处理器执行时,使得所述处理器执行根据权利要求1-10中的任一项所述的方法。

说明书 :

将应用的状态从第一设备传输至第二设备的方法和系统

[0001] 分案说明
[0002] 本申请属于申请日为2013年5月7日的中国发明专利申请201380050072.0的分案申请。
[0003] 相关申请的交叉引用
[0004] 本申请要求于2012年7月30日提交的题为“Transferring a State of an Application from a First Computing Device to a Second Computing Device”的美国专利申请序列号13/562,209的权益,其通过引用全文合并于此。

背景技术

[0005] 在计算设备上运行的应用能够在该计算设备上的各个位置存储各种文件。例如,应用可以使数据存储在易失性存储器(例如RAM)和非易失性存储器(例如硬盘)中的各个位置。例如,在其它位置中,web浏览器可以将数据存储在cookie文件夹、临时互联网文件夹、收藏文件夹和历史文件夹中。

发明内容

[0006] 所公开的主题涉及一种用于将应用的状态从第一计算设备传输至第二计算设备的计算机实现的方法。该方法包括从第一计算设备接收将第一计算设备上的第一应用的状态传输至第二计算设备的第一请求。第二计算设备上的第二应用被配置为恢复所述第一应用的状态。该方法进一步包括基于第一请求向第二计算设备发送许可发起第一应用的状态从第一计算设备向第二计算设备传输的第二请求。该方法进一步包括响应于发送第二请求从第二计算设备接收发起第一应用的状态从第一计算设备向第二计算设备传输的许可。该方法进一步包括基于所接收到的许可从第一计算设备接收该第一应用的状态。该方法进一步包括将所接收到的第一应用的状态发送至第二设备。
[0007] 所公开的主题进一步涉及一种用于将应用的状态从第一计算设备传输至第二计算设备的系统。该系统包括存储器和处理器,该存储器包括用于将应用的状态从第一计算设备传输至第二计算设备的指令。该处理器被配置为执行该指令以从第一计算设备接收将在第一计算设备上的第一应用的状态传输至第二计算设备的第一请求。该第一应用的状态对应于该第一应用在第一计算设备上的第一会话。第二计算设备上的第二应用被配置为恢复该第一应用的状态以在第二应用内继续该第一会话。该处理器进一步被配置为基于该第一请求向第二计算设备发送许可发起将该第一应用的状态从第一计算设备传输至第二计算设备的第二请求。该处理器进一步被配置为响应于发送该第二请求而从第二计算设备接收发起将该第一应用的状态从第一计算设备传输至第二计算设备的许可。该处理器进一步被配置为基于所接收到的许可从第一计算设备接收该第一应用的状态。该处理器进一步被配置为将所接收到的该第一应用的状态发送至第二设备。该处理器进一步被配置为从第二计算设备接收成功接收到该第一应用的状态的确认。该处理器进一步被配置为基于所接收到的确认向第一计算设备发送第二计算设备成功接收到该第一应用的状态的通知,其中该第一应用被配置为基于该通知从第一计算设备去除该第一应用的状态。
[0008] 所公开的主题进一步涉及一种包括机器可读指令的机器可读介质,该机器可读指令用于使得处理器执行一种用于将应用的状态从第一计算设备传输至第二计算设备的方法。该方法包括从第一计算设备接收用于将该第一计算设备上的第一应用的状态传输至第二计算设备的第一请求。该第二计算设备接近于该第一计算设备。该第二计算设备上的第二应用被配置为恢复该第一应用的状态。该方法进一步包括基于该第一请求向第二计算设备发送许可发起将该状态从第一计算设备传输至第二计算设备的第二请求。该方法进一步包括响应于发送该第二请求而从第二计算设备接收发起将该第一应用的状态从第一计算设备传输至第二计算设备的许可。该许可基于第二计算设备与第一计算设备的接近性。该方法进一步包括基于所接收到的许可从第一计算设备接收该第一应用的状态。该方法进一步包括将所接收到的该第一应用的状态发送至第二设备。
[0009] 所公开的主题进一步涉及一种将应用的状态从第一计算设备传输至第二计算设备的计算机实现的方法。该方法包括向第二计算设备发送发起传输第一计算设备上的第一应用的状态的请求。第二计算设备上的第二应用被配置为恢复该第一应用的状态。该方法进一步包括响应于发送的请求而从第二计算设备接收发起传输的许可。该方法进一步包括基于所接收到的许可向第二计算设备发送该第一应用的状态。
[0010] 所公开的主题进一步涉及一种用于将应用的状态从第一计算设备传输至第二计算设备的系统。该系统包括存储器和处理器,该存储器包括用于将应用的状态从第一计算设备传输至第二计算设备的指令。该处理器被配置为执行该指令以基于第二计算设备与第一计算设备的接近性来检测第二计算设备的存在。该处理器进一步被配置为向第二计算设备发送发起传输第一计算设备上的第一应用的状态的请求。第二计算设备上的第二应用被配置为恢复该第一应用的状态。该处理器进一步被配置为响应于发送的请求而从第二计算设备接收发起传输的许可。该处理器进一步被配置为基于所接收到的许可将该第一应用的状态发送至第二计算设备。该处理器进一步被配置为从第二计算设备接收成功传输的指示。该处理器进一步被配置为基于所接收到的指示从第一计算设备去除该第一应用的状态。
[0011] 所要理解的是,主题技术的其它配置将通过以下详细描述而对于本领域技术人员变得显而易见,其中该主题技术的各种配置通过图示被示出并描述。如将会意识到的,该主题技术支持其它且不同的配置并且其若干细节能够在各个其它方面进行修改,所有这些都并不背离该主题技术的范围。因此,附图和详细描述在本质上要被视为是说明性而非限制性的。

附图说明

[0012] 该主题技术的某些特征在所附权利要求中给出。然而,被包括以提供进一步理解的附图图示了所公开的方面并且连同描述一起用来解释所公开的方面的原理。在附图中:
[0013] 图1图示了用于将应用的状态从第一计算设备传输至第二计算设备的架构的示例。
[0014] 图2是图示来自图1的架构的第一计算设备、第二计算设备和服务器的示例的框图。
[0015] 图3A图示了用于将应用的状态从第一计算设备传输至第二计算设备的过程的第一示例。
[0016] 图3B图示了用于将应用的状态从第一计算设备传输至第二计算设备的过程的第二示例。
[0017] 图4A是与图3A的示例过程相关联的系统的第一示例的图示。
[0018] 图4B是与图3B的示例过程相关联的系统的第二示例的图示。
[0019] 图5在概念上图示了可以用来实现该主题技术的一些方面的电子系统。

具体实施方式

[0020] 以下所给出的详细描述意在作为对主题技术的各种配置的描述而并非意在表示该主题技术可以进行实践的仅有配置。附图被合并于此并且构成该详细描述的一部分。该详细描述出于提供对主题技术的全面理解的目的而包括具体细节。然而,对于本领域技术人员将会清楚并显而易见的是,该主题技术并不局限于这里所给出的具体细节并且可以在没有这些具体细节的情况下进行实践。在一些情况下,公知结构和组件以框图形式示出以免对主题技术的概念造成混淆。
[0021] 使用第一计算设备上的应用的用户可能希望在第二计算设备上继续使用该应用。作为示例,可以考虑使用基于web的文字处理应用撰写文档的用户。该用户在移动的基于触摸的平板计算机上开始撰写文档。发现在平板计算机的触摸屏上进行打字不如在键盘上打字那样有效,该用户决定继续在其台式计算机上撰写该文档。
[0022] 在该示例中,该基于web的文字处理应用在计算机设备本地存储操作历史。如这里所使用的短语“操作历史”涵盖了其普遍且常规的含义,包括但并不局限于该用户和/或应用所执行的任意操作。作为示例,如果用户键入了一些文本,则该用户例如能够通过按压CTRL-Z来撤销键入。该用户例如还能够通过按压CTRL-Y而重做该键入。操作能够基于操作历史被撤销和/或重做。
[0023] 在该示例中,由于基于web的文字处理应用在计算设备的本地存储操作历史,所以用户仅能够在该设备上撤销和/或重做操作。因此,在这种情况下,当用户开始使用台式计算机时,用户将不能撤销或重做其在该文档内的任何操作。
[0024] 根据主题技术的某些方面,提供了用于将应用的状态从第一计算设备(例如平板计算机)传输至第二计算设备(例如台式计算机)的系统和方法。
[0025] 如这里所使用的术语“应用状态”和/或“应用的状态”涵盖了其普遍且常规的含义,包括但并不局限于由应用在计算设备上本地生成和/或存储的任意数据。应用状态可以被存储任意长度的时间,并且被存储在计算设备上任意类型的存储器(例如易失性、非易失性)中。
[0026] 图1图示了用于将应用的状态从第一计算设备传输至第二计算设备的架构100的示例。架构100包括通过网络140连接的计算设备110和服务器170。
[0027] 计算设备110例如可以是移动计算机、平板计算机、移动设备(例如智能电话或PDA)、台式计算机、机顶盒(例如用于电视)、视频游戏机或者具有适当处理能力、通信能力以及存储器的任意其它设备。每个计算设备110被配置为包括用于接受用户输入的输入设备以及用于向用户显示信息的输出设备。
[0028] 计算设备110可以连接至网络140。网络140可以包括任意的一个或多个个人域网络(PAN)、局域网(LAN)、校园网(CAN)、城域网(MAN)、广域网(WAN)、宽带网络(BBN)、互联网等。另外,网络140可以包括但并不局限于任意一种或多种以下网络拓扑,包括总线网络、星形网络、环形网络、网状网络、星形-总线网络、树形或层级网络等。
[0029] 任意一个计算设备110都可以是第一计算设备110A,并且另一个计算设备110可以是第二计算设备110B。例如,在图1中,台式计算机被图示为第一计算设备110A的示例,而膝上计算机被图示为第二计算设备110B的示例。每个计算设备110(例如110A、110B)包括应用。例如,第一计算设备110A包括第一应用,并且第二计算设备110B包括第二应用。
[0030] 服务器170例如可以是独立服务器、共享服务器、专用服务器、集群/网格服务器(例如服务器群)或者是云服务器。每个服务器170可以包括一个或多个处理器、通信模块和存储器。服务器170可以被配置为在多个服务器之间分布工作负载(例如用于负载平衡)。
[0031] 图2是图示根据本公开的某些方面的图1的架构100中的第一计算设备110A、第二计算设备110B和服务器170的示例的框图200。
[0032] 第一计算设备110A包括输入设备202A、输出设备204A、处理器220A、通信模块222A和存储器240A。输入设备202A可以是触摸屏、鼠标、键盘或者使得用户能够向第一计算设备110A提供输入206A的任意其它设备。输出设备204A可以是显示屏。经由输入设备202A接收的输入206A能够在第一计算设备110A上本地进行处理和/或在服务器170上进行处理。
[0033] 第一计算设备110A经由通信模块222A连接至网络140。通信模块222被配置为与网络140对接以发送和接收信息,诸如数据、请求、响应以及针对网络140上的其它设备的命令。通信模块222A例如可以是调制解调器或以太网卡。
[0034] 存储器240A包括第一应用250A,其能够被用户用来与第一计算设备110A和/或服务器170进行交互,并且能够被用来向用户显示信息。第一应用250A可以在第一计算设备110A本地安装和/或从服务器170下载。
[0035] 存储器240A进一步包括能够被处理器220A读取以实现第一应用状态模块242A的软件指令。第一应用250A和/或第一应用状态模块242A所生成和/或存储的数据能够被存储为第一应用状态数据244A。应当注意的是,第一应用状态模块242A可以被实现为第一应用250A的一部分或者与之分离。
[0036] 第二计算设备110B在许多方面可以类似于第一计算设备110A。例如,第二计算设备110B包括输入设备202B、输出设备204B、处理器220B、通信模块222B和存储器240B。第二输入设备202B可以是触摸屏、鼠标、键盘或者使得用户能够向第二计算设备110B提供第二输入206B的任意其它设备。输出设备204B可以是显示屏。经由输入设备202B接收的输入206B能够在第二计算设备110B上本地进行处理和/或在服务器170上进行处理。
[0037] 第二计算设备110B经由通信模块222B连接至网络140。通信模块222B被配置为与网络140对接以发送和接收信息,诸如数据、请求、响应以及针对网络140上的其它设备的命令。通信模块222B例如可以是调制解调器或以太网卡。
[0038] 存储器240B进一步包括能够被处理器220B读取以实现第二应用状态模块242B的软件指令。第二应用250B和/或第二应用状态模块242B所生成和/或存储的数据能够被存储为第二应用状态数据244B。应当注意的是,第二应用状态模块242B可以被实现为第二应用250B的一部分或者与之分离。
[0039] 计算设备110(例如110A、110B)的处理器(例如220A、220B)被配置为执行指令,诸如被物理编码到处理器(例如220A、220B)中的指令,从存储器(例如240A、240B)读取的指令,或者二者的组合。作为示例,基于从存储器240A读取的指令,第一处理器能够被配置为执行用于将应用(例如250A)的状态(例如244A)从第一计算设备(例如110A)传输至第二计算设备(例如110B)的方法。
[0040] 例如,考虑第一计算设备110A,一旦来自存储器240A的指令被加载,处理器220A就被配置为向第二计算设备(例如110B)发送发起传输第一计算设备(例如110A)上的第一应用(例如250A)的状态(例如244A)的请求,其中该第二计算设备(例如110B)具有被配置为在第二计算设备(例如110B)上恢复第一应用(例如250A)的状态(例如244A)的第二应用(例如250B)。处理器220A进一步被配置为响应于发送的请求而从第二计算设备(例如110B)接收发起传输的许可。处理器220A进一步被配置为基于所接收到的许可向第二计算设备(例如
110B)发送第一应用(例如250A)的状态(例如244A)。
[0041] 服务器170包括存储器280、处理器260和通信模块262。存储器280包括能够由处理器260读取以实现应用状态服务器模块282的软件指令。应用状态服务器模块282将应用的状态从第一计算设备(例如110A)传输至第二计算设备(例如110B)。应用状态服务器模块282所生成和/或存储的数据(例如临时副本)可以作为应用状态服务器数据284被存储在服务器170的存储器280中。
[0042] 应用状态服务器模块282从第一计算设备(例如110A)接收将第一计算设备(例如110A)上的第一应用(例如250A)的状态(例如244A)传输至第二计算设备(例如110B)的第一请求。第二计算设备(例如110B)上的第二应用(例如250B)被配置为恢复第一应用(例如
250A)的状态(例如244A)。应用状态服务器模块282基于该第一请求向第二计算设备(例如
110B)发送许可发起将第一应用(例如250A)的状态(例如244A)从第一计算设备(例如110A)传输至第二计算设备(例如110B)的第二请求。应用状态服务器模块282响应于发送该第二请求而从第二计算设备(例如110B)接收发起将第一应用(例如250A)的状态(例如244A)从第一计算设备(例如110A)传输至第二计算设备(例如110B)的许可。应用状态服务器模块
282基于所接收到的许可从第一计算设备(例如110A)接收第一应用(例如250A)的状态(例如244A)。应用状态服务器模块282将所接收到的第一应用(例如250A)的状态(例如244A)发送至第二计算设备(例如110B)。
[0043] 服务器170经由通信模块262连接至网络140。通信模块262被配置为与网络140对接以发送和接收信息,诸如数据、请求、响应以及针对网络140上的其它设备的命令。通信模块262例如可以是调制解调器或以太网卡。
[0044] 服务器170的处理器260被配置为执行指令,诸如被物理编码到处理器260中的指令,从存储器280读取的指令,或者二者的组合。作为示例,服务器170的处理器260执行应用状态服务器模块282的指令。
[0045] 一旦来自存储器280的指令被加载,处理器260就被配置为从第一计算设备(例如110A)接收将第一计算设备(例如110A)上的第一应用(例如250A)的状态(例如244A)传输至第二计算设备(例如110B)的第一请求。第二计算设备(例如110B)上的第二应用(例如250B)被配置为恢复第一应用(例如250A)的状态(例如244A)。处理器260进一步被配置为基于该第一请求向第二计算设备(例如110B)发送许可发起将第一应用(例如250A)的状态(例如
244A)从第一计算设备(例如110A)传输至第二计算设备(例如110B)的第二请求。处理器260进一步被配置为响应于发送该第二请求而从第二计算设备(例如110B)接收发起将第一应用(例如250A)的状态(例如244A)从第一计算设备(例如110A)传输至第二计算设备(例如
110B)的许可。处理器260进一步被配置为基于所接收到的许可从第一计算设备(例如110A)接收第一应用(例如250A)的状态(例如244A)。处理器260进一步被配置为将所接收到的第一应用(例如250A)的状态(例如244A)发送至第二设备(例如110B)。
[0046] 图3A-B图示了用于将应用的状态从第一计算设备传输至第二计算设备的过程300A-B的示例。
[0047] 图3A图示了用于将应用的状态从第一计算设备传输至第二计算设备的过程300A的第一示例。
[0048] 在步骤310,服务器170从第一计算设备110A接收将第一计算设备110A上的第一应用250A的状态244A传输至第二计算设备110B的第一请求。第二计算设备110B上的第二应用250B被配置为恢复第一应用250A的状态244A。
[0049] 第一应用250A的状态244A可以包括在第一计算设备110A上生成和/或存储的任意数据(例如本地副本、临时数据)。也就是说,作为第一应用110A的操作结果而出现在第一计算设备110A上的任何信息都能够被认为是应用状态244A的一部分。作为示例,当第一应用250A是文字处理应用时,应用状态244A可以包括用户对其进行工作的文档、操作历史(例如撤销历史、重做历史)、用户设置(例如文件保存位置)、滚动条位置、文字处理应用的窗口位置、临时文件(当该文档被加载到存储器中以便进行编辑时所创建的临时文件)等等。
[0050] 第一应用250A的状态244A可以以各种格式进行表达。例如,第一应用250A的状态244A可以以文档对象模型(DOM)格式进行表达。作为另一个示例,第一应用250A的状态244A能够被表达为单个存档(例如压缩文件)。
[0051] 第一计算设备110A和第二计算设备110B可以是类似或不同的。作为示例,第一计算设备110A可以是膝上计算机,而第二计算设备110B可以是平板计算机。类似地,第一计算设备110A可以是智能电话,而第二计算设备110B可以是台式计算机。
[0052] 在步骤320,服务器170基于该第一请求向第二计算设备110B发送许可发起将第一应用250A的状态244A从第一计算设备110A传输至第二计算设备110B的第二请求。该第二请求可以与第一请求相同。也就是说,该第一请求可以在没有实质性改变的情况下被中继至第二计算设备110B作为第二请求。替选地,第二请求可以由服务器170基于第一请求来生成。
[0053] 用于许可的第二请求可以以各种方式来实现。例如,服务器170能够使得第二计算设备110B在输出设备204B(例如显示器)上向用户显示通知,并且提示用户经由输入设备202B(例如鼠标)提供输入206B(例如点击按钮)以指示许可。服务器170可以在没有来自用户的任何交互的情况下从第二计算设备110B接收许可。例如,第二计算设备110B能够被预先配置为响应于来自服务器170的请求而提供许可。
[0054] 在步骤330,服务器170响应于发送该第二请求而从第二计算设备110B接收发起将第一应用250A的状态244A从第一计算设备110A传输至第二计算设备110B的许可。来自第二计算设备110B的许可可以以各种方式被接收。例如,从第二计算设备110B接收的安全令牌能够指示许可发起传输。
[0055] 在步骤340,服务器170基于所接收到的许可从第一计算设备110A接收第一应用250A的状态244A。
[0056] 在步骤350,服务器170将所接收到的第一应用250A的状态244A发送至第二设备110B。第二计算设备110B上的第二应用250B能够恢复第一应用250A的状态244A。也就是说,通过使用应用状态244A,第二应用250B能够像第一应用250A那样显现和表现。
[0057] 在一个方面,服务器170能够从第二计算设备110B接收成功接收了第一应用250A的状态244A的确认。服务器170能够基于所接收的确认向第一计算设备110A发送第一应用250A的状态244A被第二计算设备110B成功接收的通知。发送的通知可以与所接收的确认相同。也就是说,所接收的确认能够在没有实质性改变的情况下被中继至第一计算设备110A作为发送的通知。替选地,发送的通知能够由服务器170基于所接收到的确认来生成。
[0058] 基于该发送的通知,第一应用250A能够从第一计算设备110A去除状态244A。
[0059] 图3B图示了用于将应用的状态从第一计算设备传输至第二计算设备的过程300B的第二示例。
[0060] 在步骤315,第一计算设备110A向第二计算设备110B发送发起传输第一计算设备110A上的第一应用250A的状态244A的请求。第二计算设备110B具有被配置为在第二计算设备110B上恢复第一应用250A的状态244A的第二应用250B。
[0061] 步骤315中所发送的请求能够以各种方式被触发。例如,当第一计算设备110A检测到存在第二计算设备110B时,能够提供第一通知(例如显示)以指示存在第二计算设备110B。第一计算设备110A能够基于第二计算设备110B与第一计算设备110A的物理接近性和/或网络接近性来检测第二计算设备110B的存在。
[0062] 作为物理接近性的示例,第一计算设备110A可以基于蓝牙技术来检测第二计算设备110B的存在。类似地,第一计算设备110A可以基于红外、WiFi或者将会使得第二计算设备110B发射可辨识信号的任意其它技术来检测第二计算设备110B的存在。
[0063] 第一计算设备110A可以基于第二计算设备110B所导致的影响来检测第二计算设备110B的存在。例如,第一计算设备110A可以基于第二计算设备110B所发射的特定声音模式来检测第二计算设备110B。
[0064] 作为网络接近性的示例,第一计算设备110A能够针对其它计算设备110的存在而探测网络。例如,第一计算设备110A能够针对第二计算设备110B的硬件地址(例如MAC地址)而扫描网络。
[0065] 第一计算设备110A所提供(例如显示)以指示第二计算设备110B的存在的第一通知可以被配置为接受第一命令(例如第一输入)。该第一命令可以导致第一计算设备110A向第二计算设备110B发送发起将第一应用250A的状态244A从第一计算设备110A传输至第二计算设备110B的请求。
[0066] 应当注意的是,该第一通知可以要求或不要求用户交互。也就是说,该通知以及相对应的第一命令可以基于第一计算设备的配置而自动发生。
[0067] 在步骤325,第一计算设备110A响应于该发送的请求而从第二计算设备110B接收发起传输的许可。在步骤325中所接收的许可可以以各种方式被触发。例如,当第一计算设备110A发送发起传输的请求时,第二计算设备110B能够提供(例如显示)指示发起传输的请求的第二通知。第二计算设备110B所提供(例如显示)的第二通知可以被配置为接受第二命令而使得第二计算设备110B向第一计算设备110A发送许可以发起传输。
[0068] 在步骤335,第一计算设备110A从第二计算设备110B接收该许可,并且基于所接收到的许可向第二计算设备110B发送第一应用250A的状态244A。
[0069] 在一个方面,第一计算设备110A可以从第二计算设备110B接收第一应用250A的状态244A成功传输的指示。基于所接收到的指示,第一应用250A能够从第一计算设备110A去除状态244A。
[0070] 应当注意的是,虽然以上关于图1和2的系统对过程300A-B进行了描述,但是过程300A-B并不局限于此,并且能够由其它系统和/或配置来执行。例如,步骤310的第一请求和/或步骤320的许可可以基于步骤315和325中所描述的接近性的检测。也就是说,可以使得第一应用250A的状态244A的传输(例如出于安全原因)取决于第一计算设备110A与第二计算设备110B的接近性。
[0071] 现在将使用图3A-B的过程300A-B的示例对一个示例进行描述。在图4A所图示的第一示例中,将使用平板计算机作为第一计算设备110A,该平板计算机上的第一web浏览器将被用作第一应用250A,该第一web浏览器上随后被称作第一浏览会话的浏览会话将被用作第一应用250A的状态244A,将使用台式计算机作为第二计算设备110B,并且该台式计算机上的第二web浏览器将被用作第二应用250B。
[0072] 在该示例中,使用平板计算机110A的用户决定从在线零售商处购买一本书。当用户开始结算过程以完成购买时,该用户被要求输入其送货和账单信息。该用户发现在平板计算机的触摸屏上打字很麻烦,决定切换至台式计算机。
[0073] 过程300A在用户决定将第一浏览会话244A从平板计算机传输至台式计算机110B时开始。
[0074] 在步骤310,服务器170从平板计算机110A接收将平板计算机110A上的第一web浏览器250A的第一浏览会话244A传输至台式计算机110B的第一请求。台式计算机110B上的第二web浏览器250B被配置为恢复第一web浏览器250A的浏览244A。
[0075] 平板计算机110A上的第一浏览会话244A包括与用户的web活动相关的所有文件。例如,该第一浏览会话包括用户所观看的特定网页、相关联的临时文件、cookie、URL历史、窗口和/或标签位置等等。该示例中的第一浏览会话244A以文档对象模型(DOM)格式进行表达。
[0076] 在步骤320,服务器170基于该第一请求向台式计算机110B发送许可发起将第一web浏览器250A的第一浏览会话244A从平板计算机110A传输至台式计算机110B的第二请求。在该示例中,发送至台式计算机110B的第二请求由服务器170基于从平板计算机110A所接收的第一请求来生成。
[0077] 台式计算机110B被配置为自动接受来自平板计算机110A的进入传输。因此,台式计算机110B自动向服务器170发送许可。
[0078] 在步骤330,服务器170从台式计算机110B接收发起从平板计算机110A传输第一web浏览器250A的第一浏览会话244A的许可。
[0079] 在步骤340,基于所接收的许可,服务器170从平板计算机110A接收第一浏览会话244A。
[0080] 在步骤350,服务器170将浏览会话244A发送至台式计算机110B。第一浏览会话244A以及基于步骤340的操作所存储(例如作为临时副本)或生成的任意其它数据可以被存储在服务器170上作为应用状态服务器数据284。
[0081] 台式计算机110B上的第二web浏览器250B随后恢复第一web浏览器250A的第一浏览会话244A。用户随后从台式计算机110B完成购买。
[0082] 在图4B所图示的第二示例中,将使用台式计算机作为第一计算设备110A,该台式计算机上的第一基于web的文字处理应用将被用作第一应用250A,与该第一基于文本的文字处理应用相关联的文件将被用作第一应用250A的状态244A,将使用膝上计算机作为第二计算设备110B,并且该膝上计算机上的第二基于web的文字处理应用将被用作第二应用250B。
[0083] 在该示例中,用户处于其办公室中,并且正在使用基于web的文字处理应用来编辑文档。该基于web的应用能够离线创建和/或编辑文档。该用户必须搭乘飞机进行商务旅行以去往另一个位置参加会议。
[0084] 过程300B在该用户决定将第一基于web的文字处理应用250A的状态244A传输至用户将在其商务旅行时携带的膝上计算机110B时开始。该用户决定传输状态244A,使得其能够访问到其正在编辑的文档的操作历史(例如撤销历史)。
[0085] 在操作315,台式计算机110A向膝上计算机110B发送发起传输台式计算机110A上的第一基于web的文字处理应用250A的状态244A的请求。膝上计算机110B具有web浏览器,其已经被存储了随后离线使用的基于web的文字处理应用,下文被称作第二基于web的文字处理应用250B。第二基于web的文字处理应用250B被配置为恢复第一基于web的文字处理应用250A的状态244A。
[0086] 步骤315中所发送的请求在台式计算机110A检测到膝上计算机110B的存在时被触发。台式计算机110A基于从膝上计算机110B所接收到的蓝牙信号来检测膝上计算机110B。
[0087] 在步骤325,台式计算机110A响应于该发送的请求而从膝上计算机110B接收发起传输的许可。步骤325中的许可为台式计算机110A从膝上计算机110B所接收的安全令牌的形式。
[0088] 在步骤335,基于所接收到的许可,台式计算机110A将第一基于web的文字处理应用250A的状态244A发送至膝上计算机110B。第二基于web的文字处理应用250A随后恢复状态244A,并且用户随后能够继续在膝上计算机110B上对该文档进行工作。
[0089] 图5在概念上图示了可以用来实现该主题技术的一些方面的电子系统。例如,图5图示了能够利用其来实现图2的计算设备110或服务器170的计算机系统500的示例。在某些方面,计算机系统500可以使用硬件或者软件和硬件的组合在专用服务器中实现,或者被集成到另一个实体之中,或者跨多个实体进行分布。
[0090] 计算机系统500(例如计算设备110、服务器170)包括总线508或者用于传输信息的其它通信机制,以及与总线508耦合以便处理信息的处理器502(例如处理器220、处理器260)。作为示例,计算机系统500可以被实现为具有一个或多个处理器502。处理器502可以是通用微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、离散硬件组件,或者能够执行计算或其它信息操控的任意其它适当实体。
[0091] 除硬件之外,计算机系统500可以包括创建所讨论的计算机程序的执行环境的代码,例如构成存储在所包括的存储器504(例如存储器240、存储器280)中的处理器固件、协议栈、数据库管理系统、操作系统或者它们中一个或多个的组合的代码,上述存储器504诸如随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除PROM(EPROM)、寄存器、硬盘、可移动盘、CD-ROM、DVD,或者任意其它适当存储设备,其耦合至总线508以便存储要由处理器502执行的信息和指令。处理器502和存储器504可以被补充以专用逻辑电路或者结合于其中。
[0092] 指令可以存储在存储器504中并且在一个或多个计算机程序产品中实施,上述计算机程序产品即编码在计算机可读介质上以便由计算机系统500执行或者控制其操作的计算机程序指令的一个或多个模块,并且根据本领域技术人员所公知的任意方法,其包括但并不局限于计算机语言,诸如面向数据的语言(例如SQL、dBase)、系统语言(例如C、Objective-C、C++、汇编)、架构语言(例如Java、.NET)和应用语言(例如PHP、Ruby、Perl、Python)。指令还可以以诸如阵列语言、面向方面的语言、汇编语言、编辑语言、命令行接口语言、编译语言、并行编程语言、波形括号语言、数据流语言、数据结构化语言、声明语言、深奥编程语言、扩展语言、第四代语言、功能语言、交互模式语言、解释语言、迭代语言、基于列表的语言、小型语言、基于逻辑的语言、机器语言、宏语言、元程序设计语言、多范例语言、数字分析、非基于英语的语言、面向对象的基于类的语言、面向对象的基于原型语言、越位规则语言、过程语言、反射语言、基于规则的语言、脚本语言、基于栈的语言、同步语言、语义处理语言、视觉语言、wirth语言、嵌入式语言和基于XML的语言的计算机语言来实现。存储器504也可以被用于在要被处理器502执行的指令的执行期间存储临时变量或其它中间信息。
[0093] 如这里所讨论的计算机程序可以不必对应于文件系统中的文件。程序能够被存储在保存其它程序或数据(例如标记语言文档中所存储的一个或多个脚本)的文件的一部分中,存储在专用于所讨论程序的单个文件中,或者存储在多个协同文件中(例如存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一台计算机或多台计算机上执行,该多台计算机位于一个地点或者跨多个地点分布并且通过通信网络进行互连。该说明书中所描述的过程和逻辑流程能够由一个或多个可编程处理器执行,所述一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。
[0094] 计算机系统500进一步包括诸如磁盘或光盘的数据存储设备506,其耦合至总线508以便存储信息和指令。计算机系统500可以经由输入/输出模块510耦合至各个设备。输入/输出模块510可以是任意的输入/输出模块。输入/输出模块510的示例包括诸如USB端口的数据端口。输入/输出模块510被配置为连接至通信模块512。通信模块512的示例(例如通信模块222、通信模块262)包括网络接口卡,诸如以太网卡和调制解调器。在某些方面,输入/输出模块510被配置为连接至诸如输入设备514(例如输入设备202)和/或输出设备516(例如输出设备204)的多个设备。输入设备514的示例包括键盘以及诸如鼠标或轨迹球的指示设备,用户能够通过其向计算机系统500提供输入。也能够使用其它类型的输入设备514来提供与用户的交互,诸如触觉输入设备、视觉输入设备、音频输入设备或者脑力计算机接口设备。例如,提供给用户的反馈可以是任意形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入能够以任意形式被接收,包括声音、语音、触觉或脑波输入。
输出设备516的示例包括用于向用户显示信息的显示设备,诸如CRT(阴极射线管)或LCD(液晶显示器)监视器。
[0095] 根据本公开的一个方面,计算设备110可以响应于处理器502执行存储器504中所包含的一个或多个指令的一个或多个序列而使用计算机系统500来实现。这样的指令可以从诸如数据存储设备506的另一个机器可读介质被读入存储器504。执行主存储器504中所包含的指令序列使得处理器502执行这里所描述的过程步骤。多处理布置中的一个或多个处理器也可以被用来执行存储器504中所包含的指令序列。在替选的方面,可以替代软件指令或者与之相结合地使用硬线电路来实现本公开的各个方面。因此,本公开的多个方面并不局限于硬件电路和软件的任何具体组合。
[0096] 该说明书中所描述的主题的各个方面能够在计算系统中实现,该计算系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如计算计算机的前端组件,或者一个或多个这样的后端、中间件或前端组件的任意组合,上述计算计算机具有用户能够通过其与该说明书所描述的主题的实现方式进行交互的图形用户界面或应用。该系统的组件能够通过例如通信网络之类的任意形式或介质的数字数据通信进行互连。通信网络(例如网络140)能够包括例如任意个域网络(PAN)、局域网(LAN)、校园网(CAN)、城域网(MAN)、广域网(WAN)、宽带网络(BBN)、互联网等中的一个或多个。另外,通信网络例如可以包括但并不局限于包括以下网络拓扑中的任意一种或多种:总线网络、星形网络、环形网络、网状网络、星形-总线网络、树形或层级网络等。通信模块例如可以是调制解调器或以太网卡。
[0097] 计算系统500可以包括计算设备和服务器。计算设备和服务器通常互相远离并且典型地通过通信网络进行交互。计算设备和服务器的关系源自于在相应计算机上运行并且互相具有计算-服务器关系的计算机程序。计算机系统500例如可以是台式计算机、膝上计算机或平板计算机,但是并不局限于此。计算机系统500还可以嵌入在另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器、视频游戏机和/或电视机顶盒,但是并不局限于此。
[0098] 如这里所使用的术语“机器可读存储介质”或“计算机可读介质”是指参与向处理器502提供指令以供执行的任意介质。这样的介质可以采用许多形式,包括但并不局限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘或磁盘,诸如数据存储设备506。易失性介质包括动态存储器,诸如存储器504。传输介质包括同轴线缆、铜线和光纤,包括包含总线508在内的线路。机器可读介质的常见形式例如包括软盘、软质盘、硬盘、磁带、任意其它磁性介质、CD-ROM、DVD、任意其它光学介质、打孔卡、纸带、任意其它具有孔洞图案的物理介质、RAM、PROM、EPROM、FLASH EPROM、任意其它存储器芯片或卡盒,或者计算机能够从其进行读取的任意其它介质。机器可读存储介质可以是机器可读存储设备、机器可读存储基片、存储器设备、影响机器可读传播信号的事物组合,或者它们中一个或多个的组合。
[0099] 虽然该说明书包含了许多具体细节,但是这些并不应当被理解为对可以请求保护的范围的限制,相反要被理解为该主题的特定实现方式的描述。在该说明书中以主题技术的单独实现方式为背景所描述的某些特征也能够组合在单个实现方式中来实现。相反,在单个实现方式的背景下描述的各个特征也能够单独在多个实现方式中实现或者以任意适当的子组合形式来实现。此外,虽然特征可以在上文中被描述为以某种组合进行操作并且甚至最初如此要求保护,但是来自所请求保护的组合的一个或多个特征在一些情况下能够从该组合中被去除,并且所请求保护的组合可以针对子组合或子组合的变化形式。
[0100] 类似地,虽然操作在图中以特定顺序进行描绘,但是这并不应当被理解为要求这样的操作以所示出的特定顺序或连续顺序来执行,或者所有所图示的操作都要被执行,才能实现所期望的结果。在某些环境中,多任务和并行处理可能是有利的。此外,以上所说明的方面中各个系统组件的划分不应当被理解为在所有的方面中要求这样的划分,并且应当理解的是,所描述的程序组件和系统一般能够共同集成在单个软件产品中或者被封装为多个软件产品。
[0101] 已经在特定方面对该说明书的主题进行了描述,但是其它方面也能够实现并且处于所附权利要求的范围之内。例如,在权利要求中记载的动作可以以不同顺序来执行并且仍然获得所期望的结果。作为一个示例,在附图中描绘的过程并非必然要求所示出的特定顺序或连续顺序来实现所期望的结果。在某些实现方式中,多任务和并行处理可能是有利的。其它变化处于所附权利要求的范围之内。
[0102] 这些和其它实现方式处于所附权利要求的范围之内。