任务迁移的系统及方法与流程

文档序号:31835699发布日期:2022-10-18 21:12阅读:339来源:国知局
任务迁移的系统及方法与流程
任务迁移的系统及方法
1.本技术是分案申请,原申请的申请号是:202111396815.2,原申请日是2021年11月23日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及终端技术领域,特别涉及一种任务迁移的系统及方法。


背景技术:

3.对于当前用户使用的手机、平板等终端来说,用户通常可以通过做出从终端的触摸屏底部上划或者点击“多任务”按键,进入该终端的最近任务(recent task)界面。在最近任务界面中,用户可以查询和管理该终端和其他设备最近使用的应用程序。
4.但是,在当前的技术方案中,用户查看远端设备的任务卡片以及进行任务在不同设备之间进行迁移的过程中操作比较复杂,对用户不够友好,降低了用户体验。


技术实现要素:

5.本技术提供了一种任务迁移的系统及方法,可以方便用户在一个设备上查看和管理其他设备的历史任务,可以适用于几乎所有的应用,不需要应用进行适配,满足用户对多设备任务进行管理和控制的需求,符合用户的使用习惯,对用户友好,方便用户进行后续的操作,提高用户体验。
6.第一方面,提供了一种任务迁移的系统,该系统包括第一终端和第二终端,该第二终端用于:运行第一应用程序;在显示第一应用程序中的第一用户界面时,将第一应用程序转为后台运行;第一终端用于:接收来自第二终端的任务信息,该任务信息包括第二终端在后台运行的应用程序的信息;接收来自用户的第一操作;根据第一操作开启最近任务界面,其中,最近任务界面包括控件;该控件包括第二终端的标识,响应于用户对于第二终端的标识的第二操作,在最近任务界面中显示第二终端在后台运行的应用程序对应的至少一个任务卡片,至少一个任务卡片包括第一应用程序对应的第一任务卡片;响应于用户对该第一任务卡片的第三操作,运行第一应用程序并显示该第一用户界面;响应于用户在第一用户界面上的第四操作,显示第二用户界面,其中,第四操作是回退操作,第二用户界面是该第一用户界面的父用户界面。
7.第一方面提供的任务迁移的系统,在第二终端的第一应用程序迁移待第一终端上情况下,第一终端在显示第一应用程序的第一用户界面之后,接收到用户的对第一用户界面的操作后,第一终端显示第一用户的界面的父界面或者子界面,而不是显示第一终端设备的主界面,符合用户的使用习惯,对用户友好,方便用户进行后续的操作,提高用户体验。
8.在第一方面一种可能的实现方式中,第一终端还用于:在最近任务界面中显示第一终端最近运行的应用程序对应的第二任务卡片;响应于第二操作,停止显示第二任务卡片。
9.在第一方面一种可能的实现方式中,第二终端还用于:将第一应用程序的应用数
据流分割为多个分段数据,并确定该多个分段数据对应的索引表,该索引表用于指示该多个分段数据在第二终端的分布式文件系统中的存储路径以及前后顺序关系;利用多线程并行传输的方式向第一终端发送该多个分段数据;向第一终端发送该索引表;第一终端还用于:根据接收到的多个分段数据和该索引表,恢复第一应用程序的应用数据流;在接收到第三操作后,根据第三操作以及第一应用程序的应用数据流,运行第一应用程序。在该实现方式中,在终端之间进行应用的数据迁移的过程中,对应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端,对端终端根据接收到的分段数据以及索引表恢复应用数据,从而可以支持200kb以上的应用的数据流的迁移,提高了应用数据流迁移的效率,提高用户体验。
10.在第一方面一种可能的实现方式中,该至少一个任务卡片中还包括第二终端桌面第一屏快照对应的第三任务卡片,其中,在第三任务卡片上存在界面能力fa卡片、悬浮窗、悬浮球中的至少一种;第一终端还用于:按照第二终端横屏使用时、竖屏使用时、折叠屏的展开态竖屏使用时、折叠屏的展开态横屏使用时、折叠屏的折叠态横屏使用时、折叠屏的折叠态竖屏使用时的任意一种,在第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片。在该实现方式中,利用用户对第二终端的使用状态、用户对第一终端的使用状态、以及第一终端的屏幕大小第一终端的最近任务界面中单排显示或者多排显示该至少一个任务卡片,可以提高第二终端的任务卡片显示的效率,方便用户在一个设备上查看和管理其他设备的历史任务,提高用户体验。
11.在第一方面一种可能的实现方式中,第一终端还用于:利用第一终端的硬件能力运行第一应用程序;或者,利用第二终端的硬件能力运行第一应用程序;或者利用第一终端和第二终端的硬件能力运行第一应用程序。在该实现方式中,可以提高第一终端运行第一应用程序时使用硬件能力的灵活性,保证第一终端运行第一应用程序的效率。
12.第二方面,提供了一种任务迁移的方法,该方法应用于第一终端,该方法包括:接收来自第二终端的任务信息,该任务信息包括第二终端在后台运行的应用程序的信息;接收来自用户的第一操作;根据第一操作开启最近任务界面,其中,该最近任务界面包括控件,该控件包括第二终端的标识响应于用户对于第二终端的标识的第二操作,在最近任务界面中显示第二终端在后台运行的应用程序对应的至少一个任务卡片,该至少一个任务卡片包括第二终端在后台运行的第一应用程序对应的第一任务卡片;响应于用户对第一任务卡片的第三操作,运行第一应用程序并显示第一应用程序的第一用户界面;响应于用户在第一用户界面上的第四操作,显示第二用户界面,其中,第四操作是回退操作,第二用户界面是第一用户界面的父用户界面。
13.第二方面提供的任务迁移的方法,在第二终端的第一应用程序迁移待第一终端上情况下,第一终端在显示第一应用程序的第一用户界面之后,接收到用户的对第一用户界面的操作后,第一终端显示第一用户的界面的父界面或者子界面,而不是显示第一终端设备的主界面,符合用户的使用习惯,对用户友好,方便用户进行后续的操作,提高用户体验。
14.在第二方面一种可能的实现方式中,该方法还包括:在最近任务界面中显示第一终端最近运行的应用程序对应的第二任务卡片。
15.在第二方面一种可能的实现方式中,该控件还包括第一终端的标识,该方法还包括:在最近任务界面中显示第二任务卡片之前,第一终端接收用户对第一终端的标识的操
作。
16.在第二方面一种可能的实现方式中,该方法还包括:在第二操作之前,第一终端在最近任务界面中显示第二任务卡片;在第二操作之后,第一终端停止显示第二任务卡片。
17.在第二方面一种可能的实现方式中,该方法还包括:在第二操作之后,第一终端在该最近任务界面中继续显示第二任务卡片。
18.在第二方面一种可能的实现方式中在第一终端设备显示第一用户界面之前,该方法还包括:接收第二终端设备发送的任务栈,该任务栈包括第一活动记录和第二活动记录;其中,第一活动记录包括第一用户界面的界面数据和第一用户界面的用户数据,第二活动记录包括第二用户界面的界面数据和第二用户界面的用户数据。在该实现方式中,第一终端设备可以基于上述任务栈恢复并显示第二终端设备上之前打开过的用户界面。
19.在第二方面一种可能的实现方式中,第一活动记录和第二活动记录相邻存储于该任务栈中,第一活动记录早于第二活动记录被第一终端设备读取出来,在第一终端设备显示第一用户界面之前,该方法还包括:基于第一用户界面的界面数据生成第一用户界面,并基于第一用户界面的用户数据保存第一用户界面的状态;在第一终端设备显示第二用户界面之前,该方法还包括:基于第二用户界面的界面数据生成第二用户界面,并基于第二用户界面的用户数据保存第二用户界面的状态。这样,第一终端设备可以基于上述任务栈中携带的信息先恢复第一用户界面同时还可以保存第一用户界面的用户使用状态,在用户进行返回操作时,再恢复第二用户界面同时还可以保存第二用户界面的用户使用状态。
20.在第二方面一种可能的实现方式中,该方法还包括:利用多线程并行接收的方式接收第二终端发送的多个分段数据,该多个分段数据为第一应用程序的应用数据流经过分割后得到的;接收第二终端发送的索引表,该索引表用于指示该多个分段数据在第二终端的分布式文件系统中的存储路径以及前后顺序关系;根据接收到的多个分段数据和该索引表,恢复第一应用程序的应用数据流;在检测到第三操作之后,根据第三操作以及第一应用程序的应用数据流,运行第一应用程序。在该实现方式中,在终端之间进行应用的数据迁移的过程中,对应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端,对端终端根据接收到的分段数据以及索引表恢复应用数据,从而可以支持200kb以上的应用的数据流的迁移,提高了应用数据流迁移的效率,提高用户体验。
21.在第二方面一种可能的实现方式中,该多个分段数据中每个分段数据的数据量是固定的,和/或,该索引表包括:该多个分段数据中每个分段数据对应的消息头信息;其中,每个分段数据对应的消息头信息包括:每个分段数据的段号与分段数据路径之间的对应关系、每个分段数据的长度信息、开始标识信息以及结束标识信息。
22.在第二方面一种可能的实现方式中,该方法还包括:接收用户的第五操作,第五操作用于触发向第二终端发送第一任务指令,第一任务指令用于指示第二终端清理第一应用程序;向第二终端发送第一信息,第一信息包括:第一任务指令的信息;根据第一任务指令,尝试持有第二本地锁,第二本地锁用于保证第二终端上的第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有。在该实现方式中,保证了同一时间内目标设备(第二终端)只执行来自于一个设备的任务指令,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
23.在第二方面一种可能的实现方式中,该方法还包括:根据第一任务指令,尝试持有第一终端的第一本地锁,第一本地锁用于保证第一终端在同一时间内只能向一个设备发送一个任务指令,第一本地锁在同一时间只能被一个设备持有,其中,第一终端成功持有第一本地锁。在该实现方式中,由于第一终端成功持有该任务指令对应的第一本地锁,证明第一终端当前并没有向第二终端发送其他的跨设备任务指令,即该任务指令可以占有第一本地锁,保证了第一终端向第二终端发送出去的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。
24.在第二方面一种可能的实现方式中,该至少一个任务卡片中还包括第二终端桌面第一屏快照对应的第三任务卡片,其中,第三任务卡片上存在界面能力fa卡片、悬浮窗、悬浮球中的至少一种;该方法还包括:在第一终端的最近任务界面中显示第二终端的任务卡片时,第一终端按照第二终端横屏使用时、竖屏使用时、折叠屏的展开态竖屏使用时、折叠屏的展开态横屏使用时、折叠屏的折叠态横屏使用时、折叠屏的折叠态竖屏使用时的任意一种,在第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片。在该实现方式中,利用用户对第二终端的使用状态、用户对第一终端的使用状态、以及第一终端的屏幕大小第一终端的最近任务界面中单排显示或者多排显示该至少一个任务卡片,可以提高第二终端的任务卡片显示的效率,方便用户在一个设备上查看和管理其他设备的历史任务,提高用户体验。
25.在第二方面一种可能的实现方式中,该方法还包括:利用第一终端的硬件能力运行第一应用程序;或者,利用第二终端的硬件能力运行第一应用程序;或者,利用第一终端和第二终端的硬件能力运行第一应用程序。在该实现方式中,可以提高第一终端运行第一应用程序的灵活性,保证第一终端运行第一应用程序的效率。
26.第三方面,提供了一种任务迁移的系统,该系统包括第一终端和第二终端,第二终端用于:运行第一应用程序;第一终端用于:接收来自用户的第六操作;根据第六操作显示第三用户界面,第三用户界面包括控件,该控件包括第二终端的标识;响应于用户对于第二终端的标识的第七操作,显示第四用户界面,第四用户界面包括第二终端桌面上应用程序的标识;响应于用户对第二终端桌面上应用程序的标识中第一应用程序的标识的第八操作,运行第一应用程序。
27.第三方面提供的任务迁移的系统,在第一终端可以显示其他设备的桌面应用程序,可以在第一终端实现超级桌面的功能,便于用户在第一终端上对其他终端的桌面应用程序进行操作和管理,对用户友好,提高用户体验。
28.在第三方面一种可能的实现方式中,第一终端还用于:接收用户对第二终端的桌面应用程序标识的第九操作,第九操作包括:对桌面应用的排序、创建文件夹、删除桌面应用中的至少一种;显示第九操作后的第二终端的桌面应用程序标识;第二终端还用于:显示第九操作后的第二终端的桌面应用程序标识。在该实现方式中,可以使得用户在第一终端上管理第二终端的桌面应用,方便用户操作,对用户友好,提高用户体验。
29.在第三方面一种可能的实现方式中,第一终端还用于:利用悬浮窗、分屏或者全屏的方式显示第一应用程序。在该实现方式中,提高了第一终端显示第二应用程序的灵活性,提高用户体验。
30.第四方面,提供了一种任务迁移的方法,该方法应用于第一终端,该方法包括:接
收来自用户的第六操作;根据第六操作显示第三用户界面,第三用户界面包括控件,该控件包括第二终端的标识;响应于用户对于第二终端的标识的第七操作,显示第四用户界面,第四用户界面包括第二终端桌面上应用程序的标识;响应于用户对第二终端桌面上应用程序的标识中第一应用程序的标识的第八操作,运行第一应用程序。
31.第四方面提供的任务迁移的系统,在第一终端可以显示其他设备的桌面应用程序,可以在第一终端实现超级桌面的功能,便于用户在第一终端上对其他终端的桌面应用程序进行操作和管理,对用户友好,提高用户体验。
32.在第四方面一种可能的实现方式中,该方法还包括:接收用户对第二终端的桌面应用程序标识的第九操作,第九操作包括:对桌面应用的排序、创建文件夹、删除桌面应用中的至少一种;显示第九操作后的第二终端的桌面应用程序标识。
33.在第四方面一种可能的实现方式中,该方法还包括:利用悬浮窗、分屏或者全屏的方式显示第二应用程序。
34.在第四方面一种可能的实现方式中,该方法还包括:按照第二终端的桌面应用布局形式,显示第二终端的桌面应用标识;或者,按照第一终端的桌面应用布局形式,显示第二终端的桌面应用标识。在该实现方式中,提高了第一终端显示其他终端的桌面应用程序的灵活性,提高用户体验。
35.第五方面,提供了一种任务迁移的系统,该系统包括第一终端和第二终端,该方法包括:第一终端显示最近任务界面,该最近任务界面中显示第二终端的图标以及至少一个任务卡片;在第一终端的最近任务界面中显示第二终端的任务卡片时,根据用户对第二终端的使用状态,在第一终端的最近任务界面中布局第二终端的任务卡片;其中,该用户对第二终端的使用状态,包括:横屏使用状态、竖屏使用状态、折叠屏的展开态竖屏使用状态、折叠屏的展开态横屏使用状态、折叠屏的折叠态横屏使用状态、折叠屏的折叠态竖屏使用状态中的任意一种。
36.第五方面提供的任务迁移的系统,利用用户对第二终端的使用状态、用户对第一终端的使用状态、以及第一终端的屏幕大小第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片,可以提高第二终端的任务卡片显示的效率,方便用户在一个设备上查看和管理其他设备的历史任务,提高用户体验。
37.示例性的,第一终端或者第二终端可以包括:手机、大屏设备、平板电脑、pc、车机、折叠屏设备等。
38.在第五方面一种可能的实现方式中,在第一终端的最近任务界面中显示第二终端的任务卡片时,第二终端的任务卡片中包括第二终端桌面第一屏快照的任务卡片。在该实现方式中,第一终端的最近任务界面中可以显示第二终端的桌面快照,便于用户进行查看,提高用户体验。
39.在第五方面一种可能的实现方式中,在第二终端桌面第一屏快照的任务卡片上和/或第二终端桌面第二屏快照的任务卡片上存在fa卡片、悬浮窗、悬浮球中的至少一种。在该实现方式中,第二终端桌面快照上可以显示有fa卡片、悬浮窗、或者悬浮球,可以灵活的利用不同的方式在第一终端的最近任务界面中显示第二终端的任务卡片,提高了用户体验。
40.在第五方面一种可能的实现方式中,第一终端还用于:接收用户的对该fa卡片、悬
浮窗、或者悬浮球的第三操作;根据第三操作,在第一终端上显示第二终端桌面第一屏界面或者第二终端桌面第一屏界面,或者,在第一终端上运行fa卡片、该悬浮窗、或者该悬浮球对应的应用。在该实现方式中,用户可以对第二终端桌面快照上的fa卡片、悬浮窗、或者悬浮球进行操作,实现在本机上快速的显示或者打开该应用,操作简单,提高用户体验。
41.在第五方面一种可能的实现方式中,在第一终端的最近任务界面中显示第二终端的任务卡片时,第二终端的任务卡片中包括用于控制第二终端的控制设备的快照。在该实现方式中,可以灵活的在第一终端的最近任务界面中显示与第二终端相关的任务卡片,提高了用户体验。
42.在第五方面一种可能的实现方式中,第一终端还用于:接收用户的对该控制设备的快照的第四操作;根据第四操作,在第一终端上显示该控制设备的详情界面,或者远程控制第二终端。在该实现方式中,用户可以在第一终端上查看控制第二设备的控制设备的任务卡片,并且可以对该任务卡片进行操作,实现在本机上快速的控制第二终端设备,操作简单,提高用户体验。
43.例如,第二终端为大屏设备,该控制设备为遥控器。
44.在第五方面一种可能的实现方式中,在第一终端的最近任务界面中显示第二终端的任务卡片时,第二终端的任务卡片中包括:第二终端桌面应用的任务卡片。
45.在第五方面一种可能的实现方式中,第一终端还用于:接收用户对第二终端桌面应用的任务卡片上应用的第五操作;根据第五操作,在第一终端上管理该述第二终端桌面应用。在该实现方式中,用户可以在第一终端上查看第二终端桌面应用图标,并且可以对桌面应用图标进行操作,帮助第二终端管理应用(排序、创建文件夹、删除等),实现在本机上快速的帮助第二终端管理应用,操作简单,提高用户体验。
46.在第五方面一种可能的实现方式中,该系统还包括轻设备,轻设备包括用户使用的可穿戴设备、智能家居设备,在第一终端的最近任务界面中显示轻设备的任务卡片时,轻设备的任务卡片包括不同的轻设备正在运行的任务分别对应的任务卡片。在该实现方式中,在第一终端的最近任务界面中可以显示轻设备的任务卡片,丰富了第一终端的最近任务界面显示的任务卡片的类型,对用户比较友好。
47.示例性的,轻设备为iot设备、可穿戴设备以及智能家居设备等设备的总称。例如,轻设备可以包括:智能冰箱、智能空调、智能炒菜锅、智能油烟机、智能音箱、智能手表等。
48.在第五方面一种可能的实现方式中,第一终端还用于:接收用户对该设备的任务卡片的第六操作;根据第六操作,在第一终端上显示轻设备正在运行的任务的详情界面,或者远程控制轻设备正在运行的任务。在该实现方式中,用户可以在第一终端上查看关联的轻设备正在运行的任务对应的任务卡片,并且可以对轻设备正在运行的任务对应的卡片进行操作,实现远程控制轻设备正在运行的任务,操作简单,提高用户体验。
49.在第五方面一种可能的实现方式中,该系统还包括第三终端,第一终端还用于:接收用户对该轻设备的任务卡片的第七操作;根据第七操作,将该轻设备的任务卡片分享至第三终端;第三终端在最近任务界面中显示该轻设备的任务卡片。在该实现方式中,可以实现将轻设备的任务卡片推到第三终端上进行显示,便于用户在第三终端上控制轻设备正在运行的任务,可以提高用户体验。
50.在第五方面一种可能的实现方式中,第一轻设备还用于:在第一轻设备的显示界
面上显示第二轻设备正在运行的任务对应的任务卡片,接收用户对第二轻设备正在运行的任务对应的任务卡片的第八操作;根据第八操作,远程控制第二轻设备正在运行的任务。在该实现方式中,用户可以在轻设备上,远程控制其他轻设备正在运行的任务,操作简单,提高用户体验。
51.在第五方面一种可能的实现方式中,第一轻设备还用于:通过第一轻设备,和/或,与第一轻设备关联的设备对用户的身份进行验证;在该用户的身份验证通过后,在第一轻设备的显示界面上显示第一终端和/或第二终端的任务卡片。
52.第六方面,提供了一种任务迁移的方法,该方法应用于第一终端,该方法包括:第一终端显示最近任务界面,该最近任务界面中显示第二终端的图标以及至少一个任务卡片,n个设备包括第一终端和第二终端;在第一终端的最近任务界面中显示第二终端的任务卡片时,按照第二终端横屏使用时、竖屏使用时、折叠屏的展开态竖屏使用时、折叠屏的展开态横屏使用时、折叠屏的折叠态横屏使用时、折叠屏的折叠态竖屏使用时的任意一种,在第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片。
53.第六方面提供的任务迁移的方法,利用用户对第二终端的使用状态、用户对第一终端的使用状态、以及第一终端的屏幕大小第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片,可以提高第二终端的任务卡片显示的效率,方便用户在一个设备上查看和管理其他设备的历史任务,提高用户体验。
54.在第六方面一种可能的实现方式中,第二终端的任务卡片中包括第二终端桌面第一屏快照的任务卡片和第二终端桌面第二屏快照的任务卡片。
55.在第六方面一种可能的实现方式中,在第二终端桌面第一屏快照的任务卡片上和/或第二终端桌面第二屏快照的任务卡片上存在界面能力fa卡片、悬浮窗、悬浮球中的至少一种。
56.在第六方面一种可能的实现方式中,该方法还包括:在第一终端的最近任务界面中显示轻设备的任务卡片,其中,轻设备的任务卡片包括不同的轻设备正在运行的任务分别对应的任务卡片。轻设备包括用户使用的可穿戴设备、智能家居设备。
57.在第六方面一种可能的实现方式中,第一应用对应的源设备为第二终端,在第一应用迁移至第一终端上运行过程中,该方法还包括:第一终端根据第一应用迁移到第一终端的不同模式,确定第一应用的运行状态;其中,第一应用迁移到第一终端的不同模式,包括:复制模式、基于窗口投屏技术的迁移模式以及利用界面能力fa技术的迁移模式。
58.在第六方面一种可能的实现方式中,第二应用对应的源设备为第一终端,在第二应用迁移至第二终端上运行过程中,该方法还包括:第一终端释放第二应用占用的第一终端的硬件能力;或者,第一终端不释放第二应用占用的第一终端的硬件能力。
59.第七方面,一种任务迁移的方法,其特征在于,该方法用于第一终端,该方法包括:开启最近任务界面,该任务界面包括第一应用程序对应的第一任务卡片,其中,第一应用程序为第二终端在后台运行的应用程序;接收用户对于第一任务卡片的第一操作,并指示第二终端对第一应用程序执行与第一操作对应的第二操作。
60.第七方面提供的任务迁移的方法,第一终端的用户可以通过在最近任务界面中对任务卡片进行第一操作,指示第二终端对该任务卡片对应的应用程序执行对应的第二操作,从而使得用户可以对第二终端最近使用的应用程序进行控制,提高了用户的体验。
61.在第七方面一种可能的实现方式中,接收用户对于第一任务卡片的第一操作,并指示第二终端对第一应用程序执行与第一操作对应的第二操作,具体包括:接收用户对于第一任务卡片的上划操作,指示第二终端清理第一应用程序;而当第二终端清理了第一应用程序之后,第一终端停止在最近任务界面中显示第一任务卡片。
62.在第七方面一种可能的实现方式中,最近任务界面还包括指示第一终端的第一控件以及指示第二终端的第二控件;接收用户对于第一任务卡片的第一操作,并指示第二终端对第一应用程序执行与第一操作对应的第二操作,具体包括:接收用户将第一任务卡片拖拽至第一控件处的操作,指示第二终端将第一应用程序迁移至第一终端;在此情况下,第一终端运行第一应用程序。
63.在第七方面一种可能的实现方式中,第一终端最近运行了第二应用程序,在最近任务界面中,第一终端的用户将第二应用程序的任务卡片拖拽至第二控件处,从而将第二应用程序迁移至第二终端处。
64.在第七方面一种可能的实现方式中,用户对于所述第一任务卡片的第一操作,指示所述第二终端对第一应用程序执行与所述第一操作对应的第二操作,包括:接收用户将第一任务卡片拖拽至第二控件处的操作,指示第二终端将第一应用程序改为前台运行。
65.第八方面,提供了一种任务迁移的方法,该方法包括:第一终端获取待传输的应用数据流;第一终端将该应用数据流分割为多个分段数据,并确定该多个分段数据对应的索引表,该索引表用于指示该多个分段数据在第一终端的分布式文件系统中的存储路径以及前后顺序关系;第一终端利用多线程并行传输的方式向第二终端发送该多个分段数据;第一终端向第二终端发送该索引表。
66.第八方面提供的任务迁移的方法,在终端之间进行应用的数据迁移的过程中,对应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端,对端终端根据接收到的分段数据以及索引表恢复应用数据,从而可以支持200kb以上的应用的数据流的迁移,提高了应用数据流迁移的效率,提高用户体验。
67.在第八方面一种可能的实现方式中,第一终端将该应用数据流分割为多个分段数据,包括:第一终端根据第一终端的线程池包括的线程总数,确定分段数;第一终端根据分段数,将该应用数据流分割为多个分段数据。
68.示例性的,可以将第一终端的线程池包括的线程总数确定为分段数,即分段数可以和线程池包括的线程总数相同。或者,还可以根据线程池包括的线程总数确定分段数,即分段数可以和线程池包括的线程总数不同。
69.示例性的,线程池包括的线程总数可以为第一终端cpu的核心数的2倍,则分段数也为第一终端的cpu的核心数的2倍。
70.在第八方面一种可能的实现方式中,如果字节流的值大于或者等于200kb,第一终端将应用数据流分割为多个分段数据。如果字节流的大小小于200kb,则第一终端通过将字节流写入parcel进行rpc传输的发送给第二终端。
71.在第八方面一种可能的实现方式中,该多个分段数据中每个分段数据的数据量是固定的。在该方案中,多个分段数据是利用多线程并行发送的,而不是串行发送的。多个分段数据可以分别发送,而不是将多个分段数据作为一个整体发送的。对端设备可以只根据
接收到的部分分段数据,就可以进行数据的恢复,或者,对端设备可以根据接收到的全部分段数据,进行数据的恢复,即分段数据是以并行流传输的方式发送的,这样可以很大程度提高数据传输的效率。
72.在第八方面一种可能的实现方式中,该索引表包括:该多个分段数据中每个分段数据对应的消息头信息。在该方案中,每个分段数据对应的消息头信息包括:每个分段数据的段号与分段数据路径之间的对应关系、每个分段数据的长度信息、开始标识信息以及结束标识信息。分段数据的消息头字段指示的信息或者内容位于索引表中,而不在分段数据中。
73.在第八方面一种可能的实现方式中,第一终端向第二终端发送该索引表,包括:第一终端通过将该索引表写入parcel进行rpc的方式向第二终端发送该索引表。即通过rpc的方式传输该索引表,第一终端使用intent保存索引表的数据,然后写入parcel传输。
74.在第八方面一种可能的实现方式中,索引表也可以利用和分段数据相同的方式进行传输。例如,可以将索引表按照分段数进行分段得到分段索引表数据,将分段索引表数据保存在分布式文件系统中,并建立每个分段索引表数据的段号与分段索引表数据路径的索引,然后利用多线程并行传输分段索引数据的方式向第二终端发送索引表。
75.在第八方面一种可能的实现方式中,待传输的应用数据流的数据量大于或者等于200kb。
76.在第八方面一种可能的实现方式中,该应用数据流包括:文档编辑应用的数据流、音频应用的数据流、视频应用的数据流、或者第一终端的最近运行的应用程序的数据流中的至少一种。
77.示例性的,第一终端的最近运行的应用程序(即第一终端在后台运行的应用程序)的数据流可以为第一终端的最近任务信息。
78.示例性的,在第一终端上可以显示最近任务界面,最近任务界面是系统ui中用于展示终端最近运行任务的界面。当触发第一终端打开最近任务界面时,第一终端的显示屏可以显示该终端最近运行的任务,或者说最近运行的应用程序(最近任务信息)。第一终端可以将自己的最近运行的应用程序的数据流(最近任务信息的数据流)发送给第二终端,在用户可以在第二终端上查看第一终端最近使用的应用程序,或者进一步的清理其第二终端最近使用的应用程序。
79.第九方面,提供了一种任务迁移的方法,该方法包括:第二终端利用多线程并行接收的方式接收第一终端发送的多个分段数据,该多个分段数据为待传输的应用数据流经过分割后得到的;第二终端接收第一终端发送的索引表,该索引表用于指示该多个分段数据在第二终端的分布式文件系统中的存储路径以及前后顺序关系;第二终端根据多个分段数据和该索引表,恢复该应用数据流。
80.第九方面提供的任务迁移的方法,在终端之间进行应用的数据迁移的过程中,对应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端,对端终端根据接收到的分段数据以及索引表恢复应用数据,从而可以支持200kb以上的应用的数据流的迁移,提高了应用数据流迁移的效率,提高用户体验。
81.在第九方面一种可能的实现方式中,该多个分段数据中每个分段数据的数据量是
固定的。
82.在第九方面一种可能的实现方式中,该索引表包括:该多个分段数据中每个分段数据对应的消息头信息。
83.在第九方面一种可能的实现方式中,每个分段数据对应的消息头信息包括:每个分段数据的段号与分段数据路径之间的对应关系、每个分段数据的长度信息、开始标识信息以及结束标识信息。
84.在第九方面一种可能的实现方式中,在该应用数据流为文档编辑应用的数据流的情况下,第二终端根据多个分段数据和该索引表,恢复该应用数据流,包括:第二终端在接收到所有的分段数据后,根据索引表,恢复该文档编辑应用的数据流。在该方案中,即第二终端需要在所有的分段数据均接收到以后才可以进行文档数据的恢复。
85.在第九方面一种可能的实现方式中,在该应用数据流为音频应用的数据流或者视频应用的数据流的情况下,第二终端根据多个分段数据和该索引表,恢复该应用数据流,包括:第二终端在接收到部分分段数据后,根据索引表,恢复该音频应用的数据流或者视频应用的数据流。在该方案中,第二终端并不需要在所有的分段数据均接收到以后才可以进行数据的恢复,而是可以接收到部分分段数据后就可以开始音频或者视频应用数据的恢复。换句话说,第二电子接收分段数据和恢复已经接收到的分段数据可以同时进行。在恢复音频或者视频应用数据后,用户可以在第二终端上获取当前音频或者视频的播放进度,开始继续播放。
86.在第九方面一种可能的实现方式中,该应用数据流包括:文档编辑应用的数据流、音频应用的数据流、视频应用的数据流、或者第一终端的最近运行的应用程序的数据流中的至少一种。
87.第十方面,提供了一种任务迁移的系统,该系统包括第一终端和第二终端,第一终端和第二终端通过网络进行连接,其中,第一终端用于:将待传输的应用数据流分割为多个分段数据,并确定该多个分段数据对应的索引表,该索引表用于指示该多个分段数据在第一终端的分布式文件系统中的存储路径以及前后顺序关系;利用多线程并行传输的方式向第二终端发送该多个分段数据;向第二终端发送该索引表。第二终端用于:根据接收到的多个分段数据和该索引表,恢复该应用数据流。
88.第十方面提供的任务迁移的系统,在终端之间进行应用的数据迁移的过程中,对应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端,对端终端根据接收到的分段数据以及索引表恢复应用数据,从而可以支持200kb以上的应用的数据流的迁移,提高了应用数据流迁移的效率,提高用户体验。
89.在第十方面一种可能的实现方式中,该多个分段数据中每个分段数据的数据量是固定的。
90.在第十方面一种可能的实现方式中,如果字节流的值大于或者等于200kb,第一终端将应用数据流分割为多个分段数据。如果字节流的大小小于200kb,则第一终端通过将字节流写入parcel进行rpc传输的发送给第二终端。
91.在第十方面一种可能的实现方式中,该索引表包括:该多个分段数据中每个分段数据对应的消息头信息;其中,每个分段数据对应的消息头信息包括:每个分段数据的段号
与分段数据路径之间的对应关系、每个分段数据的长度信息、开始标识信息以及结束标识信息。
92.在第十方面一种可能的实现方式中,第一终端还用于:通过将该索引表写入parcel进行远程过程调用rpc的方式向第二终端发送该索引表。
93.在第十方面一种可能的实现方式中,该应用数据流包括:文档编辑应用的数据流、音频应用的数据流、视频应用的数据流、或者第一终端的最近运行的应用程序(即在后台运行的应用程序)的数据流中的至少一种。
94.第十一方面,提供了一种任务迁移的系统,该系统包括第一终端和第二终端,第一终端和第二终端建立有通信连接,其中,第二终端用于:运行第一应用程序;第一终端用于:接收第二终端发送的第一用户界面的用户界面选项,第一用户界面是第一应用程序的用户界面;检测用户在第一用户界面的用户界面选项上的第一操作;显示第一用户界面;检测用户在第一用户界面上的第二操作;显示第二用户界面,第二用户界面是第一应用程序的用户界面,且与第一用户界面不同。
95.第十一方面提供的任务迁移的系统,第一终端与第二终端之间可以进行任务迁移,这样,可以使得用户可以在第一终端上执行第二终端上的任务,提高了用户体验。
96.在第十一方面一种可能的实现方式中,第二操作为返回操作,第二用户界面是第一用户界面的父用户界面。这样,用户也可以通过在第一终端上执行相同的操作来实现与在第二终端上同样的用户界面显示顺序。
97.在第十一方面一种可能的实现方式中,在第一终端显示第一用户界面之前,第一终端还用于:接收到第二终端发送的任务栈,该任务栈包括第一活动记录和第二活动记录;其中,第一活动记录包括第一用户界面的界面数据和第一用户界面的用户数据,第二活动记录包括第二用户界面的界面数据和第二用户界面的用户数据。这样,第一终端可以基于上述任务栈恢复并显示第二终端上之前打开过的用户界面。
98.在第十一方面一种可能的实现方式中,第一活动记录和第二活动记录相邻存储于该任务栈中,第一活动记录早于第二活动记录被第一终端读取出来,在第一终端显示第一用户界面之前,第一终端还用于:基于第一用户界面的界面数据生成第一用户界面,并基于第一用户界面的用户数据保存第一用户界面的状态;在第一终端显示第二用户界面之前,第一终端还用于:基于第二用户界面的界面数据生成第二用户界面,并基于第二用户界面的用户数据保存第二用户界面的状态。这样,第一终端可以基于上述任务栈中携带的信息先恢复第一用户界面同时还可以保存第一用户界面的用户使用状态,在用户进行返回操作时,再恢复第二用户界面同时还可以保存第二用户界面的用户使用状态。
99.在第十一方面一种可能的实现方式中,在第一终端检测用户在第一用户界面的用户界面选项上的第一操作之前,第一终端还用于:显示第三用户界面,第三用户界面包括:控件、第二终端最近运行过的应用程序的用户界面选项,该控件包括第一终端的标识和第二终端的标识,第二终端最近运行过的应用程序的用户界面选项包括第一用户界面的用户界面选项。这样,用户可以查看第一终端和第二终端最近运行过的应用程序,并可以点击第二终端最近运行过的应用程序的用户界面选项在第一终端上显示第一用户界面。
100.在第十一方面一种可能的实现方式中,在第一终端显示第三用户界面之前,第一终端还用于:检测用户的第三操作,第三操作用于指示第一终端显示第三用户界面;向第二
终端发送第二请求,第二请求用于指示第二终端向第一终端发送最近运行过的应用程序在进入后台运行时系统截取的用户界面的快照。这样,可以在保障用户体验的前提下,减少同步最近任务信息产生的流量或电量的消耗。
101.在第十一方面一种可能的实现方式中,在接收到第二终端发送的任务栈之前,第一终端还用于:向第二终端发送第一请求,第一请求用于指示第二终端向第一终端发送该任务栈。这样,可以在保障用户体验的前提下,减少同步最近任务信息产生的流量或电量的消耗。
102.在第十一方面一种可能的实现方式中,在第一终端接收第二终端发送的第一用户界面的用户界面选项之前,第一终端还用于:与第二终端建立可信关系。这样,有利于保护用户的隐私,增加了本方案的安全性。
103.在第十一方面一种可能的实现方式中,该系统还包括第三终端,第三终端与第一终端建立有通信连接,第三终端用于:接收第一终端发送的第一用户界面的用户界面选项,第一用户界面是第一应用程序的用户界面;检测用户在第一用户界面的用户界面选项上的第一操作;显示第一用户界面;检测用户在第一用户界面上的第二操作;显示第二用户界面,第二用户界面是第一应用程序的用户界面,且与第一用户界面不同。这样,第一终端也可以使用同样的方式向第三终端进行任务迁移。
104.第十二方面,提供了一种任务迁移的方法,该方法应用于第一终端,该方法包括:第一终端接收第二终端发送的第一用户界面的用户界面选项,第一用户界面是第一应用程序的用户界面,第一应用程序是第二终端最近运行过的应用程序;第一终端检测到用户在第一用户界面的用户界面选项上的第一操作;第一终端显示第一用户界面;第一终端检测到用户在第一用户界面上的第二操作;第一终端显示第二用户界面,第二用户界面是第一应用程序的用户界面,且与第一用户界面不同。
105.在第十二方面一种可能的实现方式中,第一操作为返回操作,第二用户界面是第一用户界面的父用户界面。
106.在第十二方面一种可能的实现方式中,在第一终端显示第一用户界面之前,该方法还包括:第一终端接收到第二终端发送的任务栈,该任务栈包括第一活动记录和第二活动记录;其中,第一活动记录包括第一用户界面的界面数据和第一用户界面的用户数据,第二活动记录包括第二用户界面的界面数据和第二用户界面的用户数据。
107.在第十二方面一种可能的实现方式中,第一活动记录和第二活动记录相邻存储于该任务栈中,第一活动记录早于第二活动记录被第一终端读取出来,在第一终端显示第一用户界面之前,该方法还包括:第一终端基于第一用户界面的界面数据生成第一用户界面,并基于第一用户界面的用户数据保存第一用户界面的状态;在第一终端显示第二用户界面之前,该方法还包括:第一终端基于第二用户界面的界面数据生成第二用户界面,并基于第二用户界面的用户数据保存第二用户界面的状态。
108.在第十二方面一种可能的实现方式中,在第一终端检测用户在第一用户界面的用户界面选项上的第一操作之前,该方法还包括:第一终端显示第三用户界面,第三用户界面包括:控件、第二终端最近运行过的应用程序的用户界面选项,该控件包括第一终端的标识和第二终端的标识,第二终端最近运行过的应用程序的用户界面选项包括第一用户界面的用户界面选项。
109.在第十二方面一种可能的实现方式中,在第一终端显示第三用户界面之前,该方法还包括:第一终端检测到用户的第三操作,第三操作用于指示第一终端显示第三用户界面;第一终端向第二终端发送第二请求,第二请求用于指示第二终端向第一终端发送最近运行过的应用程序在进入后台运行时系统截取的用户界面的快照。
110.在第十二方面一种可能的实现方式中,在接收到第二终端发送的任务栈之前,该方法还包括:第一终端向第二终端发送第一请求,第一请求用于指示第二终端向第一终端发送该任务栈。
111.在第十二方面一种可能的实现方式中,在第一终端显示第一用户界面之前,该方法还包括:第一终端与第二终端建立可信关系。
112.第十三方面,提供了一种的任务迁移的方法,应用于第二终端,该方法包括:第二终端接收第一终端发送的第二请求,第二请求用于指示第二终端向第一终端发送最近运行过的应用程序在进入后台运行时系统截取的用户界面的快照;第二终端向第一终端发送最近运行过的应用程序在进入后台运行时系统截取的用户界面的快照。
113.在第十三方面一种可能的实现方式中,该方法还包括:第二终端接收第一终端发送的第一请求,第一请求用于指示第二终端向第一终端发送任务栈。第二终端向第一终端发送该任务栈。
114.第十四方面,提供了一种任务迁移的系统,该系统包括第一终端、第二终端以及第三终端,第一终端、第二终端和第三终端通过网络进行连接,第一终端用于:接收用户的第一操作,第一操作用于触发向第二终端发送第一任务指令;向第二终端发送第一信息,第一信息包括:第一任务指令的信息;根据第一任务指令,尝试持有第二本地锁,第二本地锁用于保证第二终端上的第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有;第三终端用于,接收用户的第二操作,第二操作用于触发向第二终端发送第二任务指令;向第二终端发送第二信息,第二信息包括:第二任务指令的信息;根据第二任务指令,尝试持有第二本地锁;第二终端用于:执行持有第二本地锁的终端发送的任务指令,其中,第一终端或者第二终端持有第二本地锁。
115.第十四方面提供的任务迁移的系统,通过在目标设备的应用程序上创建本地锁,该本地锁在同一时间只能被一个其他设备持有。哪个设备成功持有该本地锁,目标设备上的这个应用程序便可以执行来自于该设备的任务,在该设备持有该本地锁的期间,目标设备不会执行其他设备发送的任务指令,保证了同一时间内目标设备只执行来自于一个设备的任务指令,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
116.在第十四方面一种可能的实现方式中,第二本地锁用于保证第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有,即第二本地锁为应用程序级别的,对于第二终端上的同一个应用程序,只能在同一时间执行来自于一个设备的任务指令,不能在同一时间执行来自于不同设备的任务指令。
117.在第十四方面一种可能的实现方式中,第二本地锁用于保证第二终端上的第二应用程序和第一应用程序中,在同一时间只有一个应用程序执行来自于同一个设备的任务指令。即第二本地锁为设备级别的。第二本地锁用于保证第二终端在某一时间或者某个时间段内只会执行来自于一个设备的任务指令。如果哪个设备成功持有第二本地锁,则意味着
第二终端可以执行该设备发送的任务指令。未持有第二本地锁的其他设备不会向第二终端发送任务指令,或者,即使向第二终端发送任务指令,第二终端也不会执行该任务指令。换句话说,在同一时间内,除第二终端外,第二本地锁只能被一个设备持有。
118.在第十四方面一种可能的实现方式中,第一终端还用于:根据第一任务指令,尝试持有第一终端的第一本地锁,第一本地锁用于保证第一终端在同一时间内只能向一个设备发送一个任务指令,第一本地锁在同一时间只能被一个设备持有。在该方案中,第一本地锁用于保证第一终端在同一时间内只能向一个设备(例如第二终端)发送一个任务指令,第一本地锁可以为抢占式的跨设备任务锁。对于第一终端而言,如果同一时间需要向第二终端发送多个任务指令(多进程或者多线程任务),则哪个任务指令成功持有或者抢占到第一本地锁,则第一终端可以向第二终端发送该任务指令。如果第一终端在同一时间内只需要向第二终端发送一个任务指令,则该任务指令持有第一本地锁。换句话说,在同一时间内,第一本地锁只能被第一终端上的一个跨设备任务指令持有。
119.例如:用户在第二终端的视频应用程序的任务卡片对应的区域做出上划的操作时,触发了用于清理第二终端视频应用程序的任务指令,与此同时,第一终端的后台的应用管家也向第二终端发送一个任务指令,该任务指令用于清理第二终端上音乐应用程序,或者用于运行第二终端上的视频应用程序,在这种情况下,这两个任务指令会抢占第一本地锁,哪个任务指令抢占到第本地锁,则第一终端可以向第二终端发送哪个任务指令。
120.在第十四方面一种可能的实现方式中,该系统还包括第四终端,第四终端用于:接收用户的第三操作,第三操作用于触发向第一终端发送第三任务指令;向第一终端发送第三信息,第三信息包括:第三任务指令的信息;尝试持有第一本地锁,第一本地锁还用于保证第一终端在与第二终端设备合作执行跨设备任务指令的过程中,第一终端不执行其他设备发送的任务指令,或者,第一终端不向其他设备发送的任务指令,第一本地锁在同一时间只能被一个设备持有;第一终端还用于:在第四终端持有第一本地锁失败的情况下,不执行第三任务指令。
121.在该方案中,通过在和目标设备合作执行跨设备任务的设备上也设置设备锁,该设备锁在同一时间只能被一个设备持有,在该设备与目标设备合作执行跨设备任务期间,该设备持有该设备锁,从而保证该设备不会在参与或者不会执行与其他设备之间的跨设备任务,即保证该设备在同一时间只参与到和一个设备之间的跨设备任务中,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
122.在第十四方面一种可能的实现方式中,第一终端还用于:接收用户的第四操作,第四操作用于触发向第二终端发送第四任务指令;根据第一任务指令和第四任务指令,生成任务队列,该任务队列中第一任务指令和第四任务指令的先后顺序为对应的操作的先后顺序;其中,第一信息包括:该任务队列包括的任务指令的信息。在该方案中,通过在目标设备上创建本地锁,该本地锁在同一时间只能被一个设备持有。哪个设备成功持有该分布式任务锁,目标设备便可以接收来自于该设备的任务队列,并且按照任务队列中包括的多个任务指令的先后顺序依次执行多个任务指令,保证了来自于同一个设备的多个任务指令按顺序执行,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
123.在第十四方面一种可能的实现方式中,第一信息还包括:第二本地锁的持锁超时时间;第一终端还用于:在第一终端持有第二本地锁的时间长度大于或者等于该持锁超时
时间后,释放第二本地锁。
124.在第十四方面一种可能的实现方式中,在第二终端执行完第一信息或者第二信息包括的任务指令后,第二终端还用于:向第一终端或者第三终端发送反馈信息,该反馈信息用于指示第二终端已经执行完任务指令;第一终端或者第三终端还用于:根据反馈信息,释放第二本地锁。
125.示例性的,如果第一信息中的任务指令为清理第二终端在后台运行的视频应用程序,则第一终端接收到该反馈信息后,可以向第一终端的全局任务中心发送通知,指示全局任务中心刷新最近任务界面,而视频应用将不在刷新后的最近任务界面中显示,或者不在最近任务界面中第二终端对应的最近任务列表中显示。
126.在第十四方面一种可能的实现方式中,第一终端还用于:在第一终端的最近任务界面中显示第二终端在后台运行的应用程序的标识;第三终端还用于:在第三终端的最近任务界面中显示第二终端在后台运行的应用程序的标识;第一任务指令用于指示第二终端清理在后台运行的第一应用程序;第二任务指令用于指示第二终端运行第一应用程序。
127.示例性的,当用户在第二终端的视频应用程序的任务卡片对应的区域做出上划的操作时,则触发用于清理第二终端视频应用程序的任务指令。当第三终端的用户在第二终端的视频应用程序的任务卡片对应的区域做出点击的手势时,则触发用于运行第二终端视频应用程序的任务指令。
128.在第十四方面一种可能的实现方式中,第一终端还用于:在第一终端持有第二本地锁失败的情况下,在第一终端的界面上向用户显示通知消息,该通知消息用于通知用户第一任务指令执行失败。
129.在第十四方面一种可能的实现方式中,第一任务指令用于指示:向第二终端发送第一终端上第一应用的数据流;第三任务指令用于指示:第一终端停止运行第一应用。例如,第一终端向第二终端上发送的任务指令为:将第一终端上视频应用程序的数据流迁移到第二终端上,同时,第四终端需要向第一终端设备的发送任务指令为停止运行第一终端上的视频应用程序,在这种情况下,由于第四终端尝试持有第一终端的设备锁失败,因此,不向第一终端发送任务指令,或者,即使向第一终端发送任务指令,第一终端发现第四终端未持有第一终端的设备锁,也不会执行该任务指令。
130.第十五方面,提供一种任务迁移的方法,该方法用于第一终端该方法包括:接收用户的第一操作,第一操作用于触发向第二终端发送第一任务指令;向第二终端发送第一信息,第一信息包括:第一任务指令的信息;根据第一任务指令,尝试持有第二本地锁,第二本地锁用于保证第二终端上的第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有;在显示界面上向用户显示通知消息,该通知消息用于通知用户第一任务指令执行失败或者成功。
131.第十五方面提供的方法,通过在目标设备的应用程序上创建本地锁,该本地锁在同一时间只能被一个其他设备持有。哪个设备成功持有该本地锁,目标设备上的这个应用程序便可以执行来自于该设备的任务,在该设备持有该本地锁的期间,目标设备不会执行其他设备发送的任务指令,保证了同一时间内目标设备只执行来自于一个设备的任务指令,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
132.在第十五方面一种可能的实现方式中,第二本地锁用于保证第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有,即第二本地锁为应用程序级别的,对于第二终端上的同一个应用程序,只能在同一时间执行来自于一个设备的任务指令,不能在同一时间执行来自于不同设备的任务指令。
133.在第十五方面一种可能的实现方式中,第二本地锁用于保证第二终端上的第二应用程序和第一应用程序中,在同一时间只有一个应用程序执行来自于同一个设备的任务指令。即第二本地锁为设备级别的。第二本地锁用于保证第二终端在某一时间或者某个时间段内只会执行来自于一个设备的任务指令。如果哪个设备成功持有第二本地锁,则意味着第二终端可以执行该设备发送的任务指令。未持有第二本地锁的其他设备不会向第二终端发送任务指令,或者,即使向第二终端发送任务指令,第二终端也不会执行该任务指令。换句话说,在同一时间内,除第二终端外,第二本地锁只能被一个设备持有。
134.在第十五方面一种可能的实现方式中,根据第一任务指令,尝试持有第一终端的第一本地锁,第一本地锁用于保证第一终端在同一时间内只能向一个设备发送一个任务指令,第一本地锁在同一时间只能被一个设备持有。
135.在第十五方面一种可能的实现方式中,该方法还包括:接收第四终端发送的第三信息,第三信息包括:第三任务指令的信息;在第一终端持有第一终端的第一本地锁的情况下,第一终端不执行第三任务指令,其中,第一本地锁用于保证第一终端在与第二终端设备合作执行跨设备任务指令的过程中,第一终端不执行其他设备发送的任务指令,或者,第一终端不向其他设备发送的任务指令,第一本地锁在同一时间只能被一个设备持有。
136.在第十五方面一种可能的实现方式中,在第一终端持有第二本地锁的情况下,第一信息还包括:第二本地锁的持锁超时时间,该方法还包括:在第一终端持有第二本地锁的时间长度大于或者等于该持锁超时时间后,释放第二本地锁。
137.在第十五方面一种可能的实现方式中,在第一终端持有第二本地锁的情况下,该方法还包括:接收第二终端发送反馈信息,该反馈信息用于指示第二终端已经执行完任务指令;根据反馈信息,释放第二本地锁。
138.在第十五方面一种可能的实现方式中,该方法还包括:在第一终端的最近任务界面中显示第二终端在后台运行的应用程序的标识,其中,第一任务指令用于指示第二终端清理在后台运行的第一应用程序。
139.在第十五方面一种可能的实现方式中,第一任务指令用于指示:向第二终端发送第一终端上第一应用的数据流;第三任务指令用于指示:第一终端停止运行第一应用。在第一终端未持有第二本地锁的情况下,该通知消息用于通知用户第一任务指令执行失败。
140.第十六方面,提供了一种通信装置,该通信装置包括用于执行以上任意一方面或者任意一方面的任意一方面可能的实现方式中由终端设备执行的各个步骤的单元。
141.第十七方面,提供了一种通信装置,该通信装置包括至少一个处理器和存储器,该处理器和存储器耦合,该存储器存储有程序指令,当该存储器存储的程序指令被该处理器执行时,执行以上任意一方面或者任意一方面的任意一方面可能的实现方式中由终端设备执行的各个步骤。
142.第十八方面,提供了一种通信装置,该通信装置包括至少一个处理器和接口电路,至少一个处理器用于执行:以上任意一方面或者任意一方面中的任意一方面可能的实现方
式中由终端设备执行的各个步骤。
143.第十九方面,提供了一种终端设备,该终端设备包括上述第十六方面、第十七方面或者第十八方面提供的任一种通信装置。
144.第二十方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序在被处理器执行时,用于执行任意一方面或者任意一方面中的任意可能的实现方式中由终端设备执行的各个步骤。
145.第二十一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序被执行时,用于执行任意一方面或者任意一方面中的任意可能的实现方式中由终端设备执行的各个步骤。
146.第二十二方面,提供了一种芯片,该芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的通信设备执行任意一方面或者任意一方面中的任意可能的实现方式中由终端设备执行的各个步骤。
附图说明
147.图1是适用于本技术实施例中一种通信系统的示意图。
148.图2(a)-图2(c)是本技术提供的一种显示最近任务界面以及在最近任务界面中进行滑动操作的界面示意图。
149.图3(a)-图3(b)是本技术提供的一种在最近任务界面中进行触摸操作的界面示意图。
150.图3(c)-图3(e)是显示本机和其他终端的最近任务列表的实现方式的界面示意图。
151.图3(f)是显示本机和其他终端的最近任务列表的实现方式的界面示意图。
152.图3(g)-图3(i)是一种通过软件模块传输最近任务信息的方式的示意图。
153.图3(j)-图3(u)是一种第一终端向第二终端发起建立可信请求的界面示意图。
154.图3(v)-图3(z)是一种第二终端接收第一终端的可信请求的界面示意图。
155.图4(a)-图4(b)是一种清理其他终端的最近使用的应用程序的界面示意图。
156.图4(c)-图4(e)是一种终端间进行应用程序迁移的界面示意图。
157.图4(f)-图4(h)是一种显示其他终端的应用程序使用时间的界面示意图。
158.图4(i)是本技术实施例所提供的一种流程示意图。
159.图4(j)是本技术实施例所提供的另一种流程示意图。
160.图4(k)-图4(l)是本技术提供的一种确定第一终端的最近任务界面中显示其他终端的任务卡片的布局的流程示意图。
161.图5(a)-图6(e)是本技术提供在第一终端的最近任务界面中显示其他不同终端的任务卡片的不同布局的界面示意图。
162.图7(a)-图7(q)是本技术提供在第一终端的最近任务界面中最后一个任务卡片显示的不同内容的界面示意图。
163.图7(r)-图7(s)是本技术提供在轻设备显示其他设备的任务卡片的界面示意图。
164.图8(a)是本技术提供的一种基于不同的迁移模式,确定在第一终端的最近任务界面上拉起远端设备的任务卡片时显示的状态、应用的运行状态的流程示意图。
165.图8(b)-图8(n)是本技术提供的基于不同的迁移模式,第一应用的在不同的设备上的运行状态的界面示意图。
166.图8(o)-图8(p)是本技术提供的在第一终端的最近任务界面中对于任务卡片的操作,帮助其他设备安装应用的界面示意图。
167.图8(q)-图8(u)是本技术提供的在第一终端的最近任务界面中,对于不同的任务卡片进行操作,建立多个任务卡片的不同显示形式的界面示意图。
168.图8(v)-图8(w)是本技术提供的任务迁移后,源设备和目标设备之间连接中断后显示的界面示意图。
169.图9(a)-图9(v)是本技术提供的在第一终端的最近任务界面中,对任务卡片的操作,进行任务卡片的迁移的界面示意图。
170.图10(a)-图10(c)是本技术提供的在应用迁移至目标设备后,目标设备从黑屏状态到显示该应用的界面示意图。
171.图11(a)-图11(k)是本技术提供的在应用从源设备迁移至目标设备后,根据应用涉及的硬件能力不同分配情况,该应用运行的界面示意图。
172.图12(a)是本技术提供的一种在车机的最近任务界面中显示手机的任务卡片的界面示意图。
173.图12(b)是本技术提供的一种在车机的最近任务界面中显示pc设备的任务卡片的界面示意图。
174.图12(c)是本技术提供的一种在pc设备的最近任务界面中显示手机的任务卡片的界面示意图。
175.图13是本技术提供的一种在第二终端的最近任务界面中,将第一终端的任务卡片迁移至第三终端上的界面示意图。
176.图14(a)-图14(s)是本技术提供的一种在不同的设备上显示的超级桌面的界面示意图。
177.图15(a)-图15(g)是本技术提供的一种在不同的设备上显示的超级桌面的入口以及超级桌面布局的界面示意图。
178.图16(a)-图16(h)是本技术提供的一种终端设备在临时组件超级桌面的过程中,终端设备显示的界面示意图。
179.图17是本技术实施例所提供的一种流程示意图。
180.图18是本技术提供的一例第一终端向第二终端迁移应用数据流过程中内部系统架构的示意图。
181.图19是本技术提供的一例流程示意图。
182.图20是本技术提供的另一例流程示意图。
183.图21a-图21b是本技术实施例提供的一种常见的任务迁移的场景示意图。
184.图22a-图22e是本技术实施例提供的另一种常见的任务迁移的场景示意图。
185.图23a-图23g是本技术实施例提供的一组不同终端设备之间进行任务迁移的用户界面示意图。
186.图24a-图24g是本技术实施例提供的另一组不同终端设备之间进行任务迁移的用户界面示意图。
187.图25a-图25b是本技术实施例提供的不同终端设备之间进行任务迁移的原理示意图。
188.图26是本技术实施例提供的一例流程示意图。
189.图27是本技术提供的一例流程示意图。
190.图28是本技术提供的一例终端向用户提示跨设备任务指令发送或者执行失败的界面示意图。
191.图29是本技术提供的另一例终端向用户提示跨设备任务指令发送或者执行失败的界面示意图。
192.图30是本技术提供的另一例流程示意图。
193.图31是本技术提供的又一例流程示意图。
194.图32是本技术提供的又一例流程示意图。
195.图33是本技术提供的又一例流程示意图。
196.图34是本技术提供的一例终端的软件结构框图。
197.图35是本技术提供的另一例终端的软件结构框图。
198.图36是本技术提供的一例的终端的硬件结构示意图。
199.图37是本技术提供的一种芯片系统的示意图。
具体实施方式
200.目前用户拥有智能终端的种类越来越多,因此,产生了很多新的用户需求。
201.例如,用户在使用手机播放视频或进行文档编辑时,但是由于手机的屏幕较小,使用不方便,可以在大屏幕设备上进行视频播放或进行文档编辑更方便,因此,需要将手机上播放的视频或编辑的文档无缝迁移到另外一个大屏幕设备上。
202.又例如,用户经常在手机上同时进行购物和聊天,或者同时看视频和聊天等多任务并行的情况。在手机上进行多任务并行的场景中,可能会因为多任务导致画面被遮挡。因此,可以将不同的任务分别在用户使用的多个设备并行运行,既能保持多任务持续并行进行,又可以避免多任务导致画面被遮挡的情况。
203.再例如,有时候用户使用的设备需要充电,但是又想在该设备上继续没处理完的任务,在这种情况下,可以将该设备上的任务接续到另一个设备继续进行,从而使得用户可以继续刚才在该设备上没处理完的任务。
204.在上述的各个场景中,均涉及到应用或者任务在不用设备上的迁移(或者也可以称为接续)。
205.有鉴于此,本技术提供了一种任务迁移的系统和方法,在用户使用的终端上可以显示其他终端正在运行的或者之前运行的应用程序对应的任务卡片,可以方便用户在一个设备上查看和管理其他设备的历史任务,可以适用于几乎所有的应用,不需要应用进行适配。在显示其他设备的任务卡片时,可以利用多种不同的方式布局不同设备的任务卡片,用户可以简单的对任务卡片进行操作,便可以实现应用的迁移或者接续,满足用户对多设备任务进行管理和控制的需求,并且进一步简化应用接续的流程,简化用户操作,提高用户体验。
206.下面将具体说明本技术提供的远程设备任务的显示以及控制方法。
207.需要说明的是,在本技术实施例中,“终端设备”、“电子设备”以及“终端”均表示相同的含义,三者的表述可以互换。
208.以安卓(android)系统为例,该系统提供一个系统级的界面,用来显示最近访问过的任务列表,用户可以进行清理某个最近运行的应用程序或者清理所有最近运行的应用程序的操作。通过这种方法,可以清理终端本地的应用程序(app),而在分布式场景下,需要进一步展示、清理其他终端的最近使用的应用程序。
209.在一些示例性的实施例中,参考图1,图1是本技术提供的适用于本技术实施例中一种通信系统的示意图。
210.示例性的,如图1所示,通信系统10中可以包括各种终端设备(在本技术中,终端设备也可以称为电子设备),例如,手机101、平板电脑102、大屏设备103等。可选的,通信系统10中还可以包括智能冰箱104、智能空调105等智能家居设备。当智能终端为智能冰箱、空调等智能家居设备时,最近使用的应用程序可以指这些智能家居设备当前或者最近几次执行的任务。
211.当然,通信系统10中还可以包括其他更多的终端设备,例如:智能音箱、车载设备(也可称为车机)、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、手持计算机、上网本、个人数字助理(personal digital assistant,pda)、可穿戴电子设备、虚拟现实设备等iot(internet of things,物联网)设备等,图1中未示出。
212.本技术实施例对终端设备(例如手机101、平板电脑102或者大屏设备103)的类型不做具体限定,在一些实施例中,本技术实施例中的终端设备可以是手机、可穿戴设备(例如智能手环、智能手表、耳机等)、平板电脑、膝上型计算机(laptop)、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)\虚拟现实(virtual reality,vr)设备等设备,还可以是电视、大屏、音箱、电视机、冰箱、空调、车载设备、打印机、投影仪等设备。终端设备的示例性实施例包括但不限于搭载harmony或者其它操作系统的终端设备。
213.其中,通信系统10内的各个终端之间可以通过通信网络互联。
214.在一些示例性的实施例中,该通信网络可以是有线网络,也可以是无线网络。例如,上述通信网络可以是局域网(local area networks,lan),也可以是广域网(wide area networks,wan),例如互联网。上述通信网络可使用任何已知的网络通信协议来实现,上述网络通信协议可以是各种有线或无线通信协议,诸如以太网、通用串行总线(universal serial bus,usb)、火线(firewire)、全球移动通讯系统(global system for mobile communications,gsm)、通用分组无线服务(general packet radio service,gprs)、码分多址接入(code division multiple access,cdma)、宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte)、蓝牙、无线保真(wireless fidelity,wi-fi)、nfc、基于互联网协议的语音通话(voice over internet protocol,voip)、支持网络切片架构的通信协议或任何其他合适的通信协议。
215.也就是说,通信系统10内的各个终端可按照一定的通信协议和组网策略组建网络(即组网),使得音频系统内的各个终端之间可以互相通信。
216.在一些示例性的实施例中,通信系统10中的各个终端设备可接入路由器等接入点(access point,ap)提供的wi-fi网络,使得各个终端设备之间建立wi-fi连接。又例如,通信系统10中的各个终端可登录同一账号(例如华为账号),进而通过一个或多个服务器互联。
217.最近任务界面是系统用户界面(user interface,ui)中用于展示终端最近运行任务的界面。当触发终端打开最近任务界面时,终端的显示屏可以显示该终端最近运行的任务,或者说最近运行的应用程序。可选的,对于同一个应用程序的多个界面,最近任务界面中可能将该多个界面中的每一个界面作为一个独立的任务进行显示。例如,当终端打开了两个word文档时,如果进入最近任务界面,可以分别采用两个任务卡片显示这两个word文档对应的界面。为了方便说明,本技术不特别区分任务和应用程序的差别,且本技术不对应用程序的多个界面作为一个任务卡片还是多个任务卡片进行显示进行限定。
218.作为举例,当用户触发终端打开第一应用程序后,通过手势或者按键回到主界面,此时,第一应用程序被切换到后台运行;用户再打开第二应用程序,并且在运行第二应用程序时触发终端进入最近任务界面。可以理解,由于终端的系统功能当前在前台运行最近任务界面所对应的程序,因此,第二应用程序也被切换到后台运行。在这种情况下,第一应用程序和第二应用程序均为最近运行的应用程序,它们的信息会出现在最近任务界面中。
219.最近任务界面中显示最近运行的多个应用程序的信息。通常情况下,最近任务界面会显示应用程序对应的标识和任务卡片。可选的,应用程序的标识可以是用文字表示的应用程序名称或者应用程序的图标(icon),任务卡片则是一个矩形方框,方框里是应用程序的快照,例如,系统会截取该应用程序被切换至后台运行时的界面作为快照。应用程序的标识和任务卡片可以为一个整体,例如标识嵌入任务卡片,作为任务卡片的一部分;或者应用程序的标识和任务卡片处于分离状态,本技术对此不进行限定。当该终端最近运行的应用程序存在多个时,则存在多个任务卡片,由于页面显示或者界面设置的关系,其中有些任务卡片在最近任务界面中完整显示,有些任务卡片在最近任务界面中部分显示,还可能有些任务卡片在最近任务中隐藏(不显示)。
220.在一些示例性的实施例中,如图2(a)所示,用户可以在终端的主界面,从终端的屏幕底部做出向上划动的手势触发终端的显示屏显示最近任务界面。实际应用中,还可以是其他手势或者其他操作方式(例如点击“多任务”按键或者长按“返回”按键等)触发终端的显示屏显示最近任务界面。本技术对触发终端显示最近任务界面的方式不做限制。
221.在一些示例性的实施例中,如图2(b)所示,终端的显示屏显示最近任务界面。在该最近任务界面中,第一应用程序的任务卡片完整显示,而第二应用程序的任务卡片则部分显示。最近运行的应用程序还包括第三应用程序,而第三应用程序的卡片在最近任务界面中隐藏。在图2(b)所示的最近任务界面中,当用户在触摸屏上做出向右滑动的手势时,该终端的显示屏显示的最近任务界面可以切换为图2(c)所示的最近任务界面。
222.在一些示例性的实施例中,如图2(c)所示,最近任务界面中当前完整显示的任务卡片由第一应用程序的任务卡片切换成第二应用程序的任务卡片。在切换前,如图2(b)所示,第一应用程序的任务卡片在最近任务界面中完整显示,第二应用程序的任务卡片在最近任务界面中部分显示;在切换后,如图2(c)所示,第一应用程序的任务卡片在最近任务界面中部分显示,第二应用程序的任务卡片在最近任务界面中完整显示。并且在切换后,如图
2(c)所示,第三应用程序的任务卡片由隐藏状态改为在最近任务界面中部分显示。
223.如图2(b)和图2(c)所示,在存在多个最近运行任务的情况下,最近任务界面中可以完整显示一个最近运行任务的任务卡片,且完整显示的最近运行任务的任务卡片的左侧和/或右侧部分显示其他最近运行任务的任务卡片,完整显示的任务卡片和部分显示的任务卡片左右并排显示。实际应用中,最近任务界面显示任务卡片的方式还可以是其他方式,例如,最近任务界面中完整显示一个最近运行任务的任务卡片,且完整显示的最近运行任务的任务卡片的上侧和/或下侧部分显示其他最近运行任务的任务卡片,完整显示的任务卡片和部分显示的任务卡片上下并排显示。本技术实施例对最近任务界面显示任务卡片的方式不做限制,可以通过操作触发最近任务界面切换显示不同的任务卡片,且切换前和/或切换后存在完整显示的任务卡片即可。
224.在最近任务界面中,用户可以进行不同的操作,从而实现不同的效果。
225.在一些示例性的实施例中,如图3(a)所示的,当用户在最近任务界面中的任务卡片之外的区域做出点击的手势时,最近任务界面退出,终端的显示屏显示主界面。
226.在一些示例性的实施例中,如图3(b)所示的,当用户在第一应用程序的任务卡片对应的区域做出点击的手势时,则最近任务界面退出,终端的显示屏用来显示第一应用程序的界面,第一应用程序从后台切换到前台运行。
227.图3(a)和图3(b)中,终端对用户的手势做出的响应仅用于示例,在实际应用中,还可以为其他响应,本技术对此不进行限定。
228.另外,在实际应用中,参照图3(a)和图3(b),最近任务界面中还可以显示用来清理所有最近运行的应用程序占用的内序空间的控件或者图标,例如图3(a)和图3(b)中下方的垃圾桶图标。用户通过点击该图标,可以将最近运行任务全部关闭。在具体实现时,还可以采用其他方式关闭最近任务界面中以悬浮窗模式运行的全部或者某个应用程序。作为示例,还可以通过向上划动的手势、向下滑动的手势或点击任务卡片中特定控件(例如,任务卡片中的关闭按钮)的方式关闭该应用程序。
229.可选的,在本技术的一些实施例中,在显示任务卡片时,还可以显示部分或者全部任务卡片分别对应的应用程序占用的内存空间的信息。例如:在部分或者全部任务卡片的上方或者下方可以显示该任务卡片对应的应用程序占用的内存空间的提示框,或者,可以利用一个列表或者表格显示不同任务卡片分别对应的应用程序占用的内存空间。例如,某个任务卡片对应的应用程序占用的内存空间可以为xx兆(m),或者yy千(k)字节(b)等,本技术实施例在此不作限制。
230.上文已经对最近任务界面所包括的内容以及基本的操作进行了介绍。在本技术中,某个终端的最近任务界面不仅可以显示该终端最近运行的应用程序,还可以显示其他终端最近运行的应用程,进一步的,还可以对某个或者某些应用程序对应的任务卡片进行操作,实现应用的跨设备迁移以及应用运行等。
231.以图1所示的场景为例进行说明,第一终端(例如为手机101)、第二终端(例如为平板电脑102)和第三终端(例如为大屏设备103)等通过网络进行连接。当用户操作第一终端进入最近任务界面时,该最近任务界面不仅显示第一终端最近使用的应用程序,还显示第二终端和第三终端最近使用的应用程序。
232.在一种可能的实现方式中,在不同设备之间执行本技术的技术方案之前,不同设
备之间可以以建立可信关系为前提,或者以相连为前提。例如:对于相连的方式,不同设备可以登录相同的账号、连接同一个wi-fi热点、登录关联的账号、或者建立在同一组网中形成一个局域网设备群等。对于建立可信关系的方式,不同设备之间可以通过下文中图3(j)至图3(z)所示的示例性方式进行设备级的认证,从而建立可信关系。本技术在此不作限制。
233.在一些示例性的实施例中,如图3(c)所示,第一终端的最近任务界面分为多行,其中的第一行用于显示第一终端最近使用的应用程序对应的任务卡片;而第二行和第三行分别用来显示第二终端、第三终端等设备的最近任务列表。在这种情况下,第一终端可以在后台同步第二终端和第三终端的最近任务列表,或者当用户打开第一终端的最近任务界面时,触发第一终端获取与之相连的其他终端(第二终端和第三终端)的最近任务列表。
234.如图3(c)所示的,例如,第一终端可以为手机、第二终端为平板电脑、第三终端为大屏设备,任意两个设备运行的应用程序之间均可以存在交叠的应用程序。例如,如图3(c)所示的,手机和平板电脑之间存在相同的应用程序app1和app3。可选的,手机上运行的app1的进度或者状态(或者手机上显示的app1的界面)和平板电脑上运行的app1的进度或者状态(或者平板电脑上显示的app1的界面)可以不同。手机上运行的app3的进度或者状态和平板电脑上运行的app3的进度或者状态也可以不同。手机和平大屏设备之间存在相同的应用程序app2,可选的,手机上运行的app2的进度或者状态和大屏设备上运行的app2的进度或者状态也可以不同。大屏设备和平板电脑之间存在相同的应用程序app4,类似的,大屏设备上运行的app4的进度或者状态和平板电脑上运行的app4的进度或者状态也可以不同。
235.又例如,如图3(c)所示的,第一行显示了手机最近运行的三个应用程序,示例性的,这三个应用程序可以是手机最近运行的多个应用程序中,使用频率排前三的三个应用程序,或者,使用时间长度排前三的三个应用程序,或者,最近使用的三个应用程序,或者,是使用频率最高的一个应用程序、使用时间最长的一个应用程序以及最近使用的一个应用程序。再例如,用户可以在任一行任务卡片的区域做出向右滑动的手势时,第一终端将显示这一行所对应设备的其他任务卡片,或者,用户可以在这三行任务卡片之外的区域做出向右滑动的手势时,第一终端将显示这三个设备分别对应的其他任务卡片。
236.在一些示例性的实施例中,还可以先在第一终端的最近任务界面中分别显示第一终端以及与第一终端相连的(例如:登录了相同的账号、连接了同一个wi-fi热点、或者登录了关联的账号等)多个终端的标识,当第一终端或者与第一终端相连的某个终端的标识被选中时,在最近任务界面中会相应的显示该终端所对应的最近任务列表。在一些示例性的实施例中,如图3(d)所示,当本机(第一终端)的标识被选中时,最近任务界面中显示第一终端本地的最近任务列表;在一些示例性的实施例中,如图3(e)所示,当第一终端接收用户的指令,使得第二终端的标识被选中时,最近任务界面中显示第二终端的最近任务列表。在这种情况下,第一终端可以在后台已经完成对第二终端的最近任务列表的同步并缓存这部分数据,当用户点击第二终端的标识时,第一终端根据已经缓存的数据,在最近任务界面上显示第二终端的最近任务列表;或者,第一终端可以不在后台同步第二终端的最近列表任务,而是当用户点击第二终端的标识时,第一终端再去获取第二终端的最近任务列表,并显示在第二终端的标识对应的最近任务界面中。
237.当采用第一终端在后台获取包括第二终端在内的其他终端的最近任务列表的策略时,当用户点击进入第一终端的最近任务界面或者在最近任务界面点击了其他终端的标
识后,由于关于其他终端的最近任务列表的信息都已经预先缓存了,所以可以以较快的速度在最近任务界面中加载其他终端的最近任务列表,这使得用户更快速的获取其他终端对应的最近任务列表,用户体验更好。而当用户打开第一终端的最近任务界面或者在最近任务界面点击其他终端的标识时触发其他终端的最近任务列表同步,可以减少第一终端和其他终端同步最近任务列表产生的网络流量以及电量消耗,有利于节约资源。
238.在一些示例性的实施例中,可以根据第一终端的状态而采取不同的同步策略。例如,当第一终端处于连接无线保真(wireless fidelity,)状态或者电量充足的状态时,由于不需要担心网络流量或者电量的消耗问题,可以使得第一终端在后台获取与之相连的其他终端的最近任务列表。而当第一终端处于通过蜂窝网络联网或者电量较低的状态时,出于节省网络流量或者电量的原因,可以当用户打开第一终端的最近任务界面或者在最近任务界面点击其他终端的标识时触发其他终端的最近任务列表同步。
239.在一些示例性的实施例中,由于在现实使用中,第一终端的用户对于其他终端的使用频率并不相同,因此,可以对于第一终端相连的各个终端设置不同的最近任务信息同步策略。例如,当第一终端为手机时,那么与该手机通过网络相连的平板电脑可能与该手机的关系更为密切,而同样相连的备用手机则可能联系不多,在这种情况下,可以当用户进入最近任务界面时,直接显示与该手机关联较多的平板电脑的最近任务,而只显示与该手机关联较少的备用手机的标识,需要用户点击备用手机的标识时,再触发第一终端获取备用手机的最近任务。
240.在一些示例性的实施例中,图3(f)是另一种显示与第一终端相连的多个终端的最近任务列表的示意图。如图3(f)所示,在第一终端的最近任务界面,不再区分是第一终端的最近任务还是其他终端的最近任务,而是将第一终端和其他终端的最近任务进行合并、去重之后显示在第一终端的最近任务界面上。例如,如果第一终端(即本机)最近运行了app1、app2和app3,第二终端(假设为华为p30手机)最近运行了app1、app3和app4,第三终端(假设为华为p40手机)最近运行了app2、app4和app5,则第一终端的最近任务界面将显示app1-app5(图中只示出app3、app4和app5)。
241.在一些示例性的实施例中,可选的,可以在最近任务视图中,各个应用程序对应的任务卡片的周围显示与该应用程序对应的终端设备,用来知会第一终端的用户,最近任务视图中显示的应用程序是哪个终端设备最近使用的应用程序。如图3(f)所示,app4的任务卡片周围会显示第二终端(p30)以及第三终端(p40)的标识。
242.由于各个应用程序在最近任务界面中是以根据应用的打开顺序进行排列的,因此,为了更准确的在第一终端的最近任务界面中排列各个最近的应用程序,当组网内的其他终端向第一终端发送最近使用的应用程序的信息时,可以将该应用程序在该终端上的打开时间一并发给第一终端。例如,当第二终端在11点26分打开了相册应用程序,而第三终端在11点27分打开了设置应用程序时,第二终端和第三终端分别向第一终端发送最近任务信息,该最近任务信息里分别包含了第二终端打开相册应用程序的时间信息和打开设置应用程序的时间信息。当第一终端的全局任务中心来自第二终端和第三终端的最近任务信息后,可以确定相册应用程序先于设置应用程序打开,因此在最近任务界面中,相册应用程序的位置在设置应用程序的位置之前。
243.当第一终端试图同步第二终端的最近任务列表时,例如用户操作第一终端进入最
近任务界面或者在最近任务界面点击第二终端的标识,第一终端会向第二终端发送任务同步请求,该任务同步请求用于通知第二终端将自己最近运行的应用程序信息(最近任务信息)发送给第一终端。
244.在一些示例性的实施例中,如图3(g)所示,第一终端1010和第二终端1020均包括全局任务中心和分布式调度子系统。可选的,全局任务中心运行在应用层,用于管理以及显示组网内终端的最近使用的应用程序;而分布式调度子系统运行在更底层的系统服务层,用于获取本终端最近使用的应用程序的信息以及与其他终端交换最近任务信息。
245.第二终端1020的分布式调度子系统1022从本地任务管理模块1023获取第二终端1020的最近任务信息,并注册本地任务信息变化的倾听者(listener),该倾听者用于获取第二终端最近使用的应用程序的变化。当第二终端1020的分布式调度子系统1022获取到第二终端1020的最近任务信息后,再将该任务信息传输给第一终端1010的全局任务中心1011,使得第一终端1010可以在最近任务界面中显示第二终端1020的最近任务列表。在一些示例性的实施例中,如图3(h)和图3(i)所示,第二终端1020的分布式调度子系统1022传输给第一终端1010的全局任务中心1011可能存在如下2种方式。
246.在一些示例性的实施例中,如图3(h)所示,当第二终端1020的分布式调度子系统1022接收到来自第一终端1010的任务同步请求之后,将来自本地任务管理模块1023的第二终端1020的最近任务信息先发送给第一终端1010的分布式调度子系统1012,第一终端1010的分布式调度子系统1012再将第二终端1020的最近任务信息发送给第一终端1010的全局任务中心1011。
247.由于分布式调度子系统位于底层,当第一终端1010和第二终端1020组网之后,第一终端1010可以维护组网内标识的列表。当需要获取第二终端1020的最近任务信息时,第一终端1010可以通过分布式调度子系统1012向第二终端1020发送任务同步请求,并接收来自第二终端1020的分布式调度子系统1022的最近任务信息,从而较为便捷地完成第二终端1020最近任务信息的同步。
248.在一些示例性的实施例中,如图3(i)所示,当第二终端1020的分布式调度子系统1022接收到来自第一终端1010的最近任务信息同步请求之后,可以将来自本地任务管理模块1023的第二终端1020的最近任务信息先发送给第二终端1020的全局任务中心1021,再由第二终端1020的全局任务中心1021将该最近任务信息发送给第一终端1010的全局任务中心1011。
249.当采用这种实现方式时,由于全局任务中心位于应用层,并不能直接感知其他终端或者获取来自其他终端的信息。当第二终端1020的全局任务中心1021需要给第一终端1010的全局任务中心1011发送信息时,第二终端1020的全局任务中心1021需要获取第一终端1010的标识以及全局任务中心的标识,在发送包括最近任务信息在内的消息时,在该消息中附带上第一终端1010的标识以及全局任务中心的标识,从而可以在第一终端1010接收到来自第二终端1020的最近任务信息后,将该最近任务信息传递给第一终端的全局任务中心。
250.可选的,第二终端发送最近任务信息给第一终端时可以采用多种格式的形式进行传输,例如:一种可能的传输方式为使用远程过程调用(remote procedure call,rpc)。rpc是一个计算机通信协议,该协议允许一台计算机的程序调用另一个地址空间的子程序。而
程序员就像调用本地程序一样,无需额外地为这个交互作用编程。rpc是一种服务器-客户端(client/server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
251.在另一种可能的传输方式中,第二终端和第一终端可以共同维护一个共享数据库,当第二终端需要向第一终端发送数据时,可以将待发送的数据放入该共享数据库中,当共享数据库中的内容发生改变时,第一终端可以感知,进而可以提取第二终端放入共享数据库的内容,并将该内容传递给第一终端的全局任务中心。
252.在又一种可能的传输方式中,当第二终端需要向第一终端发送数据(例如包括最近任务信息、最近运行的应用程序的数据流等)时,第二终端可以对该数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至第一终端(例如:利用将索引表写入parcel进行rpc传输的方式传输至第一终端),第一终端根据接收到的分段数据以及索引表恢复应用数据,最终实现不用设备之间最近任务信息或者最近运行的应用程序的数据的传输。利用这种方式传输的具体过程可以参考图18至图20所示的示例性的实施例的描述。
253.在又一种可能的传输方式中,当第二终端需要向第一终端发送数据(例如:包括最近任务信息、最近运行的应用程序的数据流等)时,通过将第二终端本地任务栈恢复机制拓展到分布式场景下,使得第二终端与第二终端之间可以基于栈迁移来进行任务迁移(即最近任务信息或者最近运行的应用程序的数据的传输),这样,第一终端可以保存并恢复第二终端的本地任务栈的上下文信息(context),使得用户可以在第一终端上无缝流转,执行第二终端上的任务,最终实现不用设备之间最近任务信息或者最近运行的应用程序的数据的传输。利用这种方式传输的具体过程可以参考图23a-图23g、图24a-图24g、图25a和图25b以及图26所示的示例性的实施例的描述。
254.所传输的最近任务信息包括了记录最近任务信息的栈、最近使用的应用程序的快照信息、标识以及状态信息等。栈是用来记录最近使用过的应用程序以及顺序的数据结构,且对于该栈的设置确定了终端所记录的最近使用的应用程序的数量阈值。当超过该阈值时,使用时间最早的应用程序将会从最近任务列表中删除。状态信息是用于记录各个应用程序在退出后台应用之前的状态,包括窗口模式(window mode)信息以及intent信息等,可选的,窗口模式信息用于指示应用程序在前台运行时的显示模式,例如,当window mode信息的值为1时,表示该应用之前的显示模式为全屏显示。而当window mode信息的值为101时,表明该应用程序的显示模式为分屏显示。intent信息则包括应用程序启动时所需要的信息,例如下列数据中的一项或者多项:远端设备id、应用的包名、类名、清理模式,除此之外还可以保存额外的用户数据。如:视频应用可保存统一资源标志符(uniform resource identifier,uri)、进度数据,便于在远端设备上“无缝切换”本端设备正在播放的视频(或称为流转或迁移)。
255.由于第一终端获取了第二终端最近使用的应用程序的状态信息,因此,用户可以指示第一终端根据应用程序的状态信息运行该应用程序,例如,直接打开该应用程序在第二终端上进入后台时的界面。
256.进一步的,在一种可能的实现方式中,应用程序的状态信息中还可以包括界面能力(feature ability,fa)文件,即使第一终端没有安装该应用程序,也可以根据fa文件直接运行该应用程序。
257.可选的,在本技术中,第一终端需要获取组网内其他终端的最近任务信息,而最近任务信息涉及到用户隐私问题。因此,在第一终端与第二终端交换最近任务信息之前,可以以第一终端和第二终端之间建立可信关系为前提,也即第一终端和第二终端之间进行绑定或者说建立了设备级的认证关系。
258.为了便于理解,下面以手机a为第一终端以及手机b为第二终端为例,对本技术实施例提供的设备级认证的用户界面进行介绍。
259.可选的,在一些示例性的实施例中,如图3(j)所示,用户可以从设置应用进入智慧协同界面701,智慧协同界面701可以包括名称为“我的设备”的列表。其中,“我的设备”包括本机(即手机a)、kiki’s mate pad和kiki’s mate book pro。本机、kiki’s mate pad和kiki’s mate book pro可以是同账号(例如,共用一个华为账号)的设备。或者,本机、kiki’s mate pad和kiki’s mate book pro可以是异账号但经过认证(认证过程可以参考下文的相关描述)的设备。
260.可选的,智慧协同界面701可以包括绑定其他设备按钮702。本技术实施例中,绑定是指两个设备间建立可信关系,从而可以进行设备之间查看最近使用的应用程序等操作。响应于用户对绑定其他设备按钮702的操作(例如,点击操作),如图3(k)所示,手机a可以显示碰一碰添加按钮703和扫一扫添加704。应该理解的是,图3(j)和图3(k)分别对应的ui界面中的各个元素(例如,按钮、图标、文字等)的位置、名称和形状等不是固定不变的,可以根据需求进行自由组合或设计。例如,可以将图3(j)中的按钮702可以替换为图3(k)中的按钮703和按钮704。
261.例如,响应于用户对碰一碰添加按钮703的点击操作,如图3(l)所示,手机a可以显示碰一碰添加界面705,碰一碰添加界面705中可以显示弹框706,弹框706中包括提示图画和提示信息,提示信息例如可以是:“碰一碰添加,手机开启nfc后,用背面碰一碰设备上的ontag标签”。用户可以根据提示信息进行操作,以便通过碰一碰的方式添加新的设备。又例如,响应于用户对扫一扫添加按钮704的点击操作,如图3(m)所示,手机a可以显示扫一扫添加界面707,扫一扫添加界面707中可以包括提示图画和提示信息,提示信息例如可以是:“扫描设备或包装上的二维码”。用户可以根据提示信息进行操作,以便通过扫一扫的方式添加新的设备。
262.可选的,在一些示例性的实施例中,若手机a不支持通过碰一碰和扫一扫的方式添加新的设备,如图3(n)所示,在智慧协同界面701中,响应于用户点击绑定其他设备按钮702的操作,如图3(o)所示,手机a可以显示弹框708,弹框708中包括提示信息“请确保设备已开启,且位于手机附近”,弹框708中还可以包括手机a基于短距通信网络(例如,wi-fi网络或蓝牙网络)检测到的设备,例如房间电视、huawei p30和mate book x pro等设备。每个设备对应一个绑定按钮。响应于用户对huawei p30对应的绑定按钮709的操作,如图3(p)所示,huawei p30的标识下方可以显示提示信息710“等待对端确认...”。弹框708中还可以取消按钮711,响应于用户点击取消按钮711的操作,手机a可以返回如图3(n)所示的界面。
263.若对端设备确认(例如,对端设备的用户同意建立可信关系),在一种可能的实现方式中,响应于对端设备的确认指令,对端设备和手机a建立可信关系,从而使得手机a可以查看对端设备的最近任务信息。而在另一种可能的实现方式中,为了进一步提高安全性和保护隐私,手机a还需要扫描对端设备显示的二维码以完成可信关系的建立。如图3(q)所
示,手机a可以显示绑定新设备界面712,绑定新设备界面712中可以包括提示信息“扫一扫对端显示的二维码”,用户可以根据提示信息进行操作,以便添加新的设备。应该理解的是,本技术实施例不限定不同ui界面的跳转关系。例如,如图3(o)所示,响应于用户点击绑定按钮709的操作,如图3(q)所示,手机可以直接显示扫描界面712。
264.若对端设备未确认(例如,对端设备不具备绑定功能,绑定超时,或者对端设备正忙,或者对端设备的用户不同意绑定),可选的,如图3(r)所示,手机a可以显示弹框721,提示用户“设备认证失败”,响应于用户点击知道按钮722的操作,弹框721可以隐去。或者,弹框721可以在预设时间(例如,3s)后隐去。在另一种可能的设计中,如图3(s)所示,手机a可以显示弹框723,提示用户“对端正忙,请稍后发起绑定”,响应于用户点击知道按钮724的操作,弹框723可以隐去。或者,弹框723可以在预设时间(例如,3s)后隐去。在又一种可能的设计中,如图3(t)所示,手机a可以显示弹框725,提示用户“对端拒绝信任此设备,绑定失败”,响应于用户点击知道按钮726的操作,弹框725可以隐去。或者,弹框725可以在预设时间(例如,3s)后隐去。或者,如图3(u)所示,手机a可以在界面712中显示弹框727,提示用户“对端二维码已关闭,无法完成设备认证,绑定失败”。响应于用户点击按钮728的操作,弹框727可以隐去。
265.假设对端设备是手机b(例如可以是huawei p30),在一些示例性的实施例中,若手机b在显示桌面730时接收到手机a的绑定请求,如图3(v)所示,手机b可以显示弹框731,弹框731中可以包括提示信息732“huawei mate30请求绑定本机,是否信任此设备”,弹框731中还可以包括不信任按钮733和信任按钮734。不信任按钮中还可以显示倒计时(例如,14s),倒计时结束时若用户未点击任何按钮可以自动隐去弹框731。响应于用户点击信任按钮734的操作,手机a可以与手机b进行认证过程,从而手机a可以绑定手机b。
266.在一些示例性的实施例中,若手机b在息屏状态或锁屏状态下接收到手机a的绑定请求,如图3(w)所示,手机b可以在锁屏界面735中显示弹框736,弹框736可以提示用户智慧协同应用在上午7:30接收到设备绑定请求,具体可以是“huawei mate30(即手机a)请求绑定本机,是否信任此设备?”响应于用户从锁屏状态进入桌面的操作(例如,输入密码或输入指纹),图3(w)中的弹框736可以替换为图3(v)中的弹框731的形式,用户可以选择信任或不信任huawei mate30(即手机a)。
267.在一些示例性的实施例中,若手机b在视频播放或游戏状态下接收到手机a的绑定请求,如图3(x)所示,手机b可以在视频界面或游戏界面740中显示弹框741,弹框741可以提示用户智慧协同应用接收到设备绑定请求,具体可以是“huawei mate30请求绑定本机,是否信任此设备?”。响应于用户点击下拉控件742的操作,如图3(y)所示,弹框741可以展示更多信息,例如可以显示不信任按钮743和信任按钮744。不信任按钮743中还可以显示倒计时(例如,14s),倒计时结束时若用户未点击任何按钮可以自动隐去弹框741。响应于用户点击信任按钮744的操作,手机a可以与手机b进行认证过程。
268.在一些示例性的实施例中,响应于用户点击信任按钮的操作,如图3(z)所示,手机b可以返回桌面730,且显示弹框750,弹框750中可以包括手机b生成的二维码751,还可以包括提示信息752“扫一扫绑定,允许huawei mate30扫一扫绑定本机”。此时,手机a的用户可以用手机a扫描手机b显示的二维码,以便手机a与手机b进行绑定。弹框750中还可以包括取消按钮753,响应于用户点击取消按钮753的操作,弹框750可以隐去。
269.在一些示例性的实施例中,若手机a和手机b登录了同一个账号(例如,华为账号),手机a可以直接与手机b绑定,例如直接在手机a上点击手机b对应的绑定按钮,而无需等待手机b确认。
270.需要指出的是,设备之间的互相通信以实现本技术实施例的方案可以是建立在同一组网中的基础上;也可以是建立在设备之前存在信任关系的基础上,例如共同账号、关联账号、绑定关系等;还可以是在同一组网中并且建立信任关系的基础上,本技术对此不做限制。
271.例如,第一终端、第二终端以及第三终端可以组网形成一个局域网设备群,该局域网设备群中的多个设备为可信设备。在这种情况下,第一终端、第二终端以及第三终端组成的局域网设备可以称为“超级终端”。
272.又例如:第一终端、第二终端和第三终端分别登录了相同的账号。
273.又例如,第一终端、第二终端和第三终端虽然分别登录了不同的账号,但是这三个账号为相互信任的关联账号或者家庭账号等。
274.再例如,第一终端、第二终端和第三终端中至少有一个设备登录了账号,至少有一个设备没有账号,有账号的设备和无账号的设备之间也可以建立设备级的认证关系等。本技术对于第一终端、第二终端和第三终端建立可信关系的具体表现形式不作限制。
275.第一终端的最近任务界面不仅显示第一终端最近使用的应用程序,还显示第二终端和第三终端最近使用的应用程序。在第一终端的最近任务界面显示的其他设备历史任务卡片时,可以先在第一终端的最近任务界面中分别显示第一终端以及与第一终端相连(例如:登录了相同的账号、连接了同一个wi-fi热点、或者登录了关联的账号等)的多个终端(包括第二终端以及第三终端)的标识,当第一终端或者与第一终端相连的某个终端的标识被选中时,在最近任务界面中会相应的显示该终端所对应的最近任务列表。
276.当第二终端的最近使用的应用程序发生变化时,第一终端最近任务界面显示的最近任务列表也需要更新,下面将对第一终端的任务界面的更新方法进行说明。
277.例如,第二终端的用户打开的第二终端上的时钟应用程序,那么,对于第二终端来说,时钟成为了第二终端最近使用的应用程序。而由于在之前的过程中,第二终端的分布式调度子系统已经注册了第二终端的任务管理模块的倾听者,因此,当第二终端最近使用的应用程序发生变化时,该倾听者可以获取关于变化的信息,并将该信息发送给第二终端的分布式调度子系统。
278.当第二分布式调度子系统获取时钟成为最近的应用程序的信息后,可以进一步将该信息发送给第一终端的分布式调度子系统。而当第一终端的分布式调度子系统接收到该信息后,更新关于最近任务信息的缓存,并通知第一终端的全局任务中心获取该更新后的最近任务信息。在这种情况下,当第一终端的用户浏览第一终端的全局任务中心时,可以看到时钟应用程序也被加入到第二终端对应的最近任务列表中。
279.在一种可能的实现方式中,与时钟应用程序相关的快照信息和intent信息也可以从第二终端传输至第一终端的全局任务中心,在第一终端的最近任务界面中,时钟所对应的任务卡片上显示该应用程序在进入后台时,系统所截取的快照。并且当时钟所对应的任务卡片被点击时,可以在第一终端上进入时钟应用程序在第二终端的使用状态。
280.在一些示例性的实施例中,对于某些使用较为频繁的应用程序,如果该应用程序
在第二终端上被打开的频率较大,那么,当该应用程序每一次被打开或者进入后台时,涉及到该应用程序在最近任务界面中的位置、该应用进入后台时截取的快照信息以及intent信息的变化,如果需要将所有与该应用程序相关的信息均从第二终端传输到第一终端,消耗的资源相对较大。在这种情况下,为了减少第二终端和第一终端之间的数据交互量,第二终端可以在每一次需要同步最近任务信息时,比较本次需要传输的信息与上次传输的信息之间的区别,并通过去重算法对需要传输的信息进行去重处理,只将发生变化的最近任务信息传输给第一设备的分布式调度子系统。例如,可以只筛选taskid、userid、windowmode或displayid等字段有变化的任务信息,而对例如isrunning字段不做关注,即使isrunning字段发生变化,也不通知、同步给远端设备。通过这种方法,可以减少第一设备和第二设备之间因为最近任务信息同步所需要传输的数据量,节约了网络资源。
281.上述对于最近任务信息的同步是以第二终端在后台自动将信息传输给第一终端为例进行说明的。在另一种可能的实现方式中,当第二终端的倾听者获取到第二终端的最近使用的应用程序发生变化时,将这部分数据传输到第二终端的分布式调度子系统。由于第二终端的最近任务信息可能会频繁发生变化,而第一终端的用户并不会时刻在第一终端的最近任务界面中查询第二终端的最近任务信息,因此,第二终端的分布式调度子系统可以暂时不将这部分数据发送给第一终端。而当第一终端的用户操作第一终端进入最近任务界面或者在最近任务界面中点击第二终端的标识时,可以触发第一终端的全局任务中心经第一终端的分布式调度子系统向第二终端的分布式调度子系统发送请求,请求第二终端将最新的最近任务信息发送给第一终端。第二终端执行上述任务信息同步流程,将当前获取到的最近任务信息发送给第一终端,使得第一终端的用户可以浏览到第二终端的最近任务信息。在这种情况下,第二终端不需要主动将最近信息同步给第一终端,而是预设的触发条件发生时,例如当第一终端的用户操作第一终端进入最近任务界面或者在最近任务界面中点击第二终端的标识时,再进行最近任务信息的同步。由于第一终端的用户并不是一直需要知道第二终端的最近任务情况,且同步最近任务信息往往不需要花费太多的时间,这使得在保证用户体验的前提下,减少第一终端和第二终端最近任务信息同步的次数,进而减少了因为最近任务信息同步所需要的数据量,从而节约了网络资源。
282.对于最近任务信息是通过上述的后台自动同步还是由预设条件触发同步的做法,既可以由第一终端和/或第二终端预设,即当第一终端和第二终端连接并使能该功能后就确定了采用后台自动同步或者由预设条件触发的做法;还可以将后台自动同步或者预设条件触发同步作为用户可以设定的选项,用户可以根据实际使用需要或者第一终端和/或第二终端所出的状态,对第一终端和/或第二终端采用哪种同步模式进行设置。
283.当第一终端的用户在使用第一终端时,不仅可以在最近任务界面中查看其他终端最近使用的应用程序,还可以清理其他终端在后台运行的应用程序。例如,当第二终端此时正在后台播放音乐,而第一终端的用户希望第二终端可以停止播放音乐时,利用本技术提供的技术方案可以便捷地在第一终端的最近任务界面中清理第二终端的音乐应用程序。例如,第一终端的用户可以拖住第二终端对应的最近任务列表中的音乐应用程序的卡片并上划。当第一终端接收到用户的指令后,可以通过第一终端的分布式调度子系统将待清理的应用程序的信息发送给第二终端的分布式调度子系统。当第二终端的分布式调度子系统接收到待清理的任务信息后,将音乐应用程序停止,并在停止音乐应用程序后向第一终端的
分布式调度子系统发送反馈信息,该反馈信息用于指示第二终端的音乐应用程序已经被清理。当第一终端的分布式调度子系统接收到该反馈信息后,将向第一终端的全局任务中心发送通知,指示全局任务中心刷新最近任务界面,而音乐应用将不在刷新后的最近任务界面中显示,或者不在最近任务界面中第二终端对应的最近任务列表中显示。
284.而当第一终端的用户希望清理第二终端的全部后台应用,以节省第二终端的能耗以及当前已被占用的处理器和内存资源时,可以在最近任务界面点击用于指示清理全部后台应用程序的图标。当点击后,第一终端的全局任务中心通过第一终端的分布式调度子系统向第二终端的分布式调度子系统发送通知,该通知用于指示第二终端对当前所有的后台任务进行清理,并在完成清理后向第一终端发送反馈信息,以使得第一终端的全局任务中心可以刷新最近任务界面,从而使第一终端的用户知晓第二终端的最近使用的后台应用程序已经被清理。
285.以在第一终端的最近任务界面上清理第二终端最近使用的应用程序的方式为例进行说明。例如,第二终端(p30)最近运行了app1、app3、app4和app5。如图4(a)所示,用户可以在第一终端的最近任务界面查看第二终端最近运行的应用程序,例如:当用户想要清理app3时,可以在app3对应的任务卡片上做出上划手势。当第一终端接收到来自用户的指令后,可以通知第二终端清除app3。当第二终端清除app3之后,可以向第一终端发送反馈信息,指示app3已经被清除。如图4(b)所示,当第一终端接收反馈信息后,会在最近任务界面中停止显示app3,而是显示出app3之外的app1、app4和app5。
286.在另一种可能的实现方式中,各个终端的最近使用的应用程序综合在一起显示。在这种情况下,当第一终端的用户操作第一终端进入最近任务界面时,所显示的最近任务列表中的每一个应用程序分别是组网内的一个或者多个终端最近使用的应用程序。相应的,当用户想要清理掉某个应用程序时,可以意味着该用户想要在最近使用该应用程序的终端上均进行清理。例如,当该用户通过上划该应用程序的任务卡片来指示清理该应用程序时,第一终端根据全局任务中心内记录的信息获取组网内的哪些终端在后台运行待清理的应用程序的信息。例如,当用户想要清理淘宝应用程序时,而全局任务中心根据所记录的信息确定第二终端和第三终端的后台运行着淘宝应用程序。在这种情况下,第一终端的全局任务中心可以通过第一终端的分布式调度子系统分别向第二终端和第三终端发送清理请求,该清理请求用于分别指示第二终端和第三终端清理后台运行的淘宝应用。
287.当第二终端和第三终端分别清理完了后台的应用后,可以向第一终端发送反馈信息。在一种可能的实现方式中,第一终端的全局任务中心接收到了第二终端的反馈信息,但还未接收到第三终端的反馈信息。在这种情况下,由于还不确定第三终端是否已经清理了相应的应用程序,所以可以将淘宝应用程序的任务卡片继续保留在最近任务视图中。可选的,当在任务卡片的周围显示对应的终端标识时,由于第二终端已经在后台清理了淘宝应用程序,此时可以将淘宝应用程序周围的第二终端的标识去除掉,以通知用户第二终端已经在后台清理了淘宝应用程序。可选的,而当第一终端的全局任务中心后续接收到第三终端的反馈信息后,由于已经确定了所有在后台运行淘宝应用的终端已经清理了该应用程序,因此可以在第一终端的最近任务界面中将淘宝应用程序的信息移除。
288.上文已经介绍了第一终端在获取组网内的其他终端的最近任务信息时,需要先建立第一终端和其他终端的可信关系。在一些示例性的实施例中,当第一终端获取了查看乃
至清理已经建立其他终端的最近使用的应用程序的权限后,可以对第一终端可以获取该权限的应用程序进行限定,以防止存在恶意软件利用该权限实施不利于用户的行为。例如,可以设置只有全局任务中心等应用才可以被授权获取该权限,并进行相应的操作。在这种情况下,当第一终端的分布式调度子系统接收到清理指令后,可以先进行权限校验,确定该清理指令是否来自已经被授权获取权限的应用程序。如果确定该清理指令来自已经被授权的应用程序,则可以将清理指令转发给清理指令对应的终端的分布式调度子系统;如果判断该清理指令不是来自已经被授权的应用程序时,则将该清理指令丢弃。
289.应理解,上述对于应用程序的权限校验方法的说明仅仅为一种示例,在一些示例性的实施例中,对于应用程序是否可以被授权获取查看和/或清理其他终端最近使用的应用程序的权限,既可以是第一终端预设的,也可以是第一终端的用户可以设置的;对于校验发出清理指令的应用程序是否具有权限,既可以是由第一终端的分布式调度子系统来完成,也可以由其他终端的分布式调度子系统或者第一终端上的其他应用程序来完成,本技术不对上述具体做法进行限定。
290.在一些示例性的实施例中,第一终端不仅可以查看或者清除其他终端最近使用的应用程序,还可以将其他终端最近使用的某个应用程序迁移至第一终端或者将第一终端最近使用的某个应用程序迁移至其他终端,或者将某个正在后台运行的应用程序改为在前台运行。
291.在一些示例性的实施例中,如图4(c)所示,第一终端的用户打开了第一终端的最近任务界面,并处于显示第二终端(p30)最近任务列表的界面中。由于第二终端最近使用的应用程序的信息已经发送给第一终端,因此,用户可以将第二终端的某个应用程序迁移到第一终端,并在第一终端上打开。
292.在一些示例性的实施例中,用户可以将app3对应的任务卡片拖拽至“本机”图标处,指示第一终端运行app3。而当第一终端同时和第二终端以及第三终端(p40)进行连接时,如图4(d)所示,第一终端的最近任务界面显示这三个终端分别对应的图标。在这种情况下,第一终端不仅可以将第二终端的某个应用程序迁移到第一终端,还可以通过将app3对应的任务卡片拖拽至“p40”图标处,指示将app3迁移至第三终端。
293.由于第一终端获取了其他终端最近使用的应用程序的状态信息,因此,当将第二终端上的应用程序迁移至第一终端或者第三终端时,第一终端或者第三终端可以直接打开该应用程序在第二终端上进入后台运行时的界面。而应用程序的状态信息中还可以包括fa文件,即使第一终端或者没有第三终端没有安装该应用程序,也可以根据fa文件直接运行该应用程序。
294.在一些实施例中,第一终端可以将包含某个应用的待分享页面的页面元素信息和页面资源以fa文件的形式发送给其他设备,其他设备可以通过fa运行时模块运行fa文件,从而实现应用的迁移。fa运行时模块可以将源代码转换为用户界面。因此,fa文件可以独立打包和发布,并具有免安装、脱离应用独立运行、跨设备ui迁移、跨设备二进制迁移中一种或多种能力,使得跨设备分享内容更加便捷。
295.可选的,将应用程序从第二终端迁移至第一终端,既可以指在第一终端上打开该应用程序,在另一种可能的实现方式中,也可以指将该应用程序的界面以投屏的方式发送至第一终端。通过该实现方式,可以在传输数据量较小的前提下,使得第一终端的用户获取
第二终端运行的应用程序的信息。
296.在一些示例性的实施例中,第一终端的用户还可以在第二终端最近任务列表的界面中,通过点击某个应用程序对应的任务卡片或者将任务卡片拖拽至界面上第二终端的图标等操作,指示第二终端将正在后台运行的应用程序改为在前台运行。响应于该操作,第二终端的显示屏上可以显示该应用程序的界面,从而使得该应用程序可以被用户所见。
297.在一些示例性的实施例中,如图4(e)所示,第一终端的用户打开了第一终端的最近任务界面,并处于显示第一终端(本机)最近任务列表的界面中。在该界面中,用户可以将第一终端最近运行的某个应用程序迁移至其他终端。例如,用户可以通过将app2对应的任务卡片拖拽至第二终端对应的图标,从而将app2的状态信息发送给第二终端,并在第二终端上运行app2。
298.需要指出的是,通过将某个应用程序对应的任务卡片拖拽至终端的图标以将该应用程序迁移至该终端,仅为一种操作方式的示例,本技术不对此进行限定。实际上,还可以通过其他方式指示应用程序迁移,例如可以设置在最近任务界面中长按某任务卡片会出现将该任务卡片对应的应用程序迁移至其他终端的选项等操作方式。
299.本技术是以查看其他终端的最近任务信息为例进行说明,实际上,本技术不仅可以实现查看其他终端最近使用的应用程序,还可以查看关于其他终端上的应用程序的其他信息,从而实现更多的功能。
300.在一些示例性的实施例中,第一终端还可以获取第二终端的应用程序的使用时间信息和/或使用次数信息。这里的使用时间可以是第二终端对于某个应用程序的总使用时间,也可以是第二终端在预设的时间段内使用某个应用程序的时间,例如一天或者一周内使用该应用程序的时间;而使用频率次数可以是第二终端对于某个应用程序总共打开的次数,也可以是第二终端在预设的时间段内打开该应用程序的次数。可选的,以使用时间为例进行说明,如图4(f)所示,可以在最近任务界面中的任务卡片旁显示该任务卡片对应的应用程序的使用时间;或者,如图4(g)所示,可以在另外的界面中显示第二终端上应用程序的使用时间。为了方便第一终端的用户更直接地了解第二终端上应用程序的使用情况,还可以将按预设规则分析后的数据显示在第一终端上。例如,如图4(h)所示,第一终端的用户可以指示第一终端对第二终端的应用程序根据使用时长进行分析,并显示第二终端使用时间最长的若干的应用程序的标识以及相应的使用时间,可选的,第一终端的系统或者用户可以设置所需要显示的应用程序的数量,例如可以设置显示使用时间最长的3个应用程序及其使用时间。通过这种方式,第一终端的用户不仅可以获知第二终端最近使用的应用程序,还可以获知第二终端使用时间最多或者使用次数最多的应用程序,从而可以更好地对第二终端上应用程序的使用状态进行控制。
301.在一些示例性的实施例中,图4(i)是本技术的一个实施例的流程示意图。
302.如图4(i)所示,该实施例包括如下步骤:
303.s1401:第一终端接收来自第二终端的最近任务信息。
304.如前文所述,当第一终端和第二终端通过网络进行连接后,第一终端可以接收来自第二终端的最近任务信息,该最近任务信息包括第二终端最近运行的第一应用程序的信息,其中,第一应用程序的信息包括第一应用程序的标识。
305.s1402:第一终端接收来自用户的第一指令。
306.当第一终端获取了第二终端的最近任务信息后,用户可以向第一终端发送指示第一终端打开最近任务界面的第一指令,从而可以在最近任务界面中查看第二终端的最近使用的应用程序。
307.在一种可能的实现方式中,第一终端的最近任务界面包括至少两个控件,该至少两个控件包括对应第一终端的第一控件和对应第二终端的第二控件,当点击相应的控件时,可以查看相应的终端最近使用的应用程序。
308.而在另一种可能的实现方式中,在第一终端的最近任务界面中,同时显示第一终端最近使用的应用程序和第二终端最近使用的应用程序,而不需要通过点击控件查看某一终端最近使用的应用程序。
309.上述两种实现方式均为示例,本技术不对最近任务界面的表现形式进行限定。
310.s1403:第一终端在最近任务界面显示第一应用程序的标识。
311.当进入最近任务界面时,第一终端的屏幕上显示第二终端最近使用的第一应用程序的标识。
312.应该理解,上述步骤的顺序仅为一种可能的实现形式,本技术不对其进行限定。例如,可以先进行步骤s1402,再进行步骤s1401,即当第一终端接收到来自用户的第一指令或第二指令时,向第二终端发送用于请求第二终端的最近任务信息的第一请求,再接收来自第二终端的最近任务信息。
313.可选的,该实施例还可以包括:第一终端还可以接收来自用户的清理第一应用程序的指令,并向第二终端发送第二请求,第二请求用于指示第二终端清理第一应用程序。当第二终端清理了第一应用程序后,第一终端还可以接收来自第二终端的反馈信息,该反馈信息用于指示第一应用程序应被清理。
314.在第一终端的最近任务界面中,用户还可以将第一应用程序对应的任务卡片拖拽至预设位置(例如最近任务界面中第一终端的标识处),使得第一终端根据从第二终端接收的第一应用程序的信息,运行第一应用程序。
315.由于第一终端获取第二终端的最近任务信息,涉及到第二终端的用户的隐私问题,因此在第一终端接收第二终端的最近任务信息之前,可以先让第一终端和第二终端建立可信关系。
316.图4(j)是本技术另一个实施例的流程示意图。
317.如图4(j)所示,该实施例包括如下步骤:
318.s1501:第二终端接收来自第一终端的第一请求,第一请求用于请求第二终端的最近任务信息,该最近任务信息中包括第二终端最近使用的应用程序。
319.s1502:向第一终端发送最近任务信息。
320.可选的,第二终端还可以接收来自第一终端的第二请求,第二请求用于指示第二终端清理最近任务信息中的应用程序。第二终端响应于第二请求,清理相应的应用程序,并向第一终端发送反馈信息,该反馈信息用于指示该应用程序已经被清理。
321.在本技术的其他实施例中,第一终端还可以接收来自第二终端的其他任务信息,例如第二终端在预设时间段内运行时间最长的应用程序的信息,从而可以更好地了解第二终端的应用程序的使用情况。
322.在一些示例性的实施例中,在第一终端的最近任务界面显示其他终端的最近使用
的应用程序时(或者也可称为显示其他终端的最近任务快照、显示其他终端的最近任务卡片或者历史任务卡片等),可以按照其他终端常用的使用状态在第一终端的最近任务界面来布局其他终端的任务卡片。例如,其他终端常用的使用状态包括:横屏使用、竖屏使用、折叠屏的展开态竖屏使用、折叠屏的展开态横屏使用、折叠屏的折叠态横屏使用、折叠屏的折叠态竖屏使用等。或者,还可以按照其他终端单个用户的使用状态在第一终端的最近任务界面布局的其他终端的任务卡片。或者,还可以按照第一终端的屏幕情况(例如大小等)以及使用情况(例如横屏或者竖屏使用等)在第一终端的最近任务界面布局其他终端的任务卡片。或者,还可以按照用户在第一终端上的设置在第一终端的最近任务界面布局的其他终端的任务卡片等。本技术在此不作限制。
323.在一些示例性的实施例中,可以按照图4(k)和图4(l)所示的流程确定设备a的历史任务卡片在另一个设备上最近任务界面显示布局情况。
324.如图4(k)所示的,如果设备a为折叠屏设备(例如为折叠屏手机等),根据设备a之前的一段时间内常用的使用状态是否为展开态:如果是,进一步确定该时间段内,常用的使用状态是否为展开态竖屏使用,如果是,则按照设备a展开态竖屏方式在另一个设备上的最近任务界面显示(或者也可以称为布局)设备a的历史任务卡片。如果常用的使用状态为展开态横屏使用,则按照设备a展开态横屏方式在另一个设备上的最近任务界面显示设备a的历史任务卡片。
325.如果常用的使用状态为折叠态,则进一步的确定一段时间段内,常用的使用状态是否为折叠竖屏使用,如果是,则按照设备a折叠态竖屏的方式在另一个设备上的最近任务界面显示设备a的历史任务卡片。如果常用的使用状态为折叠态横屏使用,则按照设备a折叠态横屏的方式在另一个设备上的最近任务界面显示设备a的历史任务卡片。
326.如图4(l)所示的,如果设备a为非折叠屏设备(例如为非折叠屏手机或者平板电脑等),根据设备a之前的一段时间内常用的使用状态是否为竖屏的方式;如果是,则按照设备a竖屏的方式在另一个设备上的最近任务界面显示设备a的历史任务卡片。如果常用的使用状态为横屏使用,则按照设备a横屏的方式在另一个设备上的最近任务界面显示设备a的历史任务卡片。
327.应该理解的是,在图4(k)和图4(l)所示的判断步骤中,任意一个分支步骤均可以单独执行,而不必须按照图4(k)或者图4(l)所示的所有步骤依次进行判断。换句话说,在图4(k)和图4(l)所示的判断步骤中,任意一个步骤均可以为一个独立的方案。
328.在一些示例性的实施例中,在第一终端上显示第一终端和其他设备的任务卡片时,用户还可以进行任务卡片布局的选择,在用户进行布局选择后,第一终端可以按照用户的选择布局形式,在第一终端上显示第一终端和其他设备的任务卡片。例如,用户可选择的布局形式包括:横向的列表模式(list)、网格模式(grid)、堆栈模式(stack)、垂直列表模式(vertical list)、细长条列表模式(slim list)等。本技术在此不作限制。
329.下面结合不同的例子分别进行说明。应理解,下面的图5(a)至图6(e)中的示例既可以是图4(k)或者图4(l)中所示的流程图的一部分,也可以是独立的方案,本技术实施例对此不限定。
330.示例1:假设第一终端为平板电脑,第二终端为另一台平板电脑,第三终端为非折叠屏的手机,第四终端为折叠屏的手机。
331.在一些示例性的实施例中,图5(a)所示的为在第一终端(本机)的最近任务界面显示的第二终端的历史任务卡片的示意图。如图5(a)所示的,第一终端的最近任务界面显示的第二终端的历史任务卡片布局为按照第二终端横屏使用时多任务布局显示。在图5(a)中,在第一终端的最近任务界面中分别显示第一终端以及与第一终端相连(例如:登录了相同的账号、连接了同一个wi-fi热点、或者登录了关联的账号等)的多个终端的标识(icon),当第一终端或者与第一终端相连的某个终端的标识被选中时,在最近任务界面中会相应的显示该终端所对应的历史任务卡片。而如图5(a)所示,当第一终端接收用户的指令,使得第二终端(matepad)的标识被选中时,第一终端的最近任务界面中显示第二终端的历史任务卡片。在第一终端(本机)的最近任务界面显示第二终端(matepad)的历史任务卡片时,按照第二终端(matepad)横屏使用时单排显示第二终端的历史任务卡片。在该实现方式中,在一个平板电脑的最近任务界面显示另一个平板电脑的历史任务卡片时,按照另一个平板电脑横屏使用单排显示另一个平板电脑横屏的历史任务卡片,符合用户对平板电脑的使用习惯以及平板电脑的正常显示规律,对用户比较友好,提高用户体验。还应理解,图5(a)所示的方案可以为一个独立的方案。
332.在一种可能的实现方式中,如图5(b)所示的,在第一终端(本机)的最近任务界面显示第二终端(matepad)的历史任务卡片时,可以按照第二终端(matepad)横屏使用时双排显示第二终端的历史任务卡片。在该实现方式中,在一个平板电脑的最近任务界面显示另一个平板电脑的历史任务卡片时,按照另一个平板电脑横屏使用双排或者更多排(例如三排等)显示第二终端的历史任务卡片,符合用户对平板电脑的使用习惯以及平板电脑的正常显示规律,对用户比较友好,提高用户体验。还应理解,图5(b)所示的方案可以为一个独立的方案。
333.在一种可能的实现方式中,如图5(c)所示的,图5(c)所示的为在第一终端(本机)的最近任务界面显示的第三终端(p40)的历史任务卡片的示意图。如图5(c)所示的,在第一终端(本机)显示第三终端(p40)的历史任务卡片时,按照第三终端(p40)竖屏使用时显示第三终端的历史任务卡片。在该实现方式中,在一个平板电脑的最近任务界面显示非折叠屏手机的历史任务卡片时,按照非折叠屏手机竖屏使用显示非折叠屏手机的历史任务卡片,符合用户对非折叠屏手机的使用习惯以及平板电脑的正常显示规律,对用户比较友好,提高用户体验。还应理解,图5(c)所示的方案可以为一个独立的方案。
334.在一种可能的实现方式中,如图5(d)所示的,图5(d)所示的为在第一终端(本机)的最近任务界面显示的第四终端(mate x2)的历史任务卡片的示意图。由于第四终端(mate x2)为折叠屏设备。因此,作为一种可能的实现方式,如图5(d)所示的,在第一终端(本机)显示第四终端(mate x2)的历史任务卡片时,按照第四终端(mate x2)折叠屏展开态竖屏使用时单排显示第四终端的历史任务卡片。可选的,作为另一种可能的实现方式:如果在第一终端(本机)的屏幕比较高,也可以按照第四终端(mate x2)折叠屏展开态竖屏使用时多排显示第四终端的历史任务卡片。在该实现方式中,在一个平板电脑的最近任务界面显示折叠屏手机的历史任务卡片时,按照折叠屏手机展开态竖屏使用时显示折叠屏手机的历史任务卡片,符合用户对折叠屏手机的使用习惯以及平板电脑的正常显示规律,对用户比较友好,提高用户体验。还应理解,图5(d)所示的方案可以为一个独立的方案。
335.示例2:假设第一终端为非折叠屏的手机,第二终端为平板电脑,第三终端为折叠
屏的手机。
336.在一些示例性的实施例中,图6(a)所示的为在第一终端(本机)的最近任务界面显示的第二终端(matepad)的历史任务卡片的示意图。如图6(a)所示的,在第一终端(本机)显示第二终端(matepad)的历史任务卡片时,按照第二终端(matepad)横屏使用时双排显示第二终端的历史任务卡片。可选的,在第一终端(本机)显示第二终端(matepad)的历史任务卡片时,还可以按照第二终端(matepad)横屏使用时单排显示第二终端的历史任务卡片。在该实现方式中,在非折叠屏手机的最近任务界面显示平板电脑的历史任务卡片时,按照平板电脑展开横屏使用时双排或者单排显示平板电脑的历史任务卡片,符合用户对平板电脑的使用习惯以及非折叠屏手机的正常显示规律,对用户比较友好,提高用户体验。还应理解,图6(a)所示的方案可以为一个独立的方案。
337.在一种可能的实现方式中,如图6(d)所示的,图6(b)所示的为在第一终端的最近任务界面显示的第三终端(mate x2)的历史任务卡片的示意图。由于第三终端(mate x2)为折叠屏设备。因此,作为一种可能的实现方式,如图6(b)所示的,在第一终端(本机)显示第三终端(mate x2)的历史任务卡片时,按照第三终端(mate x2)展开态竖屏使用时单排显示第三终端的历史任务卡片。可选的,如果在第一终端(本机)的屏幕比较高,也可以按照第三终端(mate x2)展开态竖屏使用时多排显示第三终端的历史任务卡片。
338.示例3:假设第一终端为非折叠屏的手机,第二终端为平板电脑,第三终端为折叠屏的手机,并且,第一终端为横屏显示状态。在该实现方式中,在非折叠屏手机的最近任务界面显示折叠屏手机的历史任务卡片时,按照折叠屏手机展开态竖屏使用时单排显示折叠屏手机的历史任务卡片,符合用户对折叠屏手机的使用习惯以及非折叠屏手机的正常显示规律,对用户比较友好,提高用户体验。还应理解,图6(b)所示的方案可以为一个独立的方案。
339.在一些示例性的实施例中,图6(c)所示的为在第一终端(本机)的最近任务界面显示的第一终端(例如为p40)的历史任务卡片的示意图。如图6(c)所示的,由于第一终端横屏显示,因此,按照第一终端(本机)横屏使用时显示第一终端(本机)的历史任务卡片。
340.在一种可能的实现方式中,如图6(d)所示的,图6(d)所示的为在第一终端(本机)的最近任务界面显示的第二终端(matepad)的历史任务卡片的示意图。如图6(d)所示的,由于第一终端横屏显示,因此,按照第一终端(本机)横屏使用时显示第二终端(matepad)的历史任务卡片。
341.可选的,在图6(c)和图6(d)所示的实现方式中,在非折叠屏手机的最近任务界面显示本机的历史任务卡片时,按照非折叠屏手机的使用状态(横屏显示或者竖屏显示)在本机上显示本机的历史任务卡片(横屏使用,横屏显示;竖屏使用,竖屏显示),适应了用户不同的使用习惯,在不需要用户进行横竖屏的切换情况下向用户显示本机的任务卡片,提高用户体验。还应理解,图6(c)和图6(d)所示的方案分别可以为一个独立的方案。
342.在一种可能的实现方式中,图6(e)所示的,图6(e)所示的为在第一终端(本机)的最近任务界面显示的第三终端(mate x2)的历史任务卡片的示意图。如图6(e)所示的,由于第一终端横屏显示,因此,按照第一终端(本机)横屏使用时显示第三终端(mate x2)的历史任务卡片,并且,第三终端(mate x2)的历史任务卡片按照折叠屏展开态竖屏使用时单排显示。可选的,第三终端(mate x2)的历史任务卡片也可以按照折叠屏折叠态竖屏显示;或者,
折叠屏折叠态横屏显示;或者,展开态横屏显示等。本技术在此不作限制。
343.在图6(e)所示的实现方式中,在非折叠屏手机的最近任务界面显示折叠屏手机的历史任务卡片时,按照用户对非折叠屏手机的使用状态(横屏使用或者竖屏使用),并且,按照折叠屏手机折叠屏展开态竖屏使用、或者折叠屏折叠态竖屏使用时显示折叠屏手机的任务卡片。适应了用户不同的使用习惯,在不需要用户进行横竖屏的切换情况下,进一步的按照用户对折叠屏手机的常用的使用状态显示折叠屏手机的历史任务卡片,提高用户体验。还应理解,图6(e)所示的方案分别可以为一个独立的方案。
344.应该理解,上述的各个例子仅仅示意性的,不应该对应本技术在本设备的最近任务界面显示其他设备的历史任务卡片的布局产生任何的限制。在本技术的另一实施例中,还可以采用与上述的例子不同的布局来显示,本技术在此不作限制。
345.在本技术实施例中,在第一终端(本机或者本端设备)的最近任务界面显示的其他设备历史任务卡片时,其他设备的最后一个或者多个历史任务卡片可以显示:该设备桌面快照(或者也可以称为前台桌面快照);或者显示该设备桌面快照和悬浮球;或者显示该设备桌面快照和悬浮窗;或者显示该设备桌面快照,该桌面快照显示有任务卡片;或者显示控制该设备的遥控器、或者显示该设备正在运行(ongoing)的任务等。下面结合具体的例子进行说明。
346.示例4:假设第一终端(本机)为平板电脑,图7(a)所示的为在第一终端的最近任务界面查看非折叠屏手机(p40)的历史任务卡片的示意图。如图7(a)所示的,手机p40的历史任务卡片中的最后一个任务卡片显示的为该p40手机的桌面快照,并且,在该桌面快照上还可以存在一个界面能力(feature ability,fa))卡片。该fa卡片可以是一个应用或者任务对应的卡片。用户可以在p40手机的桌面快照上点击该“fa卡片”,点击该fa卡片后,作为一种可能的实现方式,在第一终端的屏幕上将显示该fa卡片对应的应用或者任务,即在第一终端上打开该fa卡片对应的应用或者任务。或者,作为另一种可能的实现方式,点击该fa卡片后,在第一终端的屏幕上将显示手机p40的桌面,手机p40的桌面上显示有该fa卡片,用户可以点击该fa卡片,在第一终端的屏幕上将显示显示该fa卡片对应的应用或者任务。
347.示例5:假设第一终端(本机)为平板电脑,图7(b)所示的为在第一终端的最近任务界面查看非折叠屏手机(手机p40)的历史任务卡片的示意图。如图7(b)所示的,手机p40的历史任务卡片中的最后几个任务卡片显示的为该手机p40的桌面第一屏的快照,用户可以在该手机p40的桌面第一屏的快照上做出向左滑动的手势时,第一终端的最近任务界面的最后任务卡片切换为该手机p40的桌面第二屏的快照,如图7(c)所示的。可选的,用户可以点击该p40手机的桌面第一屏的快照或者桌面第二屏的快照,在第一终端上将显示手机p40的桌面第一屏的快照或者桌面第二屏的界面。用户可以在手机p40桌面第一屏的快照上或者第二屏快照上点击桌面快照上的应用图标,在本机打开该应用。或者,作为另一种可能的实现方式,如图7(c)所示的。用户可以点击手机p40桌面第一屏的快照或者第二屏快照空白区域(桌面快照上除过应用图标之外的区域),点击后,在第一终端的屏幕上将显示手机p40的桌面的第一屏界面或者第二屏桌面,用户可以在手机p40的桌面上点击应用图标,在本机打开该应用。
348.示例6:假设第一终端(本机)为平板电脑,图7(d)所示的为在第一终端的最近任务界面查看非折叠屏手机(例如p40)的历史任务卡片的示意图,如图7(d)所示的,手机p40的
历史任务卡片中的最后一个任务卡片显示的为该手机p40的桌面快照,在手机p40的桌面快照上显示有某一个任务或者应用的悬浮窗。可选的,用户可以点击该手机p40的桌面快照上的悬浮窗,点击该悬浮窗后,作为一种可能的实现方式,在第一终端上将显示该悬浮窗对应的应用或者任务,即在第一终端上打开该悬浮窗对应的应用或者任务。或者,作为另一种可能的实现方式,点击该悬浮窗后,在第一终端上将显示p40的桌面的界面,可选的,p40的桌面的界面上存在该悬浮窗,用户在p40的桌面上点击该悬浮窗后,在第一终端上便打开该悬浮窗对应的应用或者任务。
349.示例7:假设第一终端(本机)为平板电脑,图7(e)所示的为在第一终端的最近任务界面查看非折叠屏手机(例如p40)的历史任务卡片的示意图。如图7(e)所示的,p40手机的历史任务卡片中的最后一个任务卡片显示的为该p40手机的桌面快照,在该p40手机的桌面快照上显示有某一个任务或者应用的悬浮球。可选的,用户可以点击该p40手机的桌面快照上的悬浮球,点击该悬浮球后,作为一种可能的实现方式,在第一终端上将显示(例如,全屏或者以悬浮窗形式显示)该悬浮球对应的应用或者任务,即在第一终端上打开该悬浮球对应的应用或者任务;或者,作为另一种可能的实现方式,用户点击该悬浮球后,在第一终端上将显示p40的桌面,可选的,p40的桌面的界面上存在该悬浮球,用户在p40的桌面上点击该悬浮球后,在第一终端上便打开该悬浮球对应的应用或者任务。
350.示例8:假设第一终端(本机)为平板电脑,图7(f)所示的为在第一终端的最近任务界面查看大屏设备(huawei tv)的历史任务卡片的示意图,如图7(f)所示的,可选的,大屏设备的历史任务卡片中的最后一个任务卡片显示的为大屏设备的遥控器的快照。可选的,如图7(f)所示的,用户可以点击大屏设备的遥控器的快照上的空白区域(遥控器快照上除过控制按钮之外的区域),点击后,在第一终端上将显示该大屏设备的遥控器的详情,用户可以直接在第一终端上利用大屏设备的遥控器控制大屏设备。或者,用户可以直接在大屏设备的遥控器的快照上点击该遥控器的快照上的控制按钮,从而控制该大屏设备。
351.示例9:假设第一终端(本机)为手机,图7(g)所示的为在第一终端的最近任务界面查看其他多个设备历史任务卡片的示意图。可选的,该多个设备中的其中一个(例如为最后一个)的设备图标(icon)为轻设备类型的设备图标。轻设备为物联网(internet of things,iot)设备、可穿戴设备以及智能家居设备等设备的总称。例如,轻设备可以包括:智能冰箱、智能空调、智能炒菜锅、智能油烟机、智能音箱、智能手表等。用户可以在图7(g)中点击“轻设备”的图标后,如图7(h)所示的,可以在第一终端最近任务界面中的一个或者多个任务卡片上显示这些轻设备(厨房设备)正在运行(ongoing)任务对应的任务卡片。在图7(h)中,用户在轻设备的任务卡片上做出向左滑动的手势时,如图7(i)所示的,第一终端的最近任务界面的任务卡片显示的为另外一些轻设备(例如随身设备)的任务卡片。
352.在图7(g)至图7(i)所示的例子中,是将所有的轻设备集成在一起,在屏幕的上方利用一个轻设备图标显示所有的轻设备。在本技术另外的一些实施例中,每个轻设备也可以对应自己的设备图标,显示在屏幕的上方,即一个轻设备对应一个设备图标。或者,也可以将轻设备进行分类,一种类型的轻设备对应一个图标,例如:厨房类的多个轻设备对应一个设备图标,客厅使用类型的多个轻设备对应一个设备图标等。或者,用户可以自行设置,使得某一个或者某几个轻设备共同对应一个设备图标等,本技术在此不作限制。
353.在一些示例性的实施例中,在图7(h)和图7(i)所示的界面中,作为一种可能的实
现方式,用户可以在图7(h)和图7(i)所示的任意一个轻设备的任务卡片上的空白区域(即任务卡片上除过控制按钮之外的区域)进行点击操作。例如,如图7(j)所示的,用户在智能炒菜锅任务卡片上的空白区域进行点击操作,则第一终端显示的界面如图7(k)所示的,点击后则可以在第一终端的界面上显示智能炒菜锅正在运行的任务的详情,用户可以在该详情界面远程进行任务控制。
354.又例如,如图7(l)所示的,用户在华为手表(huawei watch gt2)任务卡片上的空白区域进行点击操作,则第一终端显示的界面如图7(m)所示的,点击后则可以在第一终端的界面上音乐播放器正在运行的任务的详情,用户可以在该详情界面远程进行任务控制。
355.在一些示例性的实施例中,在图7(h)和图7(i)所示的界面中,作为另一种可能的实现方式,用户也可以在图7(h)和图7(i)所示的任意一个轻设备的任务卡片上的空白区域进行点击操作,点击后则可以在第一终端的界面上该智能炒菜锅(即轻设备)的详情。
356.在一些示例性的实施例中,在图7(h)和图7(i)所示的界面中,作为另一种可能的实现方式,用户也可以对任意一个轻设备卡片上的控制按钮直接进行点击操作,即用户直接在轻设备卡片上点击相应的控制按钮,这样也可以实现远程任务控制。例如,如图7(n)所示的,用户在智能炒菜锅的任务卡片点击“关闭”按钮,则智能炒菜锅停止运行。
357.在一些示例性的实施例中,在第一终端的最近任务界面显示其他轻设备的任务卡片时,如果轻设备上的对应操作比较少,则可以使用标准的设备卡片来显示该轻设备任务卡片。例如,图7(h)和图7(i)中所示的智能炒菜锅、智能油烟机、华为手表(huawei watch gt2)、智能洗衣机对应的随身卡片均为标准的设备卡片。
358.可选的,作为另一种可能的实现方式,在第一终端的最近任务界面显示其他轻设备的任务卡片时,如果某一个轻设备上的对应操作比较多,可以在轻设备的任务卡片上显示更多的功能,例如,假设该轻设备为一个智能炒菜锅,能快速的切换到:炖煮、翻炒、调节火力、或者可视化的看到炒菜锅里面菜的情况,则该轻设备对应的任务卡片可以利用沉浸式的任务卡片来显示。例如,图7(o)所示的,第一终端的最近任务界面中智能炒菜锅和智能油烟机对应的任务卡片为沉浸式任务卡片。
359.在一些示例性的实施例中,在第一终端的最近任务界面显示其他轻设备的任务卡片的情况下,用户也可以将某一个轻设备的任务卡片拖动至第一终端的最近任务界面中其他智能设备(例如matepad、mate x2)的图标处,则轻设备的任务卡片将在其他智能设备的最近任务界面显示,或者在其他智能设备的桌面上显示。可选的,在该智能设备接收到轻设备的任务卡片的信息后,智能设备还可以将轻设备的任务卡片添加在该智能设备的最近任务中心中,或者添加在桌面上。
360.示例10:假设第一终端(本机)为手机,第一终端的最近任务界面显示其他多个设备历史任务卡时,最后一个或者多个任务卡片可以显示某个设备的桌面应用图标。例如,图7(p)所示的为在第一终端的最近任务界面显示手机p40的历史任务卡片的示意图,最后一个显示手机p40的桌面应用图标(icon)。
361.在图7(p)所示例子中,作为一种可能的实现方式,用户可以点击该任务卡片的空白区域,如图7(q)所示的,从而在第一终端上显示手机p40的桌面应用。用户可以在图7(q)所示的界面上拖动应用图标,帮助手机p40管理应用(例如应用排序、创建文件夹、应用删除等)。
362.在图7(p)所示例子中,作为另一种可能的实现方式,用户也可直接在手机p40桌面应用的任务卡片上进行操作,例如,在手机p40桌面应用的任务卡片中拖动应用图标,帮助手机p40管理应用,而不用先在第一设备上显示手机p40的桌面应用。
363.在一些示例性的实施例中,除了在用户使用的终端设备的最近任务界面显示其他轻设备的任务卡片之外,在轻设备也查看可以同账号或者关联账号的其他智能设备(包括其他轻设备以及用户使用的智能终端,例如手机、平板电脑等)的任务卡片,并且也可以在轻设备上对该任务卡片进行操作,实现在轻设备上远程控制其他智能终端设备。
364.例如,在某一个轻设备上,用户在查看同账号或者关联账号的其他智能终端的任务卡片时,可以通过该轻设备自身的传感器、摄像头、麦克风等辅助进行用户的身份认证,或者,还可以通过该轻设备自身以及周边其他设备(例如用户携带的智能手表、家中的大屏设备等)的传感器、摄像头、麦克风等辅助进行用户的身份认证。在用户的身份认证通过后,可查看在该轻设备上显示的其他设备的任务卡片,并且可以对任务卡片进行操作,实现在轻设备上远程控制其他智能终端设备以及其他轻设备。下面将结合具体的例子进行说明。
365.示例11:如图7(r)所示的,假设用户使用的轻设备为智能油烟机,用户在该智能油烟机的屏幕上点击“轻设备”按钮,则可以在智能油烟机的屏幕上显示出与该油烟机同账号或者关联账号的其他轻设备正在运行(ongoing)的任务卡片。如图7(r)所示的,用户点击“轻设备”按钮之后,显示的轻设备任务卡片包括智能炒菜锅和智能洗衣机的任务卡片。在智能油烟机的屏幕上显示其他轻设备的任务卡片时,可以根据智能油烟机的屏幕适配显示(即任务卡片根据屏幕响应式布局)。用户向左或者向右滑动任务卡片时,可以查看更多的其他账号或者关联账号的轻设备的任务卡片。可选的,用户可以点击其中的某个任务卡片上空白区域(任务卡片上除过控制按钮之外的区域),则在显示屏上全屏或者根据屏幕适配显示该任务卡片的详细内容,用户可以在该详情界面远程进行任务控制。或者,用户也可以对任意一个轻设备任务卡片上的控制按钮直接进行点击操作,即用户直接在轻设备的卡片上点击相应的控制按钮,这样也可以实现远程任务控制。
366.示例12:如图7(s)所示的,假设用户使用的轻设备为智能油烟机,用户在该智能油烟机的屏幕上点击“轻设备”按钮,此时,智能油烟机可调用自身以及周边其他设备(例如用户携带的智能手表、家中的大屏设备等)的传感器、摄像头、麦克风等辅助进行用户的身份认证,在用户的身份认证通过后,在智能油烟机的屏幕上显示出与该油烟机同账号或者关联账号的其他轻设备的ongoing任务卡片,可选的,一个轻设备可以对应一个ongoing任务卡片。用户向左滑动ongoing任务卡片,最后几个任务卡片为与该油烟机同账号或者关联账号的智能终端的图标。如图7(s)中所示的终端1和终端2,用户选择需要查看的智能终端的图标,假设为终端1,用户点击“终端1”的图标,则在智能油烟机的屏幕上显示出终端1的多个任务卡片。可选的,终端1的多个任务卡片包括:终端1的历史任务卡片和前台任务卡片,前台任务卡片为:终端1的屏幕上正在显示的应用对应的任务卡片。例如,终端1屏幕上正在播放视频,则该视频应用对应的任务卡片为前台任务卡片。可选的,终端1的屏幕上显示的悬浮窗对应任务卡片也可以为终端1的前台任务卡片,而历史任务卡片包括终端1在后台运行的应用对应的任务卡片。
367.可选的,用户可以点击其中的某个任务卡片上空白区域,则在智能油烟机的显示屏上全屏或者根据屏幕适配显示该任务卡片的详细内容,用户可以在该详情界面远程进行
任务控制。或者,用户也可以对任意一个设备的卡片上的控制按钮直接进行点击操作,即用户直接在设备的任务卡片上点击相应的控制按钮,这样也可以实现远程任务控制。
368.在第一终端(本机)的最近任务界面显示的其他设备(远端设备)历史任务卡片时,用户可以在第一终端上点击某一个任务卡片,从而在第一终端上显示(或者也可以称为运行)该任务卡片对应的任务或者应用,这个过程可以称为在第一终端上拉起远端设备的任务卡片。
369.在一些示例性的实施例中,在第一终端的最近任务界面上拉起远端设备的任务卡片时,可以根据如图8(a)所示的规则。
370.应该理解的是,在图8(a)所示的判断步骤中,任意一个分支步骤均可以单独执行,而不必须按照图8(a)所示的所有步骤依次进行判断。换句话说,在图8(a)所示的判断步骤中,任意一个步骤均可以为一个独立的方案。
371.如图8(a)所示,如果远端设备的某个应用是基于复制模式迁移至第一终端的最近任务界面上,即第一终端的最近任务界面上某个任务卡片是通过复制模式从远端设备的某个应用获取的,在第一终端上拉起该任务卡片后,第一终端和远端设备可以同时显示(或者也可以称为运行)该应用。并且,第一终端和远端设备显示的应用的状态是同步的(例如均显示同一个ppt文件的同一页),该应用在第一终端和远端设备的数据是同步的。第一终端和远端设备显示该应用时,可以根据各自屏幕的特点适配显示,在本技术中,适配显示也可以理解在显示的过程中,不同设备根据各自屏幕的大小,可以调整应用在屏幕上显示的大小和布局,即应用在屏幕上显示的布局和尺寸是可调整的(resizable),例如,一个全屏显示,一个为非全屏显示;或者,一个为横屏显示,一个为竖屏显示等。在远端设备的最近任务界面上点击该应用的任务卡片,或者,在远端设备的桌面上点击该应用图标,不会拉回该应用。其中,“拉回应用”可以理解为:在应用的来源端设备(这个例子中为远端设备)进行操作,使得该应用迁移回来源端设备,该应用不会显示在其他设备的最近任务界面上或者桌面上,或者不在其他设备上运行。
372.如果远端设备的某个应用不是基于复制模式迁移至第一终端的最近任务界面上,进一步的判断该应用是否是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上。基于窗口投屏技术的迁移模式不需要第一终端安装该应用程序该应用。如果是,则继续判断该应用是否支持多实例。
373.在该应用支持多实例的情况下,该应用可以同时在第一终端和来源端设备(远端设备)上显示(或者也可以称为运行)。该应用在第一终端和远端设备的数据是同步的,第一终端和远端设备显示该应用时,可以根据各自屏幕的特点适配显示。但是,第一终端和远端设备显示的应用的状态可以是不同步的(例如一个设备显示ppt文件的第一页,另一个显示该ppt文件的第二页)。在远端设备的最近任务界面上点击该应用的任务卡片,或者,在远端设备的桌面上点击该应用图标,不会拉回该应用。
374.如果该应用不支持多实例,则该应用不可以同时在第一终端和远端设备上同时显示。如果该应用为远端设备的前台任务或者前台应用(正在远端设备界面上显示并且运行的任务或应用),该应用迁移到第一终端后,远端设备自动退出该任务,远端设备的屏幕上显示远端设备桌面。在远端设备的最近任务界面上点击该应用的任务卡片,或者,在远端设备的桌面上点击该应用图标,会拉回该应用。
375.如果远端设备的某个应用不是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,而是基于fa技术的迁移模式显示在第一终端的最近任务界面上,则第一终端需要首先安装该应用程序或者该应用的fa,安装完成后才可以在第一终端的最近任务界面上显示该应用的任务卡片。在第一终端安装该应用程序或者该应用的fa后,该应用在第一终端和远端设备的数据是同步的,第一终端和远端设备显示该应用时,可以根据各自屏幕的特点适配显示。但是,第一终端和远端设备显示的应用的状态可以是不同步的。在远端设备的最近任务界面上点击该应用的任务卡片,或者,在远端设备的桌面上点击该应用图标,不会拉回该应用。
376.下面将结合具体的例子进行说明。应理解,下面的图8(b)至图8(n)中的示例既可以是图8(a)中所示的流程图的一部分,也可以是独立的方案,本技术对此不限定。
377.示例13:假设第一终端(本机)为平板电脑,图8(b)所示的为在第一终端的最近任务界面查看其他多个设备历史任务卡片的示意图。如图8(b)所示,假设:远端设备(即任务来源端设备)的杂志锁屏应用是基于复制模式显示在第一终端的最近任务界面上,即第一终端的最近任务界面上杂志锁屏应用的任务卡片是通过复制模式从p40设备获取的。用户在第一终端的最近任务界面上点击该杂志锁屏应用的任务卡片,即在第一终端上拉起该任务卡片后,如图8(c)所示,第一终端和p40可以同时显示该杂志锁屏应用。并且,第一终端和远端设备显示的应用的状态是同步的,第一终端和p40设备均显示该杂志锁屏应用的图片3。该应用在第一终端和p40设备的数据是同步的。例如,用户在第一终端上对图片3进行编辑,则该编辑状态自动同步到p40设备上。第一终端和p40设备显示杂志锁屏应用时,可以根据各自屏幕的特点适配显示(例如,p40为竖屏显示,第一终端为横屏显示等)。在该实现方式中,远端设备的应用是基于复制模式迁移至第一终端设备上,远端设备和第一终端可以同时显示该应用程序,两个设备上显示的应用程序的状态(数据)是同步的,用户在任一设备上对应用的操作均可以同步到这两个设备上,方便用户操作,提高用户体验。还应理解,示例13描述的方案可以为一个独立的方案。
378.在一种可能的实现方式中,如示例14所描述的:
379.示例14:假设第一终端(本端设备)为平板电脑,图8(d)所示的为在第一终端的最近任务界面查看其他多个设备历史任务卡片的示意图。如图8(d)所示,假设:远端设备的杂志锁屏应用:是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,并且,杂志锁屏应用是支持多实例的;或者,是基于fa技术的迁移模式显示在第一终端的最近任务界面上,在这两种情况下,该应用在第一终端和p40设备的数据是同步的。用户在第一终端的最近任务界面上点击该杂志锁屏应用的任务卡片,假设用户点击杂志锁屏应用的任务卡片中的图片2,即在第一终端上拉起该任务卡片后,如图8(e)所示,第一终端显示该杂志锁屏应用的图片2,而p40设备仍然显示的为该杂志锁屏应用的图片3,即第一终端和p40显示杂志锁屏应用的状态是不同步的,两端设备显示该杂志锁屏应用的状态互不影响。并且,第一终端和p40设备显示该杂志锁屏应用时,可以根据各自屏幕的特点适配显示(例如,p40为竖屏显示,第一终端为横屏显示等)。在该实现方式中,远端设备的应用是基于fa技术的迁移模式显示在第一终端的最近任务界面上,或者,是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,并且,该应用是支持多实例的。远端设备和第一终端可以同时显示该应用程序,两个设备上显示的应用程序的状态(数据)是不同步的,用户在任一设备
上对应用的操作均是独立的,两个设备显示的应用的状态互不影响。方便用户操作,使得用户对不同设备的应用的操作具有灵活性,提高用户体验。还应理解,示例14描述的方案可以为一个独立的方案。
380.在一些示例性的实施例中,如果p40设备的应用是基于fa技术的迁移模式显示在第一终端的最近任务界面上,则在用户在第一终端上拉起该应用卡片后,在第一终端上也可以不显示该应用的来源设备的提示信息。例如,在第一终端上也可以不显示“来自p40”的提示。
381.在一种可能的实现方式中,如示例15所描述的:
382.示例15:假设第一终端(本机)为平板电脑,图8(f)所示的为在第一终端上拉起远端设备(p40)“华为视频”app后在第一终端上显示的界面图,第一终端上正在播放p40设备“华为视频”app的视频。假设:p40设备的华为视频应用:是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,并且,华为视频应用是不支持多实例的。如果用户在p40设备上拉回该应用,用户可以在p40设备的桌面上点击该“华为视频”的图标,或者,也可以在p40设备上的最近任务界面中,选择p40设备的“华为视频”任务卡片,点击该任务卡片,则可以拉回该华为视频应用。图8(f)所示的为用户在p40设备的桌面上点击该“华为视频”的图标,在用户拉回该华为视频应用后,如图8(g)所示的,第一终端将不在播放“华为视频”app的视频,显示为第一终端的桌面,而p40设备将接续着之前在第一终端上播放的视频状态,继续播放该视频(例如,在拉回该“华为视频”app之前,第一终端上播放到某个视频的t时刻,则拉回后,p40设备将继续播放t时间之后的视频)。在该实现方式中,远端设备的应用是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,并且,该应用是不支持多实例的。用户在远端设备上拉回该应用后,第一终端将不再显示该应用,可以方便用户在任何时间拉回该应用,用户操作简单。还应理解,示例15描述的方案的可以为一个独立的方案。
383.在一种可能的实现方式中,如示例16所描述的:
384.示例16:假设第一终端(本机)为平板电脑,图8(h)所示的为在第一终端上拉起远端设备(p40)“华为视频”app后在第一终端上显示的界面图,第一终端上正在播放p40设备“华为视频”app的视频。假设:p40设备的华为视频应用是基于复制模式显示在第一终端的最近任务界面上;或者,是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,并且,华为视频应用是支持多实例的;或者,是基于fa技术的迁移模式显示在第一终端的最近任务界面上。则用户在p40设备的桌面上点击该“华为视频”的图标,或者,用户在p40设备上的最近任务界面中,选择p40设备的“华为视频”任务卡片,点击该任务卡片,不会拉回该华为视频应用。图8(h)所示的为用户在p40设备的桌面上点击该“华为视频”的图标,在用户点击该“华为视频”的图标后,如图8(i)所示的,“华为视频”app进入新的视频选择界面,用户点击另一个视频(假设为视频2)进行播放,即用户在p40设备上新起了一个视频任务(视频2),这个新任务将不会影响第一终端上正在播放p40设备“华为视频”app的视频(即视频1)。如图8(i)所示的,用户在p40设备运行的新任务(视频2)和p40设备迁移至第一终端的“华为视频”app的视(即视频1)两者互不影响。在该实现方式中,远端设备的应用是基于复制模式显示在第一终端的最近任务界面上,或者,是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,并且,该应用是支持多实例的,或者,是基于fa技术的迁移
模式显示在第一终端的最近任务界面上。用户在远端设备上拉回该应用后,第一终端可以继续显示该应用,两个设备(远端设备和第一终端)上显示或者运行的应用的状态互不影响,用户可以在任一设备上对该应用进行操作,用户可以分别在这两个设备上,对两个设备中的任意一个设备上的应用进行独立操作,满足可用户对一个应用同时具有不同运行状态的需求,提高用户体验。示例16描述的方案的可以为一个独立的方案。
385.在一些示例性的实施例中,如果本端设备为小屏幕设备,而远端设备为大屏幕设备,在本端设备上拉起远端设备的任务卡片后,该任务卡片对应的应用将在本端设备屏幕上显示,在本端设备显示该应用的过程中,可以根据如下规则之一在本端设备的显示屏上显示该应用;
386.规则一:在本端设备上,根据本端设备的屏幕尺寸适配显示该应用。
387.可选的,在本技术实施例中,如果本端设备为宽屏幕设备,而远端设备为窄屏幕设备,在本端设备上拉起远端设备的任务卡片后,可以根据如下规则二在本端设备的显示屏上显示该任务卡片对应的应用。
388.规则二:在本端设备上,自动利用平行视界的方式显示该应用。
389.在本技术实施例中,平行视界的显示方式可以理解为一种应用分屏功能,支持一个应用,两屏显示。用户可以在可以使用的终端在横屏状态下以两个窗口展示同一个应用,同时操作,同时观看,两不耽误。例如,当用户在终端横屏状态下使用聊天软件时,系统可以进入平行视界模式,用户可以轻松地一边回复聊天信息,一边浏览朋友圈或者公众号文章;或者在网购时,可一边查看心仪宝贝的商品详情,一边继续浏览其他商品列表等。
390.在一些示例性的实施例中,如果本端设备为窄屏幕设备,而远端设备为宽屏幕设备,在本端设备上拉起远端设备的任务卡片后,可以根据如下规则三在本端设备的显示屏上显示该任务卡片对应的应用。
391.规则三:在本端设备上自动关闭平时视界的方式,利用本端设备屏幕尺寸适配显示该应用。
392.在一些示例性的实施例中,如果本端设备为窄屏幕设备,而远端设备为宽屏幕设备,在本端设备上拉起远端设备的任务卡片后,可以根据如下规则四在本端设备的显示屏上显示该任务卡片对应的应用:
393.规则四:在本端设备全屏显示该应用,并且,不进行横竖屏的切换,即按照该应用在远端设备上的显示状态,在本端设备的屏幕上显示。
394.下面将结合具体的例子进行说明;
395.在一种可能的实现方式中,如示例17所描述的:
396.示例17:假设第一终端(本端设备)为手机(例如为p40),远端设备为平板电脑。在p40上拉起平板电脑的杂志锁屏app的任务卡片后,该任务卡片对应的杂志锁屏界面将在p40屏幕上显示,如图8(j)所示的,平板电脑上显示杂志锁屏的界面为全屏显示,而在p40设备上,也会全屏适配显示该杂志锁屏界面。如图8(j)所示的,如果在平板电脑上拉起p40设备的杂志锁屏app的任务卡片后,该任务卡片对应的杂志锁屏界面将在平板电脑屏幕上全屏显示。
397.在该实现方式中,远端设备的应用迁移至本端设备上后,远端设备和本端设备可以分别根据各自的屏幕适配显示该应用,可以提高用户体验。还应理解,示例17描述的方案
可以为一个独立的方案。
398.在一种可能的实现方式中,如示例18所描述的:
399.示例18:假设第一终端(本端设备)为平板电脑,远端设备为手机(例如为p40)。本端设备为宽屏幕设备,而远端设备为窄屏幕设备,在平板电脑上拉起p40的新闻浏览类app的任务卡片后,该任务卡片对应的新闻浏览界面将在平板电脑屏幕上显示,如图8(k)所示的,平板电脑上显示新闻浏览界面为自动平行视界显示,而p40屏幕上显示的新闻浏览界面为自动关闭平行视界显示,即为正常的显示状态。
400.如图8(k)所示的,如果在p40上拉起平板电脑的新闻浏览类app的任务卡片后,该任务卡片对应的新闻浏览界面将在p40屏幕上显示,平板电脑上显示新闻浏览界面为自动平行视界显示,而p40屏幕上显示的新闻浏览界面为自动关闭平行视界显示,即为正常的显示状态(例如全屏适配显示等)。在该实现方式中,远端设备的应用迁移至本端设备上后,远端设备和本端设备可以分别根据各自的屏幕的特点,在较宽屏幕的设备上自动利用平行视界的方式显示该应用,在较窄屏幕的设备上利用正常的显示方式显示该应用,可以充分利用各自屏幕的特点进行显示,提高用户体验。还应理解,示例18描述的方案可以为一个独立的方案。
401.示例19:假设第一终端(本端设备)为手机(例如为p40),远端设备为平板电脑。在p40上拉起平板电脑的视频类app的任务卡片后,该任务卡片对应的视频将在p40屏幕上显示,如图8(l)所示的,由于平板电脑上显示的视频为横屏显示,则在p40设备上,也会横屏显示该视频,即不会进行横竖屏的切换。
402.如图8(l)所示的,如果在平板电脑上拉起p40设备的视频类app的任务卡片后,该任务卡片对应的视频将在平板电脑屏幕上显示,由于p40设备上显示的视频为横屏显示,则在平板电脑上,也会横屏显示该视频,即不会进行横竖屏的切换。在该实现方式中,远端设备的应用迁移至本端设备上后,本端设备会根据远端设备显示该应用的方式在本端设备上显示该应用(远端设备横屏显示,本端设备横屏显示;远端设备竖屏显示,本端设备竖屏显示),不会进行横竖屏的切换,不会使得用户在应用迁移前后感觉到显示状态的明显变化,对用户友好,提高用户体验。还应理解,示例19描述的方案可以为一个独立的方案。
403.在一些示例性的实施例中,如果本端设备为大屏幕设备,而远端设备为小屏幕设备,在本端设备拉起远端设备的任务卡片后,该任务卡片对应的应用将在本端设备的屏幕上显示,在显示该应用的过程中,也可以利用悬浮窗的形式在本端设备的屏幕上显示该任务卡片对应的应用。进一步的,如果本端设备支持适配显示,则在利用悬浮窗的形式在本端设备的屏幕上显示该任务卡片对应的应用时,可以利用横向或者宽的悬浮窗显示该任务卡片对应的应用;如果本端设备不支持适配显示,可以利用纵向或者窄的悬浮窗显示该任务卡片对应的应用。
404.在一些示例性的实施例中,如果本端设备为pc类的设备,在本端设备上拉起远端设备某一个应用的任务卡片后,该应用在本端设备上可以默认为悬窗显示,例如示例20所示的。
405.在一种可能的实现方式中,如示例20所描述的:
406.示例20:如图8(m)所示的,用户在pc设备的最近任务界面点击p40设备的app2对应的任务卡片,从而在pc设备上拉起该任务卡片,在pc设备上显示该app2时,可以如图8(m)所
示的,存在两种不同的悬浮窗显示的形式,一种为纵向的或者窄的悬浮窗显示,另一种为横向的或者宽的悬窗显示。在该实现方式中,屏幕较小的远端设备的应用迁移至屏幕较大的本端设备上后,本端设备可以利用悬浮窗的方式显示该应用,可以提高屏幕利用效率。还应理解,示例20描述的方案可以为一个独立的方案。
407.如果本端设备为pc类的设备,在本端设备上拉起远端设备某一个应用的任务卡片后,该应用在本端设备上进行显示时,可选的,也可以设置选择界面,使得用户可以选择使用全屏显示或者使用悬浮窗显示。例如示例21所示的。
408.示例21:如图8(n)所示的,用户在pc设备的最近任务界面点击p40设备的app2对应的任务卡片,从而在pc设备上拉起该任务卡片,在pc设备上显示该app2时,可以如图8(n)所示的,存在两种不同的悬浮窗显示的形式,一种全屏显示,另一种为悬浮窗显示。用户可以根据自己需求,选择全屏显示或者使用悬浮窗显示,在用户点击相应的选项选择后,在pc设备可以根据用户的选择结果相应的显示该app2。在该实现方式中,屏幕较小的远端设备的应用迁移至屏幕较大的本端设备上后,本端设备可以利用悬浮窗的方式或者全屏显示该应用,用户可以进行灵活的选择,对用户比较友好,提高用户体验。还应理解,示例21描述的方案可以为一个独立的方案。
409.在本技术实施例中,除了在用户使用的本端设备的最近任务界面显示其他设备和本端设备的任务卡片之外,用户还可以在最近任务界面对任务卡片进行操作,使得本端设备或者其他设备安装任务卡片对应的应用。下面将结合具体的例子进行说明。
410.示例22:假设用户使用的本端设备(本机)为手机(例如为p40),如图8(o)所示的为在p40的最近任务界面显示的其他设备任务卡片的示意图。图8(o)所示的例子中,用户在本机的最近任务界面查看平板电脑1(matepad1)的任务卡片。用户可以长按app2对应的任务卡片,则可以弹出提示框:“下载到本机”;“悬浮窗打开”;“分屏打开”。如果用户点击“下载到本机”,则本机p40可以自动下载并安装该app2。可选的,在安装app2后,本机上自动打开该app2。如果用户点击“悬浮窗打开”,则在本机p40的屏幕上利用悬浮窗的方式打开该app2(即在本机上拉起app2后,利用悬浮窗的方式显示)。如果用户点击“分屏打开”,则在本机p40的屏幕上利用分屏的方式打开该app2(即在本机上拉起app2后,利用分屏的方式显示)。
411.示例23:假设用户使用的本端设备(本机)为平板电脑1(matepad1),如图8(p)所示的为在matepad1的最近任务界面显示的其他设备任务卡片的示意图。图8(p)所示的例子中,用户在本机的最近任务界面查看p40的任务卡片,用户按住app2对应的任务卡片并拖动至mate x2设备的图标位置,完成将app2从p40设备迁移至mate x2设备上。同时,在本机上还可弹出提示框:“下载到mate x2”;“悬浮窗打开”;“分屏打开”;“全屏打开”。如果用户点击“下载到mate x2”,则mate x2可以自动下载并安装该app2。可选的,在安装app2后,mate x2可以自动打开该app2。如果用户点击“悬浮窗打开”,则在本机的屏幕上利用悬浮窗的方式打开该app2(即在本机上拉起app2后,利用悬浮窗的方式显示)。如果用户点击“分屏打开”,则在本机的屏幕上利用分屏的方式打开该app2(即在本机上拉起app2后,利用分屏的方式显示)。如果用户点击“全屏打开”,则在本机的屏幕上利用全屏的方式打开该app2(即在本机上拉起app2后,利用全屏的方式显示)。
412.在一些示例性的实施例中,在用户使用的本端设备的最近任务界面显示其他设备和本端设备的任务卡片的过程中,用户还可以对同一个设备的多个任务卡片进行操作,或
者对不同的设备的任务卡片进行操作,将多个任务卡片分别对应的应用同时在本端设备或者远端设备的屏幕上实现分屏显示;或者一个任务全屏显示,其他任务为悬浮窗或者悬浮球显示;或者多个任务卡片均为悬浮窗显示等。下面将结合具体的例子进行说明。
413.示例24:假设用户使用的本端设备(本机)为手机(例如为p40),如图8(q)所示的为在p40的最近任务界面显示的其他设备任务卡片的示意图,图8(q)所示的例子中,用户在本机的最近任务界面查看本机的任务卡片。用户左手按住本机的app2对应的任务卡片,右手将任务卡片向左滑动,切换到本机其他应用对应的任务卡片并进行选择,假设用户选择了本机的app5对应的任务卡片,用户利用右手按住本机的app5对应的任务卡片,将app5对应的任务卡片拖动至与app2对应的任务卡片重叠后松手,则可实现在本机上分屏显示该app2和app5。
414.在一些示例性的实施例中,本机上显示app2和app5时,可选的,app2全屏显示,app5悬浮窗显示;或者,app5全屏显示,app2悬浮窗显示;或者,app2和app5均悬浮窗显示。本技术在此不作限制。
415.示例25:假设用户使用的本端设备(本机)为手机(例如为p40),如图8(r)所示的为在p40的最近任务界面显示的其他设备任务卡片的示意图,图8(r)所示的例子中,用户在本机的最近任务界面查看本机的任务卡片。用户左手按住本机的app2对应的任务卡片,右手点击matepad1的设备图标,切换到matepad1的任务卡片,右手将matepad1的任务卡片向左或者向右滑动并进行选择,假设用户选择了matepad1的app4对应的任务卡片,用户利用右手按住matepad1的app4对应的任务卡片,将app4对应的任务卡片拖动至与app2对应的任务卡片重叠后松手,则可实现在本机上分屏显示本机app2和matepad1的app4。
416.在一些示例性的实施例中,本机上显示app2和app4时,可选的,app2全屏显示,app4悬浮窗显示;或者,app4全屏显示,app2悬浮窗显示;或者,app2和app4均悬浮窗显示。本技术在此不作限制。
417.示例26:假设用户使用的本端设备(本机)为手机(例如为p40),如图8(s)所示的为在p40的最近任务界面显示的其他设备任务卡片的示意图,图8(s)所示的例子中,用户在本机的最近任务界面查看本机的任务卡片。用户左手按住本机的app2对应的任务卡片。右手点击matepad1的设备图标,切换到matepad1的任务卡片,右手将matepad1的任务卡片向左或者向右滑动并进行选择。假设用户选择了matepad1的app4对应的任务卡片,用户利用右手按住matepad1的app4对应的任务卡片,此时,用户可将app2对应的任务卡片与app4对应的任务卡片一起滑向目标设备(手机p30)的图标处后松手,则可以在p30的屏幕上显示该app2和app4,即实现了不同设备对应的app同时迁移到目标设备上。
418.在p30的屏幕上显示app2和app4时,可选的,如图8(t)所示的,app2和app4可以分屏显示;或者,app2全屏显示,app4悬浮窗显示;或者,app4全屏显示,app2悬浮窗显示;app2和app4均悬浮窗显示。
419.可选的,在示例26中,用户左手按住本机的app2对应的任务卡片后,右手可以将任务卡片向左滑动,切换到本机其他应用对应的任务卡片并进行选择,选择完成后将app2对应的任务卡片与本机其他app对应的任务卡片一起滑向目标设备后松手,则可以实现将本上的两个不同的app2在目标设备显示。
420.示例27:假设用户使用的本端设备(本机)为手机(例如为p40),如图8(u)所示的为
在p40的最近任务界面显示的其他设备任务卡片的示意图,图8(u)所示的例子中,可选的,用户左手按住本机的app2对应的任务卡片,右手点击matepad1的设备图标,切换到matepad1的任务卡片,将matepad1的任务卡片向左或者向右滑动并进行选择。假设用户选择了matepad1的app4对应的任务卡片,用户用右手按住matepad1的app4对应的任务卡片,将app4对应的任务卡片拖动至与app2对应的任务卡片重叠后松手,这样,app4对应的任务卡片与app2对应的任务卡片将形成一个新的任务卡片(分屏任务卡片)显示在本机的最近任务界面中。该任务卡片由app4对应的任务卡片与app2对应的任务卡片组成。
421.可选的,在示例27中,用户左手按住本机的app2对应的任务卡片后,右手也可以将任务卡片向左滑动,切换到本机其他应用对应的任务卡片并进行选择,选择完成后,将本机其他app对应的任务卡片拖动至与app2对应的任务卡片重叠后松手,则本机上两个不同的app对应的任务卡片将形成一个新的任务卡片,并显示在本机的最近任务界面中。
422.在一些示例性的实施例中,基于窗口投屏技术的迁移模式的任务(应用)跨设备后,本端设备(显示远端设备的任务卡片的设备)和远端设备(任务卡片的来源端设备)之间的距离超过一会的阈值,或者,本端设备与远端设备之间网络质量小于预设的阈值后,本端设备和远端设备之间的通信连接将会中断,在这种情况下,在本端设备上可以出现“胶囊”提示,用于提示用户本端设备和远端设备将断开连接。并且,用户可以对“胶囊”进行操作(例如上划或者下滑操作等),对“胶囊”提示进行操作后,“胶囊”提示可以隐藏;或者,“胶囊”提示在预设的显示时间长度后可以自动隐藏。在“胶囊”提示隐藏预设的时间长度后,如果本端设备和远端设备之间的距离仍然超过一会的阈值,或者,本端设备与远端设备之间网络质量仍然小于预设的阈值,该“胶囊”提示可以重新出现。可选的,在该“胶囊”提示重新出现后,也可以通过用户的操作实现隐藏或者自动隐藏。并且,在本端设备上来源端设备(远端设备)的提示。
423.在一些示例性的实施例中,在基于fa技术的迁移模式进行任务跨设备的情况下,如果本端设备和远端设备之间的距离超过一会的阈值,或者,本端设备与远端设备之间网络质量小于预设的阈值后,本端设备和远端设备之间的通信连接将会中断,在这种情况下,可选的,在本端设备上可以不出现“胶囊”提示,即在本端设备上无“胶囊”提示。并且,在本端设备上可以远距离独立使用该应用,可选的,在本端设备上没有源端设备(远端设备)的提示。
424.下面将结合具体的例子进行说明。
425.示例28:假设第一终端(本端设备)为平板电脑,图8(v)所示的为在第一终端拉起远端设备(p40设备)在第一终端上应用后在第一终端上显示的界面图。如图8(v)所示的,假设:远端设备(任务来源端设备p40)的杂志锁屏应用是基于窗口投屏技术的迁移模式显示在第一终端的最近任务界面上,在这种情况下,如果本端设备和远端设备之间的距离超过一会的阈值,本端设备上可以出现“胶囊”提示,用于提示用户:“与p40距离太远,将断开连接”。可选的,用户可以对“胶囊”进行操作(例如上划或者下滑操作等),对“胶囊”提示进行操作后,“胶囊”提示可以隐藏;或者,“胶囊”提示在预设的显示时间长度后可以自动隐藏。并且,在本端设备上来源端设备(p40)的提示:“来自p40”。
426.在一些示例性的实施例中,在本端设备和远端设备之间的距离超过一会的阈值,或者,本端设备与远端设备之间网络质量小于预设的阈值后,或者,远端设备退出超级终
端,或者,远端设备更换了登录账号等,在这些情况下,本端设备和远端设备之间的通信连接中断后,在本端设备拉起的远端设备的应用在本端设备上会蒙层显示,并在该蒙层显示上会向用户显示提示信息,用于提示用户:“由于xxx原因,已经断开连接”。若在预设的时间长度内消除了造成连接断开的因素(例如:网络恢复、回到安全距离内、或者恢复登录同账号或关联账号等),本端设备将和远端设备自动进行重连,重连成功后,退出蒙层显示,恢复正常的任务显示。
427.可选的,在该蒙层上还会向用户显示按钮,用于提示用户:“重新连接”,用户可以可手动点击按钮,进行重连。
428.可选的,在该蒙层上还会向用户显示按钮,用于提示用户:“退出应用”,用户可以可手动点击按钮,退出该应用后,将显示本端设备的桌面。如果用户在预设的时间长度内(例如15分钟)不点击该按钮,则在预设的时间长度结束后,自动退出该应用,显示本端设备的桌面。
429.如果在用户退出该应用之前,造成连接断开的因素消除(例如:网络恢复、回到安全距离内、或者恢复登录同账号或关联账号等),则本端设备将和远端设备自动进行重连,重连成功后,退出蒙层显示,恢复正常的任务显示。
430.可选的,如果是因为其他异常原因导致该应用迁移到本端设备上失败,例如,远端设备的这个应用迁移到其他设备上,则在该本端设备上,依然进行蒙层显示,并且,在该蒙层上还会向用户显示按钮,用于提示用户:“退出应用”。
431.下面将结合具体的例子进行说明。
432.示例29:假设第一终端(本端设备)为平板电脑,图8(w)所示的为在第一终端上拉起远端设备(p40设备)在第一终端上“杂志锁屏”应用后在第一终端上显示的界面图。如图8(w)所示,如果本端和远端设备之间的距离超过一会的阈值,本端设备和远端设备之间的通信连接中断后,在本端设备上,会蒙层显示该“杂志锁屏”应用。并在该蒙层显示上会向用户显示提示信息,用于提示用户:“距离太远,已断开连接”。
433.可选的,如图8(w)所示的,在该蒙层上还会向用户显示按钮,用于提示用户:“重新连接”,用户可以可手动点击按钮,进行重连。
434.可选的,若在预设的时间长度内消除了造成连接断开的因素(例如回到安全距离内),本端设备将和远端设备自动进行重连,重连成功后,退出蒙层显示,恢复正常的任务显示。
435.可选的,如图8(w)所示的,在该蒙层上还会向用户显示按钮,用于提示用户:“退出应用”,用户可以可手动点击按钮,退出该应用后,将显示本端设备的桌面。如果用户在预设的时间长度内(例如15分钟)不点击该按钮,则在预设的时间长度结束后,自动退出该应用,显示本端设备的桌面。
436.在一些示例性的实施例中,本端设备还可以将其他终端最近使用的某个应用程序迁移至本端设备,在本端终端的前台显示;或者将本端设备最近使用的某个应用程序迁移至其他终端,在其他终端的前台显示。或者,如果其他终端有多个(例如包括设备b和设备c),本端设备还可以将设备b最近使用的某个应用程序迁移至设备c,在设备c的前台显示。
437.在一些示例性的实施例中,在上述的本端设备将某一个设备的任务卡片迁移至其他设备上进行显示的过程中,用户在本端设备上可以长按该应用程序对应的任务卡片,则
可以隐藏周边其他任务卡片和不可用的设备图标,其中,不可用的设备图标为该设备不支持该应用程序,即将该应用程序迁移到该设备后,该设备将不能运行该应用程序。
438.在一些示例性的实施例中,用户在本端设备上需要将某个应用迁移到其他设备上(即目标设备)时,可以拖动该应用程序对应的任务卡片至目标设备的图标区域,本端设备可以根据任务卡片和各个设备图标的叠加区域的面积自动判断目标设备。
439.在一些示例性的实施例中,用户还可以对该任务卡片进行不同的操作,从而确定该任务卡片需要迁移的目标设备。
440.下面将结合具体的例子进行说明。
441.应该理解的是,下文所描述的各个示例中对任务卡片的“点击”、“拖拽”、“移动或者滑动”等操作,和上文的各个示例中对任务卡片的“点击”、“拖拽”、“移动或者滑动”等操作,任意两个或者更多个示例中的操作可以相互结合为一个整体的方案,或者,任意一个示例中的操作均可以为一个单独的方案。本技术在此不作限制。
442.例如:下文所描述的各个示例和上文的示例中(例如:图4(c)至图4(e)所示的例子中、图8(p)所示的例子中)对任务卡片的“点击”、“拖拽
””
、“移动或者滑动”操作等类似,均可以通过对任务卡片的操作,实现在目标设备上运行该任务卡片对应的应用程序。
443.示例30:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。图9(a)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,用户可以长按app2对应的任务卡片,假设matepad2为不可用设备,则可以将matepad2的图标隐藏。可选的,在本技术实施例中,除了将不可用设备的图标隐藏之外,还可以通过其他方式来向用户显示不可用设备的图标,例如,可以在不可用图标下方设置文字提示框,用于提示该设备为不可用设备,或者,还可以将不可用设备的图标蒙层显示或者虚化显示等。本技术在此不作限制。
444.示例31:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。图9(b)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到matepad1上,用户可以按住app2对应的任务卡片并上滑到matepad1的图标区域,该任务卡片越靠近matepad1的图标区域,该任务卡片变得越小,在该任务卡片与matepad1的图标区域部分重叠,或者与matepad1的图标区域之间距离小于预设的阈值后,用户松手,松手后该任务卡片可以自动迁移到matepad1上,在matepad1的前台显示。
445.示例32:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。图9(c)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,用户可以按住app2对应的任务卡片并上滑到设备的图标区域。该任务卡片与哪个设备的图标区域有重叠,则确定该设备的图标为目标设备。例如,图9(c)所示的,用户按住app2对应的任务卡片向上滑动后,该任务卡片与matepad1设备的图标有重叠,则确定matepad1为目标设备。用户松手后,该任务卡片可以自动迁移到目标设备上,在目标设备的前台显示。
446.示例33:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端
为平板电脑2(matepad2)。图9(d)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,用户可以按住app2对应的任务卡片并上滑到设备的图标区域,如果该任务卡片同时和多个设备的图标区域有重叠,可选的,则可以确定重叠面积最大的那个设备的图标为目标设备。如图9(d)所示的,该任务卡片同时与matepad1和matepad2的设备图标有重叠,并且该任务卡片与matepad1设备的图标重叠的面积最大,则确定matepad1为目标设备。用户松手后,该任务卡片可以迁移到目标设备上,在目标设备的前台显示。
447.示例34:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。图9(e)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,用户可以按住app2对应的任务卡片并上滑,用户将该任务卡片向上滑动的距离(即未滑动时用户的手机手指触屏位置与滑动后用户的手机手指触屏位置之间的距离)大于或者等于预设的距离后,该任务卡片正上方的设备为目标设备。例如,用户按住app2对应的任务卡片未滑动时显示的界面如图9(e)所示的,向上滑动后显示的界面如图9(f)所示的,该任务卡片正上方的设备为matepad1,则确定matepad1为目标设备,用户松手后,该任务卡片可以迁移到目标设备上,在目标设备的前台显示。
448.示例35:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。图9(g)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,用户可以按住app2对应的任务卡片并上滑,可选的,在用户的手机手指触屏位置距离第一终端的屏幕顶部的距离小于或者等于预设的距离后,该任务卡片正上方的设备为目标设备,例如,向上滑动后显示的界面如图9(h)所示的,该任务卡片正上方的设备为matepad1,则确定matepad1为目标设备,用户松手后,该任务卡片可以迁移到目标设备上,在目标设备的前台显示。
449.在本技术实施例中,除了利用上述的方式确定需要将任务卡片迁移的目标设备之外,还可以设置一些预设的规则:例如,用户可以在本机的最近任务界面中长按其他设备的任务卡片,长按后松手,该任务卡片自动迁移至本机上,在本机上显示或者运行该任务卡片对应的应用。或者,用户也可以自行设置默认的目标设备,在用户长按某一个任务卡片后松手,该任务卡片自动迁移至默认的目标设备上。本技术在此不作限制。
450.在用户通过对任务卡片的操作选中目标设备后,作为一种可能的实现方式:用户可以继续按住并拖动任务卡片,直至该任务卡片与选中的目标设备图标重叠,此时用户松手,该任务卡片可以迁移到目标设备上,在目标设备的前台显示,完成跨设备交互。作为一种可能的实现方式:在用户通过对任务卡片的操作选中目标设备后,虽然该任务卡片与选中的目标设备图标还没有重叠,此时用户松手,该任务卡片也可以迁移到目标设备上,在目标设备的前台显示,完成跨设备交互。例如示例36所示的。
451.示例36:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。图9(i)所示的为在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,在用户通过上述的任一操作确定目标设备后,虽然该任务卡片与选中的目
标设备图标还没有重叠,用户此时可以松手,用户松手后,该任务卡片可以迁移到目标设备上,在目标设备的前台显示。例如,图9(i)所示的为用户选中的目标设备的界面图,目标设备为matepad1,此时用户松手,显示的界面如图9(j)所示的,该任务卡片可以自动移动至目标设备的图标上(例如,任务卡片自动飞到目标设备图标处),便完成了任务卡片迁移到目标设备上。该任务卡片可以在目标设备的前台显示,完成跨设备交互。
452.在一些示例性的实施例中,用户通过对任务卡片的操作选中目标设备后,目标设备的图标还可以进行相应的变化,例如,目标设备的图标可以向下移动一段距离,或者目标设备图标的颜色发生变化等,用于提示用户选中的目标设备。并且,用户还可以对任务卡片进行操作从而改变已经选中的目标设备等。下面将结合具体的例子进行说明。
453.示例37:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,在用户通过上述的任一操作确定目标设备后,目标设备的图标可以向下移动一段距离,例如,参照图9(k)所示的,用户选中的目标设备为matepad1,则matepad1设备图标可以向下移动一定距离。或者。目标设备图标的颜色可以变为选中态颜色,参照图9(l)所示的,用户选中的目标设备为matepad1,则matepad1设备图标变为有填充的状态。
454.在一些示例性的实施例中,还可以通过其他方式标识选中的目标设备,例如,可以利用文字提示框等方式向用户提示选中的目标设备等。本技术在此不作限制。
455.在一些示例性的实施例中,还可以预设任务卡片的位置与目标设备之间的对应关系,在用户按住任务卡片并拖动至预设的位置后,自动向用户显示该区域对应的目标设备。随着用户拖动任务卡片位置的变化,目标设备也随之变化。用户确定需要迁移的目标设备后,便可以松手,该任务卡片可以自动移动至目标设备的图标处(例如,任务卡片自动飞到目标设备图标处),便完成了任务卡片迁移到目标设备上。该任务卡片可以在目标设备的前台显示,完成跨设备交互。
456.示例38:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,在用户按住任务卡片并拖动改变任务卡片的位置后,便会显示与任务卡片位置对应的目标设备。例如,参照图9(m)所示的,用户按住任务卡片并拖动改变任务卡片的位置,显示的目标的为matepad1,如果用户确定需要将app2迁移至matepad1上,用户此时便可以松手,则显示的界面如图9(n)所示的,可选的,该任务卡片可以自动移动至目标设备的图标上(例如,任务卡片自动飞到目标设备图标处),便完成了任务卡片迁移到目标设备上。
457.在一些示例性的实施例中,用户通过对任务卡片的操作选中目标设备后,随着用户进一步的对该任务卡片进行操作,选中的目标设备也会随之发生变化,或者,也可以取消选中的目标设备。下面将结合具体的例子进行说明。
458.示例39:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,在用户通过上述的任一操作确定目标设备后,例如,参照图9(o)所示的,假设选中的目标设
备为matepad1,如果用户继续拖着任务卡片向左或者向右滑动,则选中的目标设备随之切换。参照图9(p)所示的,假设用户拖着任务卡片向右滑动,则改变后的目标设备为matepad2,matepad2的设备图标向下移动一段距离。用户此时便可以松手,该任务卡片可以自动移动至目标设备(matepad2)的图标上(例如,任务卡片自动飞到目标设备图标处),便完成了任务卡片迁移到目标设备上。
459.示例40:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,在用户通过上述的任一操作确定目标设备后,例如,参照图9(q)所示的,假设选中的目标设备为matepad1,matepad1的设备图标向下移动一段距离。可选的,如果用户继续拖着任务卡片并下滑,在下滑的距离(即未滑动时用户的手机手指触屏位置与滑动后用户的手机手指触屏位置之间的距离)大于或者等于预设的距离后,例如,参照图9(r)所示的,此时松手,则取消选中的目标设备matepad1,matepad1的设备图标恢复至之前的位置,该任务卡片恢复到选择目标之前的状态显示,取消任务卡片迁移。
460.示例41:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上,在用户通过上述的任一操作确定目标设备后,例如,参照图9(s)所示的,假设选中的目标设备为matepad1,matepad1的设备图标向下移动一段距离。可选的,如果用户继续拖着任务卡片并下滑,在下滑的距离(滑动后用户的手机手指触屏位置与第一终端的屏幕顶部的距离)大于或者等于预设的距离后,例如,参照图9(t)所示的,此时松手,则取消选中的目标设备matepad1,matepad1的设备图标恢复至之前的位置,该任务卡片恢复到选择目标之前的状态显示,取消任务卡片迁移。
461.在一些示例性的实施例中,在用户拖动任务卡片选择目标设备或者取消选中的目标设备过程中,用户还可以拖动该任务卡片至屏幕的左边缘或者右边缘,在这种情况下,用户可以继续向左或者向右拖动任务卡片,从而可以屏幕的顶部显示出更多的设备图标,用户可以从更多的设备图标中确定目标设备。在本技术实施例中,可选的,该更多个设备图标可以排列成一行显示,或者也可以按照雷达图的形式显示在设备的屏幕顶部。本技术在此不作限制。例如,示例42显示所示的为更多个设备图标排列成一行显示的界面示意图。
462.示例42:假设第一终端为手机(p40),第二终端为平板电脑1(matepad1),第三终端为平板电脑2(matepad2)。第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到其他设备上。例如,参照图9(u)所示的,用户拖着任务卡片并左滑,在该任务卡片位于屏幕的右边缘后,用户继续向右拖动任务卡片,显示的界面如图9(v)所示的,屏幕的顶部显示其他设备图标(matepad3以及mate x2),在屏幕顶部显示出的多个设备图标成一行显示。用户可以继续对该任务卡片进行操作,从该更多的设备图标中确定目标设备。
463.在一些示例性的实施例中,本端设备在最近任务界面中将某一个设备的任务卡片迁移至目标设备上进行显示或者运行的过程中,例如,用户将手机的视频迁移到大屏设备进行播放,或者,将手机的音频迁移到音箱上进行播放等,如果目标设备为黑屏状态,则目
标设备可以先自动亮屏,亮屏后用户手动进行解锁后便可以显示个任务卡片对应的应用;或者,目标设备可以先自动亮屏,且自动触发解锁,用户手动进行解锁后便可以显示个任务卡片对应的应用;或者,目标设备可以先自动亮屏,且自动解锁,解锁后便可以显示个任务卡片对应的应用。下面将结合具体的例子进行说明。
464.示例43:假设第一终端为平板电脑(matepad),第二终端为手机(p40),第三终端为折叠屏手机(mate x2)。在第一终端(本机或者本端设备)的最近任务界面显示第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到第二终端,而第二终端处于黑屏状态。在用户通过上述实施例中任一种方式将app2对应的任务卡片迁移至手机(p40)后,如图10(a)所示的,手机p40为黑屏状态,在手机p40接收到该任务信息后,手机p40自动亮屏,在手机p40自动亮屏后,触发用户进行手动解锁,在用户手动解锁后,手机p40上便可以显示或者运行该app2。
465.示例44:假设第一终端为平板电脑(matepad),第二终端为手机(p40),第三终端为折叠屏手机(mate x2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到第二终端,而第二终端处于黑屏状态。在用户通过上述实施例中任一种方式将app2对应的任务卡片迁移至手机(p40)后,如图10(b)所示的,手机(p40)为黑屏状态,在手机(p40)接收到该任务信息后,手机(p40)自动亮屏并触发用户手动解锁,在用户手动解锁后,手机(p40)上便可以显示或者运行该app2。
466.示例45:假设第一终端为平板电脑(matepad),第二终端为手机(p40),第三终端为折叠屏手机(mate x2)。在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和第三终端的历史任务卡片的示意图。假设用户需要将本机的app2迁移到第二终端,而第二终端处于黑屏状态。在用户通过上述实施例中任一种方式将app2对应的任务卡片迁移至手机(p40)后,如图10(c)所示的,手机(p40)为黑屏状态,在手机(p40)接收到该任务信息后,手机(p40)自动亮屏并触发自动解锁,在用户手动解锁后,手机(p40)上便可以显示或者运行该app2。
467.在一些示例性的实施例中,本端设备在最近任务界面中将某一个设备的任务卡片迁移至目标设备上进行显示或者运行的过程中,如果目标设备为黑屏状态,作为一种可能的实现方式,还可以根据需要迁移的应用的不同类型,或者应用对应的敏感程度,设置不同的触发目标设备亮屏以及解锁的规则。例如,对于敏感程度比较低的应用(例如视频播放、音频播放等应用),在迁移至黑屏的目标设备后,目标设备可以自动亮屏并触发自动解锁,从而实现在目标设备上显示或者运行该应用。对于敏感程度比较高的应用(例如文档编辑、照片播放等应用),在迁移至黑屏的目标设备后,目标设备可以自动亮屏并触发用户手动解锁,从而实现在目标设备上显示或者运行该应用。
468.在一些示例性的实施例中,还可以根据目标设备的不同情况(例如,不同安全等级或者安全能力的目标设备、不同类型的目标设备等),设置不同的触发目标设备亮屏以及解锁的规则。例如,假设目标设备为大屏设备,则在应用迁移至黑屏的目标设备后,目标设备可以自动亮屏并触发用户手动解锁,从而实现在目标设备上显示或者运行该应用。假设目标设备为智能音箱,则在应用迁移至黑屏的目标设备后,目标设备可以自动亮屏并自动解锁,从而实现在目标设备上显示或者运行该应用。
469.在一些示例性的实施例中,源设备在最近任务界面中将某一个任务卡片迁移至目标设备上运行该任务卡片对应的应用的过程中,如该任务卡片对应的应用涉及设备的硬件能力,例如包括:设备的摄像头、麦克风、显示屏等硬件能力,在应用从源设备迁移目标设备后,可以利用如下的几种规则中的任意一种,使用源设备或目标设备的硬件能力,在目标设备上运行该应用:
470.第一种规则:源设备将应用迁移到目标设备上后,不使用目标设备的硬件能力。换句话说,应用迁移到目标设备上后,继续使用源设备的硬件能力在目标上运行该应用。
471.第二种规则:源设备将应用迁移到目标设备上后,使用部分目标设备的硬件能力。换句话说,应用迁移到目标设备上后,可以同时使用源设备的部分硬件能力和目标设备的部分硬件能力,协同完成在目标上运行该应用。
472.第三种规则:源设备将应用迁移到目标设备上后,使用目标设备的硬件能力,同时释放该应用占用的源设备的硬件能力。在这种情况下,源设备可以使用自己的硬件能力运行新的应用,即两端设备可以分别使用各自的硬件能力执行不同的任务,互相不影响。
473.第四种规则:源设备将应用迁移到目标设备上后,使用目标设备的硬件能力,同时并不释放该应用占用的源设备的硬件能力。
474.下面将结合具体的例子(示例46至示例48)进行说明上述的任务迁移后的硬件能力使用规则。
475.示例46:假设第一终端为平板电脑1(matepad1),第二终端为手机(p40),在第一终端(本机或者本端设备)的最近任务界面显示的第二终端和其他终端的历史任务卡片。假设用户需要将手机p40(源设备)的视频通话迁移到matepad1(目标设备)上运行,参照图11(a)所示的,用户可以在matepad1最近任务界面中点击视频通话对应的任务卡片,点击后,视频便在通话在matepad1上运行,该视频通话默认调用matepad1的摄像头、麦克风以及扬声器,即使用目标设备的硬件能力,不使用手机p40的硬件能力。可选的,可以释放视频通话占用的手机p40源设备的硬件能力;或者,不释放视频通话占用的手机p40的硬件能力。如果不释放视频通话占用的手机p40的硬件能力,则手机p40不能使用这些硬件能力重新发起一个新的任务。
476.在一些示例性的实施例中,在matepad1也可以弹出提示框,例如,该提示框向用户提示:是否使用本设备的硬件能力,如果用户点击“是”,则可以使用matepad1的硬件能力;如果用户点击“否”,则使用源设备(手机p40)的硬件能力。该提示框可以在预设的时间后自动消失,如果用户在该预设时间的内没有做出选择,则默认使用matepad1的硬件能力。
477.示例47:假设第一终端为平板电脑1(matepad1),第二终端为手机(p40),在第一终端的最近任务界面显示的第二终端和其他终端的历史任务卡片。假设用户需要将手机p40(源设备)的视频通话迁移到matepad1(目标设备)上运行,参照图11(b)所示的,用户可以在matepad1最近任务界面中点击视频通话对应的任务卡片,点击后,视频便在通话在matepad1上运行,该视频通话同时使用matepad1和手机p40的摄像头、麦克风以及扬声器,协同完成在matepad1的视频通话。即同时使用目标设备和源设备的硬件能力,协同完成在目标上运行应用。如图11(b)所示的,视频通话从手机p40迁移到平板matepad1后,使用matepad1的摄像头,且用户可以在matepad1选择再打开一个手机p40的摄像头,同时使用matepad1的摄像头和手机p40的摄像头的进行视频通话,并且,同时使用matepad1和手机
p40的麦克风、扬声器进行收音和放音。
478.示例48:假设第一终端为平板电脑1(matepad1),第二终端为手机(p40),在第一终端的最近任务界面显示的第二终端和其他终端的历史任务卡片。假设用户需要将手机p40(源设备)的视频通话迁移到matepad1(目标设备)上运行,参照图11(c)所示的,用户可以在matepad1最近任务界面中点击视频通话对应的任务卡片,点击后,视频通话(视频通话任务1)便在通话在matepad1上运行,话该视频通话默认调用matepad1的摄像头、麦克风以及扬声器,即使用目标设备的硬件能力,不使用源设备(本端设备)的硬件能力。可选的,视频任务从手机p40迁移到matepad1后,还可以在手机p40上再进行一个视频类任务(视频通话任务2),手机p40和matepad1两端各自独立的使用自己的硬件能力(摄像头能力、麦克风、扬声器能力、输入能力等),互不干扰。换句话说,手机p40将视频应用迁移到目matepad1上后,使用matepad1的硬件能力,同时释放该视频应用占用的手机p40的硬件能力。在这种情况下,手机p40可以使用自己的硬件能力运行新的应用,即两端设备可以分使用各自的硬件能力执行不同的任务,互相不影响。
479.在一些示例性的实施例中,在任务源设备迁移至目标设备上运行,并且运行时使用目标设备的硬件能力的情况下,在该任务在目标设备上运行过程中,如果目标设备上运行了一个新的任务,并且,目标设备运行的新任务和从源设备迁移来的任务之间存在硬件能力的冲突,例如,均需要使用目标设备的摄像头、麦克风、扬声器等,作为一种可能的实现方式:从源设备迁移来的任务可以自动切换为使用源设备的硬件能力,在源设备上继续运行,而目标设备上的新任务优先使用目标设备的硬件能力,即保证目标设备的任务优先执行。在目标设备上的新任务执行完毕之后,释放目标设备的硬件能力,从源设备迁移来的任务可以切换为使用目标设备的硬件能力,在目标设备上继续运行。
480.在一些示例性的实施例中,在目标设备运行的新任务和从源设备迁移来的任务之间存在硬件能力的冲突时,从源设备迁移来的任务也可以优先使用目标设备的硬件能力,即保证迁移来的任务优先在目标设备上继续执行,在迁移来的任务在目标设备上执行完毕之后,目标设备上的新任务便可以使用目标设备的硬件能力,从而执行该新任务。
481.在一些示例性的实施例中,在目标设备运行的新任务和从源设备迁移来的任务之间存在硬件能力的冲突时,目标设备的硬件能力可以按照任务分离,同时支持新任务和从源设备迁移来的任务。并且,目标设备也可以分屏显示,即同时显示新任务和从源设备迁移来的任务。下面将结合具体的例子(示例49至示例50)进行说明。
482.示例49:参照图11(d)所示的,假设手机p40(源设备)上的视频播放任务迁移至平板电脑matepad(目标设备)上,在matepad上运行该视频播放任务。在matepad上播放视频的过程中,matepad上接收到了视频通话任务,matepad上可以向用户弹出“视频通话通知”提示框。用户点击该提示框后,如图11(e)所示的,matepad上便显示出视频通话界面,而视频则自动迁移回手机p40上继续播放。在matepad上的视频通话结束后,该视频自动迁移至matepad上继续播放。
483.示例50:参照图11(f)所示的,假设手机p40(源设备)上的视频播放任务迁移至平板电脑matepad(目标设备)上,在matepad上运行该视频播放任务。在matepad上播放视频的过程中,matepad上接收到了视频通话任务,matepad上可以向用户弹出“视频通话通知”提示框。用点击该提示框后,可选的,如图11(g)所示的,matepad分屏显示视频播放和视屏通
话,并且,matepad的硬件能力(例如摄像头、麦克风、扬声器、输入/输出能力等)可以按照视频播放和视屏通话这两个任务分离,同时支持视频播放和视屏通话的运行。
484.在一些示例性的实施例中,在任务从本机(源设备)迁移至目标设备上运行,并且在目标设备上运行时使用源设备的硬件能力的情况下,在目标设备运行该任务的过程中,如果源设备上运行了一个新的任务,并且,源设备运行的新任务和源设备迁移到目标设备上的任务之间存在硬件能力的冲突,例如,均需要使用源设备的摄像头、麦克风、扬声器等。则有如下几种可能的实现方式:
485.在一些示例性的实施例中,从源设备迁移来的任务在目标设备上可以自动暂停执行,在源设备的新任务执行完毕之后,在目标设备上自动继续执行该迁移来的任务。
486.作为另一种可能的实现方式:目标设备使用自己的硬件能力,继续执行从源设备迁移来的任务,即源设备利用自身的硬件能力执行新任务,目标设备利用自身的硬件能力执行从源设备迁移来的任务。在源设备上的新任务执行完毕之后,目标设备可以切换至使用源设备的硬件能力执行从源设备迁移来的任务,或者,继续使用自身的硬件能力执行从源设备迁移来的任务。
487.在一些示例性的实施例中,源设备的硬件能力可以按照任务分离,同时支持新任务和在目标设备上执行的从源设备迁移来的任务。
488.下面结合具体的例子(示例51至示例53)进行说明。
489.示例51:参照图11(h)所示的,假设手机p40(源设备)上的视频播放任务迁移至平板电脑matepad(目标设备)上,在matepad上运行该视频播放任务,matepad上运行该视频播放任务过程中使用的为手机p40的硬件能力。在matepad上运行该视频播放任务过程中,手机p40来了新的信息通知,手机p40利用声音或者震动向用户提示,假设声音或者震动需要的硬件能力和播放视频播放需要的硬件能力不冲突,则在matepad继续播放视频,用户可以点击手机p40弹出的通知提示框,便可以在手机p40上查看信息。在手机p40上查看信息和在matepad播放视频两个任务互不影响,同时进行,两个任务同时使用手机p40的硬件能力。
490.示例52:参照图11(i)所示的,假设手机p40(源设备)上的视频播放任务迁移至平板电脑matepad(目标设备)上,在matepad上运行该视频播放任务,matepad上运行该视频播放任务过程中使用手机p40的硬件能力(麦克风、扬声器等)。在matepad上运行该视频播放任务过程中,手机p40接收到来电(例如为运营商或voip网络电话等),来电铃声在手机p40响铃,matepad继续播放视频。如图11(j)所示的,用户通过滑动接听通话后,在手机p40上进行通话音的输入输出,由于matepad播放视频使用的硬件能力和手机p40语音通话使用的硬件能力冲突,则matepad上的视频播放自动暂停,手机p40上的通话结束后,matepad上视频自动继续播放。
491.示例53:参照图11(i)所示的,假设手机p40(源设备)上的视频播放任务迁移至平板电脑matepad(目标设备)上,在matepad上运行该视频播放任务,matepad上运行该视频播放任务过程中使用手机p40的硬件能力(麦克风、扬声器等)。在matepad上运行该视频播放任务过程中,手机p40接收到来电(例如为运营商或voip网络电话等),来电铃声在手机p40响铃,matepad继续播放视频。如图11(k)所示的,用户通过滑动接听通话后,在手机p40上进行通话音的输入输出,由于matepad播放视频使用的硬件能力和手机p40语音通话使用的硬件能力冲突,因此,可以将手机p40的硬件能力的按照这两个任务(语音通话和视频播放)进
行分离,matepad上的视频播放继续进行,手机p40上通话也同时进行。在p40上通话结束后,p40上通话占有的硬件能力自动被matepad的视频播放占有。
492.或者,在示例53中,用户通过滑动接听通话后,在手机p40上进行通话音的输入输出,由于matepad播放视频使用的硬件能力和手机p40语音通话使用的硬件能力冲突,因此,matepad上播放视频可以自动切换至使用matepad的硬件能力,即两端设备可以分使用各自的硬件能力执行不同的任务,互相不影响。matepad的视频播放继续进行。手机p40上通话也同时进行。在p40上通话结束后,matepad上的视频播放任务自动切换至使用手机p40的硬件能力继续播放。
493.示例54:图12(a)所示的为在车机(目标设备)上显示用户使用的p40(源设备)的历史任务卡片的示意图。如图12(a)所示的,在车机上显示p40的历史任务卡片布局时,按照p40竖屏使用时多任务布局显示。用户可以在车机对p40的任务卡片进行操作。在本技术实施例中,该操作可以为上述任意一个示例中的操作,从而实现用户在车机对p40的远程任务管理和控制。
494.可选的,在车机上显示p40的历史任务卡片时,也可按照上述示例中的任一显示方式或者显示规则,例如:最后一个任务卡片显示p40的桌面快照,在该桌面快照存在fa卡片;或者,最后一个任务卡片显示p40桌面第一屏的快照,可水平滑动切换到显示p40桌面第二屏的快照,用户可以点击桌面快照上的应用icon,在车机上打开该应用;或者,最后一个任务卡片显示p40桌面快照和悬浮窗;或者,最后一个任务卡片显示p40桌面快照和悬浮球;或者,最后一个任务卡片显示p40控制的多个轻设备正在运行的任务卡片;或者,最后一个任务卡片显示p40显示该p40的桌面应用icon;或者,用户可以在车机上拉起p40的任务卡片;或者,用户可以在车机上创建跨设备的分屏/悬浮窗;或者,在p40上的任务迁移至车机上后,可以按照上述的示例中的硬件使用规则在车机和p40上进行硬件能力的分配等,本技术在此不作限制。
495.在一些示例性的实施例中,车机可以包括车上的电子控制单元(electronic control unit,ecu)、行车电脑、车载电脑或者车载t-box等,本技术实施例在此不做限制。
496.在一些示例性的实施例中,用户使用的智能设备(例如p40)可以利用蓝牙(bt)技术、wi-fi、nfc、zigbee、usb、cellular等和车机之间建立通信连接,建立可信关系并相互传输信息。
497.示例55:图12(b)所示的为在车机(目标设备)上显示用户使用的pc设备(源设备)的历史任务卡片的示意图。如图12(b)所示的,用户可以在车机对pc设备的任务卡片进行操作。在本技术实施例中,该操作可以为上述任意一个示例中的操作,从而实现用户在车机对pc设备的远程任务管理和控制。
498.在一些示例性的实施例中,在车机上显示p40的历史任务卡片时,可选的,也可以按照上述示例中的任一显示方式或者显示规则。例如:最后一个任务卡片显示pc设备的桌面快照,在该桌面快照存在fa卡片;或者,最后一个任务卡片显示pc设备桌面快照和悬浮窗;或者,最后一个任务卡片显示pc设备桌面快照和悬浮球;或者,最后一个任务卡片显示pc设备控制的多个轻设备正在运行的任务卡片;或者,最后一个任务卡片显示pc设备显示该p40的桌面应用icon;或者,用户可以在车机上拉起pc设备的任务卡片;或者,用户可以在车机上创建跨设备的分屏/悬浮窗;或者,在pc设备上的任务迁移至车机上后,可以按照上
述的示例中的硬件使用规则在车机和pc设备上进行硬件能力的分配等,本技术在此不作限制。
499.示例56:图12(c)所示的为在pc设备(目标设备)上显示用户使用的p40(源设备)的历史任务卡片的示意图。如图12(c)所示的,用户可以在pc设备对p40的任务卡片进行操作。在本技术实施例中,该操作可以为上述任意一个示例中的操作,从而实现用户在pc设备对p40的远程任务管理和控制。
500.在一些示例性的实施例中,在pc设备上显示p40的历史任务卡片时,也可按照上述示例中的任一显示方式或者显示规则,例如:最后一个任务卡片显示p40的桌面快照,在该桌面快照存在fa卡片;或者,最后一个任务卡片显示p40桌面第一屏的快照,可水平滑动切换到显示p40桌面第二屏的快照,用户可以点击桌面快照上的应用icon,在pc设备上打开该应用;或者,最后一个任务卡片显示p40桌面快照和悬浮窗;或者,最后一个任务卡片显示p40桌面快照和悬浮球;或者,最后一个任务卡片显示p40控制的多个轻设备正在运行的任务卡片;或者,最后一个任务卡片显示p40显示该p40的桌面应用icon;或者,用户可以在pc设备上拉起p40的任务卡片;或者,用户可以在pc设备上创建跨设备的分屏/悬浮窗;或者,在p40上的任务迁移至车机上后,可以按照上述的示例中的硬件使用规则在pc设备和p40上进行硬件能力的分配等,本技术在此不作限制。
501.在一些示例性的实施例中,除了在两个设备之间执行上述的示例中任意一种方案之外,还可以更多的设备之间(例如3个、4个等)进行利用最近任务界面上的任务卡片进行远程任务管理和控制。下面结合具体的例子进行说明。
502.示例57:图13所示的为在第二终端(p40)最近任务界面显示的第一终端(matepad1)和历史任务卡片的示意图。假设用户需要将p40的app2迁移到第三终端(mate x2)上,用户可以按住app2对应的任务卡片并上滑到mate x2的图标区域,用户松手后,该任务卡片可以自动迁移到该mate x2上,在mate x2的前台显示或者运行。可选的,在mate x2上显示或者运行该app2对应的应用程序,或者显示该app2的任务卡片时,可以按照mate x2的展开态竖屏方式、或者展开态横屏方式、或者折叠态竖屏方式、或者折叠态横屏方式在mate x2上显示或者运行该app2对应的应用程序,或者显示该app2的任务卡片。
503.可选的,在mate x2上显示或者运行该app2对应的应用程序,或者显示该app2的任务卡片时,可以以全屏或者悬浮窗的方式显示。
504.在一些示例性的实施例中,例如在示例57中,在设备p40上,用户也可以利用左手按住app2对应的任务卡片后,右手可以将任务卡片向左滑动,切换到本机(p40)或者(matepad1)其他应用对应的任务卡片并进行选择,选择完成后将app2对应的任务卡片与其他app对应的任务卡片一起滑向mate x2后松手,则可以实现将两个不同的app分别对应的应用程序在mate x2显示。可选的,两个不同的app分别对应的应用程序,或者两个不同的app分别对应的任务卡片在mate x2显示的过程中,两个不同的app可以分屏显示;或者,一个app全屏显示,另一个app悬浮窗显示;两个不同的app均悬浮窗显示。
505.在一些示例性的实施例中,基于上述的三种迁移模式(复制模式、基于窗口投屏技术的迁移模式、基于fa技术的迁移模式),可以将源设备桌面上的应用程序迁移到目标上运行,并且,在目标设备上可以显示源设备桌面上各种应用程序的标识,用户可以在目标设备上对源设备桌面上各种应用程序的标识进行操作(例如打开、删除、排序等),从而在目标设
备上形成超级桌面。在本技术实施例中,终端设备的桌面上各种应用程序(或者桌面上全部或者部分应用程序)的标识也可以称为终端设备的桌面应用标识。
506.在本技术实施例中,超级桌面可以理解为:在一个设备上可以查看和使用其他设备的桌面应用,则在该设备上实现了超级桌面的功能。下面将结合具体的例子进行说明。
507.示例58:在本技术中,对于某个设备是否需要实现超级桌面的功能,可选的,可以利用图14(a)所示的情况进行确定,如图14(a)所示,如果是车机和手机建立了可信的连接关系,则在车机上可以显示超级桌面,实现超级桌面的功能。例如,在车机上可以查看和使用手机的桌面应用。而在手机上则不需要实现超级桌面的功能,例如,在手机不用查看和使用车机的桌面应用。在本技术中,车机例如可以为:行车电脑、车载电脑、车载设备或者车载t-box等,本技术在此不作限制。
508.在一些示例性的实施例中,如果是大屏设备(例如为华为电视)和手机建立了可信的连接关系,则在大屏设备上可以显示超级桌面,实现超级桌面的功能。而在手机上则不需要实现超级桌面的功能。
509.在一些示例性的实施例中,如果是平板电脑和手机建立了可信的连接关系,则在平板电脑上可以显示超级桌面,实现超级桌面的功能。而在手机上则不需要实现超级桌面的功能。
510.在一些示例性的实施例中,如果是个人pc和手机建立了可信的连接关系,则在个人pc上可以显示超级桌面,实现超级桌面的功能。而在手机上则不需要实现超级桌面的功能。
511.在一些示例性的实施例中,如果是大屏设备(例如为华为电视)和平板电脑建立了可信的连接关系,则在大屏设备和平板电脑上均可以显示超级桌面,实现超级桌面的功能。
512.在一些示例性的实施例中,如果是个人pc和平板电脑建立了可信的连接关系,则在个人pc和平板电脑上均可以显示超级桌面,实现超级桌面的功能。
513.在一些示例性的实施例中,在上述的各个场景中,无论手机与哪个建立了可信的连接关系,在手机上也可以实现超级桌面的功能,例如,在手机查看和使用其他设备的桌面应用。本技术在此不作限制。
514.在一些示例性的实施例中,可以基于可信连接的各端设备的物理特性(例如屏幕的大小等),或者,是否容易进行精准交互等因素,区分不用设备上超级桌面的布局情况。
515.在一些示例性的实施例中,对于难以进行精准交互的设备,例如:车机、大屏设备等,在这些设备上显示的超级桌面应用是有限的,例如可以是经过系统或用户筛选的,按照目标设备(即难以进行精准交互的设备)的桌面应用布局展示;
516.在一些示例性的实施例中,对于容易进行精准交互的设备,例如:平板、个人pc等,可以尽可能多的显示桌面应用,在这些设备上显示桌面应用时,可以默认按照桌面应用的来源端设备的桌面布局显示其应用。当来源端设备的桌面风格为抽屉风格的桌面时,在这些设备上显示桌面应用时,统一按照目标设备(即容易进行精准交互的设备)的桌面布局展示。
517.下面结合具体的示例(示例59至示例64)进行说明:
518.示例59:图14(b)所示为在车机上显示超级桌面布局的示意图。由于车机为难以进行精准交互的设备,因此,在车机上显示手机p40的桌面应用时,需要经过车机系统或用户
筛选的,将筛选后的手机p40的桌面应用显示在车机上,并且,车机和手机p40的桌面应用排列在一起,分标签(tab)显示。
519.示例60:图14(c)所示为在大屏设备上显示超级桌面布局的示意图。由于大屏设备为难以进行精准交互的设备,因此,在大屏设备上显示手机p40的桌面应用时,需要经过大屏设备系统或用户筛选的,将筛选后的手机p40的桌面应用显示在大屏设备上。并且,大屏设备和手机p40的桌面应用排列在一起,分标签(tab)显示。
520.示例61:图14(d)所示为在平板电脑(例如为matepad1)上显示超级桌面布局的示意图。由于平板电脑为容易进行精准交互的设备,因此,在平板电脑上显示手机p40的桌面应用时,不需要经过平板电脑系统或用户筛选,可以按照手机p40的桌面布局尽可能多的显示手机p40桌面应用。如图14(d)所示的为手机p40的桌面风格为标准风格的桌面时,在平板电脑上显示手机p40的桌面应用的示意图,如图14(d)所示的,平板电脑的本地应用和手机p40的桌面应用排列在一起,按照手机p40的桌面应用布局分标签(tab)显示。
521.示例62:图14(e)所示为在平板电脑(例如为matepad1)上显示超级桌面布局的示意图。由于平板电脑为容易进行精准交互的设备,因此,在平板电脑上显示手机p40的桌面应用时,不需要经过平板电脑系统或用户筛选,可以尽可能多的显示手机p40桌面应用。如图14(e)所示的为手机p40的桌面风格为抽屉风格的桌面时在平板电脑上显示手机p40的桌面应用的示意图,平板电脑的本地应用和手机p40的桌面应用排列在一起,按照平板电脑的桌面布局分标签(tab)显示。
522.示例63:图14(f)所示为在pc上显示超级桌面布局的示意图。由于pc为容易进行精准交互的设备,因此,在pc上显示手机p40的桌面应用时,不需要经过pc系统或用户筛选,可以按照手机p40的桌面布局尽可能多的显示手机p40桌面应用。如图14(f)所示的为手机p40的桌面风格为标准风格的桌面时在pc上显示手机p40的桌面应用的示意图,平板电脑的本地应用和手机p40的桌面应用排列在一起,按照手机p40的桌面应用布局分标签(tab)显示。
523.示例64:图14(g)所示为在pc上显示超级桌面布局的示意图。由于pc为容易进行精准交互的设备,因此,在pc上显示手机p40的桌面应用时,不需要经过pc系统或用户筛选,可以尽可能多的显示手机p40桌面应用。如图14(g)所示的为手机p40的桌面风格为抽屉风格的桌面时在pc上显示手机p40的桌面应用的示意图,pc的本地应用和手机p40的桌面应用排列在一起,按照pc的桌面布局分标签(tab)显示。
524.在本技术实施例中,对于不同的设备,提供了不同形式的超级桌面的入口。
525.在一些示例性的实施例中,例如:对于自身有抽屉风格桌面的设备(例如车机、pc等),该设备的本地应用和超级桌面排列在一起分tab显示。例如如图14(b)和图14(f)所示的。
526.在一些示例性的实施例中,对于自身没有抽屉风格桌面的设备(例如平板电脑、大屏设备等),将该设备的桌面滑动到最后一屏,单独显示的即为超级桌面。
527.在一些示例性的实施例中,对于自身有抽屉风格桌面的设备,在dock上提供一个“所有应用”的图标,用户点击该图标后,便进入超级桌面,可选的,该设备的本地应用和其他设备的桌面应用放在一起分标签(tab)显示。
528.在一些示例性的实施例中,对于自身没有抽屉风格桌面的设备,在dock上提供一个“其他端应用中心”的图标,用户点击该图标后,便进入超级桌面,其中,超级桌面显示的
为其他端设备的桌面应用。可选的,该设备的本地应用和其他设备桌面应用放在一起分标签(tab)显示。
529.下面结合具体的例子(示例65至示例70)进行说明:
530.示例65:图14(h)所示为在平板电脑上的超级桌面入口形式的示意图,由于平板电脑没有抽屉风格的桌面,因此,用户可以对平板电脑的桌面进行滑动,如图14(h)所示的,例如,用户可以向左、向右或者向下滑动平板电脑的桌面,在平板电脑桌面的最后一屏上将显示超级桌面,如图14(i)所示的,平板电脑的本地应用和其他设备桌面应用放在一起分标签(tab)显示。
531.示例66:图14(j)所示为在大屏设备上的超级桌面入口形式的示意图,由于大屏设备没有抽屉风格的桌面,如图14(j)所示的,例如,用户在向左、向右或者向下翻页大屏设备的主界面后,在大屏设备上将显示超级桌面界面,如图14(k)所示的,大屏设备的本地应用和其他设备桌面应用放在一起分标签(tab)显示。
532.示例67:图14(l)所示为pc设备上的超级桌面入口形式的示意图,由于pc设备有抽屉风格的桌面,因此,如图14(l)所示的,在pc设备在dock上可以提供一个“所有应用”的图标,用户点击该图标后,便进入超级桌面,如图14(m)所示的,pc设备显示的超级桌面中,pc设备的本地应用和其他设备的桌面应用放在一起分标签(tab)显示。
533.示例68:图14(n)所示为车机上的超级桌面入口形式的示意图,由于车机上有抽屉风格的桌面,因此,如图14(n)所示的,在车机上在dock上可以提供一个“所有应用(all apps)”的图标,用户点击该图标后,便进入超级桌面,如图14(o)所示的,车机上显示的超级桌面中,车机上的本地应用和其他设备的桌面应用放在一起分标签(tab)显示。
534.示例69:图14(p)所示为在平板电脑上的超级桌面入口形式的示意图,由于平板电脑没有抽屉风格的桌面,因此,在平板电脑的dock上可以提供一个“其他端应用中心”的图标,例如,其他端设备包括手机p40,该用户点击该图标后,便进入超级桌面,如图14(q)所示的,平板电脑显示的超级桌面中,平板电脑的本地应用和其他设备(包括手机p40)的桌面应用放在一起分标签(tab)显示。
535.示例70:图14(r)所示为在大屏设备上的超级桌面入口形式的示意图,由于大屏设备没有抽屉风格的桌面,如图14(r)所示的,在大屏设备的dock上可以提供一个“其他端应用中心”的图标,例如,其他端设备包括手机p40,该用户点击该图标后,便进入超级桌面,如图14(s)所示的,大屏设备显示的超级桌面中,大屏设备的本地应用和其他设备(包括手机p40)的桌面应用放在一起分标签(tab)显示。
536.在一些示例性的实施例中,在车机上显示超级桌面时,用户可以点击超级桌面上其他设备的应用图标,在点击其他设备的应用图标后,可以在车机上显示该应用。例如,在车机上可以利用悬浮窗、分屏、全屏、或者覆盖车机桌面的方式显示该应用,下面将结合具体的例子(示例71至示例76)进行说明。
537.示例71:图15(a)所示为车机没有与其他设备建立可信连接前界面的示意图,在车机的dock上没有其他设备的图标。图15(b)所示为车机与手机p40建立可信连接后界面的示意图,在车机的dock上显示有手机p40的图标。用户可以点击该图标,显示结果如图15(c)所示的,车机上将显示超级桌面,车机上显示的超级桌面中,车机上的本地应用和其他设备的桌面应用放在一起分标签(tab)显示。
538.示例72:用户可以在如图15(c)所示的界面上,点击手机p40桌面上的任意一个应用,假设用户点击的应用为app1,用户点击app1的图标后,在车机上将显示app1。
539.在一些示例性的实施例中,在图15(c)所示界面中,用户点击app1的图标,将在车机上以悬浮窗的形式显示该app1,例如图15(d)所示的。可选的,在该悬浮窗显示的界面上,还可以存在一个“全屏按钮”,用户点击“全屏按钮”后,如图15(e)所示,将在车机上以全屏的形式显示该app1。
540.在一些示例性的实施例中,在图15(c)所示界面中,用户可以点击某一个app(例如为app1)的图标,将在车机上以分屏的形式显示该app1,例如图15(f)所示的。其中,该分屏是app1和车机的桌面在车机的显示屏上分屏显示。可选的,在该app1的分屏显示的界面上,还可以存在一个“全屏按钮”,用户点击“全屏按钮”后,如图15(e)所示的,将在车机上以全屏的形式显示该app1。
541.可选的,在一些示例性的实施例中,在图15(c)所示界面中,用户可以点击app1的图标,在车机上以全屏的形式显示该app1,例如图15(e)所示的。
542.示例73:在如图15(b)所示的界面上,用户可以在车机的dock上点击手机p40的图标。点击该图标后,显示结果如图15(g)所示的,车机上将显示超级桌面,车机上显示的超级桌面中,手机p40的桌面应用图标的显示方式可以和手机p40桌面布局相同。可选的,如图15(g)所示的,手机p40的桌面应用图标可以和车机的桌面在车机的显示屏上分屏显示。
543.在一些示例性的实施例中,在默认全屏显示应用的设备上,打开超级桌面的应用后,在该设备上全屏显示新打开的应用;在满足分屏的前提下,打开超级桌面的应用,在该设备上分屏的形式显示新打开的应用。
544.在一些示例性的实施例中,在电脑(例如pc等)等默认悬浮窗显示的设备上打开超级桌面应用后,在该设备上以悬浮窗显示新打开的应用,并遵循该设备的悬浮窗适配规则,使用纵向或者窄的悬浮窗,或者,横向或者宽的悬浮窗显示新应用。本技术在此不作限制。
545.在一些示例性的实施例中,同账号或者异账号的两个终端设备或者更多个终端设备之间可以通过“碰一碰”或者“扫一扫”的方式组建临时的超级桌面,或者,临时断开(关闭)超级桌面等。下面将结合具体的例子进行说明。
546.示例74:假设用户使用的手机p40和用户驾驶的车辆的车机之间之前已经建立可信关系,并且之前已经组建过超级桌面。在用户本次上车并且启动汽车后,手机p40和车机之间将自动组建超级桌面,如图16(a)所示的,车机上将显示超级桌面。在这种情况下,用于可以使用手机p40,通过“碰一碰”或者“扫一扫”的方式临时关闭超级桌面。例如,通过“碰一碰”或者“扫一扫”的方式后,如图16(b)所示的,可以在手机p40上显示弹框提示“断开共享”,用户点击“断开共享”后,手机p40将断开与车机的桌面共享,如图16(c)所示的,在车机上将退出超级桌面,车机上将不再显示超级桌面,而显示车机的主界面。
547.在一些示例性的实施例中,在用户关闭超级桌面后,用户下一次上车并且启动汽车后,手机p40和车机之间将自动组建超级桌面,或者,也可以通过“碰一碰”或者“扫一扫”的方式临时组建超级桌面。例如,如图16(d)所示的,可以在手机p40上显示弹框提示“开始共享”,用户点击“开始共享”后,手机p40将与车机的桌面共享,车机显示的界面将由图16(c)所示的界面变为图16(e)所示的界面,即显示超级桌面。
548.在一些示例性的实施例中,在上述的临时组建和关闭超级桌面的过程中,不影响
设置中的超级桌面的开关。
549.在一些示例性的实施例中,用户首次组建超级桌面或者每一次组建超级桌面的过程中,可以存在一个应用管理界面,在该应用管理界面中,用户可以进行选择,使得被用户选中的某些应用可以参与到超级桌面的显示中,而没有被选中的应用则不会出现在超级桌面上,下面将结合具体的例子进行说明。
550.示例75:假设手机和大屏设备、或者手机和车机需要组建超级桌面,用户在手机上开启“超级桌面”的开关后,可以利用各种方式搜索并添加周围的可信设备(例如通过“碰一碰”或者“扫一扫”的方式),在手机搜索到车机或者大屏后,手机显示的界面可以如图16(f)的,用户点击需要组建超级桌面的设备,例如选择“华为车载超级桌面”,在用户点击“华为车载超级桌面”之后,显示的界面如图16(g)所示的,用户可以在该界面进行应用的选择,用户选中的应用将显示在车机超级桌面上。
551.示例76:假设手机和平板电脑(例如为matepad)、或者手机和个人pc需要组建超级桌面,用户在手机上开启“超级桌面”的开关后,可以各种方式搜索并添加周围的可信设备(例如通过“碰一碰”或者“扫一扫”的方式),在手机搜索到车机或者大屏后,手机显示的界面可以如图16(h)的,在这种情况下,用户可以不需要进行应用的筛选,即默认手机上的所有应用均可以显示在个人pc或者平板电脑的超级桌面上。用户点击需要组建超级桌面的设备,例如选择“matepad超级桌面”,在用户点击“matepad超级桌面”之后,在matepad上,便可以显示超级桌面,matepad上可以显示手机上所有应用。
552.应理解,在本技术中,上述的各个示例和终端的各个界面、用户的各个操作等仅仅是示意性的,并不构成本技术实施例的具体限定。例如:在本技术的另一些实施例中,上述提供的各个终端显示的界面上的图标可以包括比上述任意一个图所示界面上显示的更多或更少图标,或者组合某些图标,或者拆分某些图标,或者不同的图标等。本技术实施例在此不作限制。
553.还应理解,上述的任意一个示例或者任意一个图所示的方案均可以为一个独立的方案,或者,上述的任意多个示例组合成的方案或者任意多个图组合成的方案也可以为一个独立的方案,本技术在此不作限制。
554.基于上述应用场景以及图1所示的通信系统以及上述的各个示例,下面介绍本技术提供的远程设备任务的显示以及控制方法的步骤流程。
555.在一些示例性的实施例中,图17所示的为本技术提供一个示例性的实施例的示意性流程图。其中,该流程图中涉及的设备包括第一终端和第二终端,第一终端和第二终端为相互可信的设备。
556.如图17所示,该流程包括如下步骤:
557.s1710:第一终端显示最近任务界面,该最近任务界面中包括控件,该控件包括n个设备的标识,该最近任务界面中包括至少一个任务卡片,至少一个任务卡片包括第一任务卡片和/或第二任务卡片,第一任务卡片对应第二终端在后台运行的或者当前运行的一个应用程序,第二任务卡片中显示第二终端的桌面应用程序标识。例如,可以参照示图3(d)至图3(f)所示的界面,或者图5(a)至图7(j)所示的界面,或者图7(p)和图7(q)所示的界面。
558.s1720:接收用户对第二终端的第一任务卡片第一操作,和/或对第二终端的第二任务卡片的第二操作。例如,可以参照示图8(b)所示的用户操作,或者图7(p)所示的用户操
作。
559.s1730:根据第一操作和/或第二操作,第一终端显示或者运行第一任务卡片对应的应用程序,和/或,显示第二终端的桌面应用程序标识。例如,可以参照示图8(c)所示的显示界面,或者图7(q)所示的显示界面。
560.在一些示例性的实施例中,用户还可以对显示的第二终端的桌面应用程序标识中的第二应用程序标识进行操作,在该操作之后,第一终端显示并运行第二应用程序。
561.在一些示例性的实施例中,第一终端还可以在第一终端的显示界面上,同时显示或者运行第一任务卡片对应的应用程序和第二应用程序,例如,第一终端利用分屏的方式同时显示或者运行第一任务卡片对应的应用程序和第二应用程序。
562.在一些示例性的实施例中,在第一终端的最近任务界面中显示第二终端的任务卡片时,根据用户对第二终端的使用状态,在第一终端的最近任务界面中布局第二终端的任务卡片。
563.在一些示例性的实施例中,第一终端按照第二终端横屏使用时、竖屏使用时、折叠屏的展开态竖屏使用时、折叠屏的展开态横屏使用时、折叠屏的折叠态横屏使用时、折叠屏的折叠态竖屏使用时的任意一种,在第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片。例如,可以参照示例1至示例3(图5(a)至图6(e))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,利用用户对第二终端的使用状态、用户对第一终端的使用状态、以及第一终端的屏幕大小第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片,可以提高第二终端的任务卡片显示的效率,方便用户在一个设备上查看和管理其他设备的历史任务,提高用户体验。
564.在一些示例性的实施例中,在第一终端的最近任务界面中显示第二终端的任务卡片时,第二终端的任务卡片中包括第二终端桌面第一屏快照的任务卡片。在该实现方式中,第一终端的最近任务界面中可以显示第二终端的桌面快照,便于用户进行查看,提高用户体验。
565.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户对第二终端桌面第一屏快照的任务卡片的第一操作;第一终端根据用户的第一操作,在第一终端的最近任务界面中显示第二终端桌面第二屏快照的任务卡片。例如,可以参照示例5(图7(b))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,用户可以查看第二终端的不同桌面的快照,提高用户体验。
566.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户的对第二终端桌面第一屏快照的任务卡片或者第二终端桌面第二屏快照的任务卡片第二操作;第一终端根据第二操作,在第一终端上显示第二终端桌面第一屏的界面或者第二终端桌面第一屏的界面,或者,在第一终端上运行第二终端桌面第一屏界面上的应用或者第二终端桌面第二屏界面上的应用。例如,可以参照示例5(图7(b))对应的具体描述,在该实现方式中,用户可以对第二终端不同的桌面快照的应用进行操作,实现在本机上快速的显示或者打开该应用,操作简单,提高用户体验。
567.在一些示例性的实施例中,在第二终端桌面第一屏快照的任务卡片上和/或第二终端桌面第二屏快照的任务卡片上存在fa卡片、悬浮窗、悬浮球中的至少一种。例如:可以参照示例4(图7(a))、示例6(图7(d))、示例7(图7(e))对应的具体描述,为了简洁,这里不再
赘述。在该实现方式中,第二终端桌面快照上可以显示有fa卡片、悬浮窗、或者悬浮球,可以灵活的利用不同的方式在第一终端的最近任务界面中显示第二终端的任务卡片,提高了用户体验。
568.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户的对该fa卡片、悬浮窗、或者悬浮球的第三操作;第一终端根据第三操作,在第一终端上显示第二终端桌面第一屏界面或者第二终端桌面第一屏界面,或者,在第一终端上运行fa卡片、该悬浮窗、或者该悬浮球对应的应用。在该实现方式中,用户可以对第二终端桌面快照上的fa卡片、悬浮窗、或者悬浮球进行操作,实现在本机上快速的显示或者打开该应用,操作简单,提高用户体验。可以参照示例4(图7(a))、示例6(图7(d))、示例7(图7(e))对应的具体描述,为了简洁,这里不再赘述。
569.在一些示例性的实施例中,在第一终端的最近任务界面中显示第二终端的任务卡片时,第二终端的任务卡片中包括用于控制第二终端的控制设备的快照。例如:可以参照示例8(图7(f))中所示的具体描述,在该实现方式中,可以灵活的在第一终端的最近任务界面中显示与第二终端相关的任务卡片,提高了用户体验。
570.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户的对该控制设备的快照的第四操作;第一终端根据第四操作,在第一终端上显示该控制设备的详情界面,或者远程控制第二终端。例如:可以参照示例8(图7(f))中所示的具体描述,为了简洁,这里不再赘述。在该实现方式中,用户可以在第一终端上查看控制第二设备的控制设备的任务卡片,并且可以对该任务卡片进行操作,实现在本机上快速的控制第二终端设备,操作简单,提高用户体验。
571.在一些示例性的实施例中,第二终端为大屏设备,该控制设备为遥控器。
572.在一些示例性的实施例中,在第一终端的最近任务界面中显示第二终端的任务卡片时,第二终端的任务卡片中包括:第二终端桌面应用的任务卡片。
573.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户对第二终端桌面应用的任务卡片上应用的第五操作;第一终端根据第五操作,在第一终端上管理该述第二终端桌面应用。例如:可以参照示例10(图7(p))中所示的具体描述,为了简洁,这里不再赘述。在该实现方式中,用户可以在第一终端上查看第二终端桌面应用图标,并且可以对桌面应用图标进行操作,帮助第二终端管理应用(排序、创建文件夹、删除等),实现在本机上快速的帮助第二终端管理应用,操作简单,提高用户体验。
574.在一些示例性的实施例中,n个设备包括轻设备,轻设备包括用户使用的可穿戴设备、智能家居设备,在第一终端的最近任务界面中显示轻设备的任务卡片时,轻设备的任务卡片包括不同的轻设备正在运行的任务分别对应的任务卡片。在该实现方式中,在第一终端的最近任务界面中可以显示轻设备的任务卡片,丰富了第一终端的最近任务界面显示的任务卡片的类型,对用户比较友好。
575.在一些示例性的实施例中,轻设备为iot设备、可穿戴设备以及智能家居设备等设备的总称。例如,轻设备可以包括:智能冰箱、智能空调、智能炒菜锅、智能油烟机、智能音箱、智能手表等。
576.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户对该设备的任务卡片的第六操作;第一终端根据第六操作,在第一终端上显示轻设备正在运行的任务的
详情界面,或者远程控制轻设备正在运行的任务。例如,可以参照示例9以及图7(g)至图7(o)中所示的具体描述,为了简洁,这里不再赘述。在该实现方式中,用户可以在第一终端上查看关联的轻设备正在运行的任务对应的任务卡片,并且可以对轻设备正在运行的任务对应的卡片进行操作,实现远程控制轻设备正在运行的任务,操作简单,提高用户体验。
577.在一些示例性的实施例中,n个设备包括第三终端,该流程还包括:第一终端接收用户对该轻设备的任务卡片的第七操作;第一终端根据第七操作,将该轻设备的任务卡片分享至第三终端;第三终端在最近任务界面中显示该轻设备的任务卡片。在该实现方式中,可以实现将轻设备的任务卡片推到第三终端上进行显示,便于用户在第三终端上控制轻设备正在运行的任务,可以提高用户体验。
578.在一些示例性的实施例中,该流程还可以包括:在第一轻设备的显示界面上显示第二轻设备正在运行的任务对应的任务卡片,该轻设备包括第一轻设备和第二轻设备;第一轻设备接收用户对第二轻设备正在运行的任务对应的任务卡片的第八操作;第一轻设备根据第八操作,远程控制第二轻设备正在运行的任务。例如,可以参照示例11(图7(r))中所示的具体描述,为了简洁,这里不再赘述。在该实现方式中,用户可以在轻设备上,远程控制其他轻设备正在运行的任务,操作简单,提高用户体验。
579.在一些示例性的实施例中,该流程还可以包括:通过第一轻设备,和/或,与第一轻设备关联的设备对用户的身份进行验证;在该用户的身份验证通过后,在第一轻设备的显示界面上显示第一终端和/或第二终端的任务卡片。
580.在一些示例性的实施例中,该流程还可以包括:第一轻设备接收用户对第一终端和/或第二终端的任务卡片的第九操作;第一轻设备根据第九操作,远程控制第一终端和/或第二终端的任务卡片对应的应用。例如,可以参照示例12(图7(s))中的具体描述,为了简洁,这里不再赘述。在该实现方式中,用户可以在轻设备上,远程控制其他智能终端历史任务卡片和前台任务卡片,操作简单,提高用户体验。
581.在一些示例性的实施例中,该流程还可以包括:在第一终端的最近任务界面中显示第二终端的任务卡片时,接收用户对第二终端的任务卡片中的第一任务卡片的第十操作,第十操作用于在第一终端上拉起第一任务卡片对应的第一应用;第一终端根据第十操作,在第一终端上运行第一应用;第一终端和第二终端根据第一应用迁移到第一终端的不同模式,确定第一应用的运行状态。例如,可以参照图8(a)中所对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,第一终端在拉起其他终端的应用后,可以根据应用迁移到第一终端的不同模式确定显示该应用在第一终端上的运行状态,保证了该应用可以在第一终端上运行的效率,从而提高用户体验。
582.在一些示例性的实施例中,第一终端和第二终端根据第一应用迁移到第一终端的不同模式,确定第一应用的运行状态,包括:当第一应用是利用复制模式迁移到第一终端上的情况下,第一终端和第二终端分别独立的运行第一应用,第一应用在第一终端和第二终端上的数据同步,操作状态同步,第一终端和第二终端分别根据各自的屏幕适配显示第一应用。例如,可以参照示例13(图8(b)至图8(c))对应的具体描述,为了简洁,这里不再赘述。
583.在一些示例性的实施例中,该流程还可以包括:第二终端接收用户对第一应用的第十一操作,第十一操作用于从第一终端上拉回第一应用;第二终端接收到第十一操作后,第一终端继续运行第一应用。例如,可以参照示例16((图8(h)至图8(i))对应的具体描述,
为了简洁,这里不再赘述。在该实现方式中,可以保证第一应用的正常运行。
584.在一些示例性的实施例中,第一终端和第二终端根据第一应用迁移到第一终端的不同模式,确定第一应用的运行状态,包括:在第一应用是利用窗口投屏技术的迁移模式迁移到第一终端上,并且,第一应用支持多实例的情况下,第一终端和第二终端分别独立的运行第一应用,第一应用在第一终端和第二终端上的数据同步,操作状态不同步,第一终端和第二终端分别根据各自的屏幕适配显示第一应用。例如,可以参照示例14(图8(d)至图8(e))对应的具体描述,为了简洁,这里不再赘述。
585.在一些示例性的实施例中,该流程还可以包括:第二终端接收用户对第一应用的第十二操作,第十二操作用于从第一终端上拉回第一应用;第二终端接收到第十二操作后,第一终端继续运行第一应用。例如,可以参照示例15(图8(f))对应的描述,为了简洁,这里不再赘述。
586.在一些示例性的实施例中,第一终端和第二终端根据第一应用迁移到第一终端的不同模式,确定第一应用的运行状态,包括:在第一应用是利用窗口投屏技术的迁移模式迁移到第一终端上,并且,第一应用不支持多实例的情况下,在同一时间段内,第一终端或者第二终端运行第一应用。
587.在一些示例性的实施例中,该流程还可以包括:第二终端接收用户对第一应用的第十三操作,第十三操作用于从第一终端上拉回第一应用;第二终端接收到第十三操作后,第一终端退出运行第一应用,第二终端运行第一应用。例如,可以参照示例15(图8(f))对应的描述,为了简洁,这里不再赘述。
588.在一些示例性的实施例中,第一终端和第二终端根据第一应用迁移到第一终端的不同模式,确定第一应用的运行状态,包括:在第一应用是利用fa技术的迁移模式迁移到第一终端上的情下,在第一终端运行第一应用之前,第一终端安装第一应用或者第一应用的fa;第一终端和第二终端分别独立的运行第一应用,第一应用在第一终端和第二终端上的数据同步,操作状态不同步,第一终端和第二终端分别根据各自的屏幕适配显示第一应用。例如,可以参照示例14(图8(d)至图8(e))对应的描述,为了简洁,这里不再赘述。
589.在一些示例性的实施例中,该流程还可以包括:第二终端接收用户对第一应用的第十四操作,第十四操作用于从第一终端上拉回第一应用;第二终端接收到第十四操作后,第一终端继续运行第一应用。例如,可以参照示例16(图8(h)至图8(i))对应的描述,为了简洁,这里不再赘述。在该实现方式中,可以保证第一应用的正常运行,提高用户体验。
590.在一些示例性的实施例中,第一终端的屏幕的面积大于第二终端屏幕的面积,在第一终端上拉起第一应用后,第一终端上运行第一应用,包括:在第一终端上自动利用悬浮窗或者全屏的方式显示并运行第一应用。例如,可以参照示例20(图8(m))对应的描述,为了简洁,这里不再赘述。在该实现方式中,可以在第一终端上利用悬浮窗或者全屏的方式显示并运行第一应用,提高用户体验。例如,第一终端可以为pc设备。
591.在一些示例性的实施例中,第一终端的屏幕的面积大于第二终端屏幕的面积,在第一终端上拉起第一应用后,该流程还包括:在第一终端的界面显示提示信息,该提示信息用于向用户提示使用悬浮窗或者全屏的方式显示第一应用;第一终端根据用户的选择,在第一终端上利用悬窗或者全屏的方式显示第一应用。例如,可以参照示例21(图8(n))对应的描述,为了简洁,这里不再赘述。在该实现方式中,可以根据用户的选择,第一终端上利用
悬浮窗或者全屏的方式显示并运行第一应用,提高用户体验。例如,第一终端可以为pc设备。
592.在一些示例性的实施例中,在第一终端上拉起第一应用后,该流程还包括:在第一终端的屏幕宽度大于第二终端的屏幕宽度的情况下,在第一终端上利用平行视界的方式显示第一应用,在第二终端上利用非平行视界的方式显示第一应用;或者,在第一终端的屏幕宽度小于第二终端的屏幕宽度的情况下,在第一终端上利用非平行视界的方式显示第一应用,在第二终端上利用平行视界的方式显示第一应用;或者,当第一应用在第二终端上利用横屏显示时,在第一终端上用横屏显示的方式显示第一应用;或者,当第一应用在第二终端上利用竖屏显示时,在第二终端上用竖屏显示的方式显示第一应用。例如,可以参照示例17至示例19(图8(j)至图8(l))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,可以根据第一终端和第二终端的屏幕大小,灵活的利用不同形式显示并运行第一应用,提高用户体验。
593.在一些示例性的实施例中,在第一终端运行第一应用的过程中,该流程还包括:在第一终端和第二终端的距离大于预设的第一距离后,第一终端的界面上显示第一提示信息和第二提示信息,第一提示信息向用户提示第一终端和第二终端将断开通信连接,第二提示信息向该用户提示第一应用来源于第二终端。例如,可以参照示例28(图8(v))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过向用户显示提示信息,可以使得用户获知通信连接的情况,提高用户体验。
594.在一些示例性的实施例中,在第一终端运行第一应用的过程中,该流程还包括:在第一终端和第二终端之间的通信连接断开后,第一终端利用蒙层显示第一应用,第一终端的界面上显示第三提示信息、第四提示信息和第五提示信息中的指示一个;其中,第三提示信息向用户提示第一终端和第二终端已经断开通信连接,第四提示信息向用户提示退出第一应用,第五提示信息向该用户提示重新连接。
595.在一些示例性的实施例中,该流程还可以包括:在第一终端和第二终端满足预设的条件后,第一终端和第二终端之间的自动进行重新连接;在该重新连接成功后,第一终端恢复正常显示并运行第一应用。例如,可以参照示例29(图8(w))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过向用户显示连接状态的提示信息、自动重连提示信息、以及退出应用的提示信息,并且,在满足条件后自动重新连接,保证了任务迁移的顺序运行,提高用户体验。
596.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户对第一终端的最近任务界面中的第二任务卡片的第十五操作,第十五操作用于将第二任务卡片对应的第二应用迁移至目标设备上运行,n个设备包括目标设备;第一终端根据第十五操作,确定目标设备;目标设备运行第二应用。在该实现方式中,用户可以便捷的确定任务卡片需要迁移的目标设备,操作简单,便于实现,从而提高用户体验。
597.在一些示例性的实施例中,第一终端根据第十五操作,确定目标设备,包括:当该用户长按第二任务卡片时,第一终端的最近任务界面隐藏除第二任务卡片之外的任务卡片以及不能运行第二应用的设备的图标;第一终端根据用户的操作,在第一终端的最近任务界面中显示的设备图标中确定目标设备。例如,可以参照示例30(图9(a))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过隐藏不可用设备的图标以及其他任务卡
片,方便用户确定任务卡片需要迁移的目标设备,提高用户确定目标设备的效率。
598.在一些示例性的实施例中,第一终端根据第十五操作,确定目标设备,包括:当该用户拖动第二任务卡片,并且,第二任务卡片与第四终端的标识有重叠时,确定第四终端为目标设备,n个设备包括第四终端。例如,可以参照示例31和32(图9(b)和图9(c))对应的具体描述,为了简洁,这里不再赘述。
599.在一些示例性的实施例中,第一终端根据第十五操作,确定目标设备,包括:当该用户拖动第二任务卡片,并且,第二任务卡片与第四终端和第五的标识均有重叠时,确定重叠面积最大的设备图标指示的终端设备为目标设备,n个设备包括第四终端和第五终端。例如,可以参照示例33(图9(d))对应的具体描述,为了简洁,这里不再赘述。在该实现方式,操作简单,便于实现,并且,可以提高确定目标设备的准确性。
600.在一些示例性的实施例中,第一终端根据第十五操作,确定目标设备,包括:当该用户拖动第二任务卡片上滑,并且,第二任务卡片移动的距离大于设预设的距离后,确定第二任务卡片正上方的设备图标指示的设备为目标设备。例如,可以参照示例34(图9(e)和图9(f))对应的具体描述,为了简洁,这里不再赘述。在该实现方式,操作简单,便于实现,并且,可以提高确定目标设备的准确性。
601.在一些示例性的实施例中,第一终端根据第十五操作,确定目标设备,包括:当该用户拖动第二任务卡片上滑,并且,第二任务卡片与第一终端屏幕顶部的距离小于预设的距离后,确定第二任务卡片正上方的设备图标指示的设备为目标设备。例如,可以参照示例35(图9(g)和图9(h))对应的具体描述,为了简洁,这里不再赘述。在该实现方式,操作简单,便于实现,并且,可以提高确定目标设备的准确性。
602.在一些示例性的实施例中,在确定目标设备后,在该用户拖动第二任务卡片上滑至目标设备的过程中,随着第二任务卡片距离目标设备的图标之间距离的减小,第二任务卡片的面积减小。例如,可以参照示例31(图9(b))对应的具体描述,为了简洁,这里不再赘述。在该实现方式,操作简单,便于实现,并且,可以提高确定目标设备的准确性。
603.在一些示例性的实施例中,在确定目标设备后,该流程还可以包括:在第二任务卡片与目标设备的图标没有重叠时,目标设备的图标向下移动预设的距离,或者,目标设备的图标的显示状态变为选中态。例如,可以参照示例37(图9(k)和图9(l))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,可以便于用户查看选中的目标设备,提高用户体验。
604.在一些示例性的实施例中,在确定目标设备后,该流程还可以包括:在该用户拖动第二任务卡片与目标设备的图标没有重叠的情况下,该用户松手,第二任务卡片自动迁移至目标设备上;目标设备运行第二应用。例如,可以参照示例36(图9(i)和图9(j))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,在已经确定目标设备后,但任务卡片尚未触达目标设备的图标热区,若此时用户松手,任务卡片自动飞到设备图标处,完成跨设备交互,提高了任务跨设备交互的效率。
605.在一些示例性的实施例中,在确定目标设备后,该流程还可以包括:第一终端接收用户对第一终端的最近任务界面中的第二任务卡片的第十六操作,第十六操作用于选择新的目标设备。例如,可以参照示例39至示例42(图9(o)和图9(v))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过用户对任务卡片的操作来改变选中的目标设备,
提高了改变目标设备的效率。
606.在一些示例性的实施例中,当目标设备为黑屏时,目标设备运行第二应用之前,该方法还包括:目标设备自动亮屏;目标设备自动亮屏后,显示解锁界面;目标设备接收用户的解锁操作。例如,可以参照示例43(图10(a))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过目标设备自动亮屏,亮屏后,触发解锁,之后用户手动进行解锁,保证了目标设备可以正常的运行迁移的任务,保证了任务迁移的效率。
607.在一些示例性的实施例中,当目标设备为黑屏时,目标设备运行第二应用之前,该方法还包括:目标设备自动亮屏并显示解锁界面;目标设备接收用户的解锁操作。例如,可以参照示例44(图10(b))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过目标设备自动亮屏,亮屏后自动触发用户手动解锁,在保证目标设备可以正常的运行迁移的任务的前提下,提高了任务迁移的效率。
608.在一些示例性的实施例中,当目标设备为黑屏时,目标设备运行第二应用之前,该流程还可以包括:目标设备自动亮屏并自动解锁。例如,可以参照示例45(图10(c))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过目标设备自动亮屏并自动解锁,在保证目标设备可以正常的运行迁移的任务的前提下,提高了任务迁移的效率。
609.在一些示例性的实施例中,第二应用对应的源设备为第一终端,目标设备运行第二应用,包括:目标设备利用第一终端的硬件能力,在目标设备上运行第二应用;或者,目标设备利用第一终端和目标设备的硬件能力,在目标设备上运行第二应用;或者,目标设备利用目标设备硬件能力,在目标设备上运行第二应用,并且,第一终端释放第二应用占用的硬件能力;或者,目标设备利用目标设备硬件能力,在目标设备上运行第二应用,并且,第一终端不释放第二应用占用的硬件能力。例如,可以参照示例46至示例48(图11(a)至图11(c))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过对第一终端和目标设备的硬件能力的不同分配规则,保证了迁移的任务可以在目标设备上正常的运行,提高了任务迁移的效率。
610.在一些示例性的实施例中,该流程还可以包括:在目标设备利用目标设备的硬件能力运行第二应用过程中,目标设备接收到运行第三应用的指令,在目标设备上运行第三应用使用的硬件能力与运行第二应用使用的硬件能力存在冲突;目标设备利用目标设备的硬件能力运行第三应用;第二应用切换回第一终端设备上,利用第一终端的硬件能力继续运行第二应用。例如,可以参照示例49(图11(d)至图11(e))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,在该实现方式中,在任务由源设备迁移至目标设备后,面临来自目标设备的新任务抢占硬件时,可以协调使用来源端硬件能力,即保证目标设备的任务优先执行,可以保障了目标设备任务优先执行。
611.在一些示例性的实施例中,该流程还可以包括:在目标设备利用目标设备的硬件能力运行第二应用过程中,目标设备接收到运行第三应用的指令,在目标设备上运行第三应用使用的硬件能力与运行第二应用硬件能力存在冲突;在目标设备利用目标终端的硬件能力,同时运行第二应用和第三应用。例如,可以参照示例50(图11(f)至图11(g))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,在该实现方式中,在任务由源设备迁移至目标设备后,面临来自目标设备的新任务抢占硬件时,可以将目标设备的硬件能力按照任务分离,同时支撑多个任务,可以保证目标设备上的任务和迁移的任务均可以正常的运
行,提高了目标设备任务运行的效率。
612.在一些示例性的实施例中,该流程还可以包括:在目标设备利用第一终端的硬件能力运行第二应用过程中,第一终端接收到运行第四应用的指令,在目标设备上运行第二应用使用的硬件能力与第一终端运行第四应用使用的硬件能力存在冲突;目标设备暂停运行第二应用;第一终端利用第一终端的硬件能力运行第四应用;在第一终端运行第四应用结束之后,目标设备继续利用第一终端的硬件能力运行第二应用。例如,可以参照示例52(图11(i)至图11(j))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,在任务由源设备迁移至目标设备后,面临来自源设备的新任务抢占硬件时,目标设备上迁移的任务暂停运行,在源设备上结束新任务后,目标设备上迁移的任务自动继续,可以保证源设备上的新任务优先执行。
613.在一些示例性的实施例中,该流程还可以包括:在目标设备利用第一终端的硬件能力运行第二应用过程中,第一终端接收到运行第四应用的指令,在目标设备上运行第二应用使用的硬件能力与第一终端运行第四应用使用的硬件能力存在冲突;目标设备切换到利用目标设备的硬件能力继续运行第二应用第一终端利用第一终端的硬件能力运行第四应用。例如,可以参照示例53(图11(i)和图11(k))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,在该实现方式中,在任务由源设备迁移至目标设备后,面临来自源设备的新任务抢占硬件时,源设备利用自身的硬件能力执行新任务,目标设备利用自身的硬件能力执行从源设备迁移来的任务,可以保证源设备上的任务和迁移的任务均可以正常的运行,提高了任务运行的效率。
614.在一些示例性的实施例中,该流程还可以包括:在目标设备利用第一终端的硬件能力运行第二应用过程中,第一终端接收到运行第四应用的指令,在目标设备上运行第二应用使用的硬件能力与第一终端运行第四应用使用的硬件能力存在冲突;目标设备利用第一终端的硬件能力继续运行第二应用第一终端利用第一终端的硬件能力运行第四应用。例如,可以参照示例53(图11(i)和图11(k))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,在该实现方式中,在任务由源设备迁移至目标设备后,面临来自源设备的新任务抢占硬件时,可以将源设备的硬件能力按照任务分离,同时支撑多个任务,可以保证源设备上的任务和迁移的任务均可以正常的运行,提高了源设备上任务运行的效率。
615.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户对第一终端的最近任务界面中的第五任务卡片的第十七操作,第十七操作用于将第五任务卡片对应的第五应用安装在第一终端上或者n个设备中的其他设备上;第一终端或者n个设备中的其他设备,根据第十七操作,安装第五应用。例如,可以参照示例22和示例23(图8(o)和图8(p))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过多设备任务中心,帮助其他设备或者本设备安装应用,操作方便,提高了应用安装的效率,提高用户体验。
616.在一些示例性的实施例中,该流程还可以包括:第一终端接收用户对第一终端的最近任务界面中的第六任务卡片和第七任务卡片的第十八操作,第十八操作用于将第六任务卡片和第七任务卡片对应的应用以第一显示方式在第一终端上或者n个设备中的其他设备上显示;第一终端或者n个设备中的其他设备以第一显示方式显示第六任务卡片对应的应用和第七任务卡片对应的应用。
617.在一些示例性的实施例中,第一显示方式为:分屏显示方式;或者,第六任务卡片
对应的应用为全屏显示,第七任务卡片对应的应用为悬浮窗显示;或者,第六任务卡片对应的应用为悬浮窗显示,第七任务卡片对应的应用为悬浮窗显示。例如,可以参照示例24至示例27(图8(q)至图8(u))对应的具体描述,为了简洁,这里不再赘述。在该实现方式中,通过多设备任务中心,用户进行快速的本端设备或创建跨设备的分屏/悬浮窗,操作方便,便于形成新的任务卡片,并且,新的任务卡片可以有不同的显示方式,提高了任务卡片的多样性和灵活性。
618.在上述的实施例中,例如,在第二终端的最近任务界面上显示第一终端的任务卡片或者其他设备的任务卡片之前,或者在第一终端的最近任务界面上显示第二终端的任务卡片或者其他设备的任务卡片之前,第二终端需要获取第一终端或者其他设备的最近任务信息,第一终端也需要获取第二终端或者其他设备的最近任务信息。或者,用户在第一终端设备拉起第二终端的某一个应用程序后,第一终端首先需要获取在第二终端上运行的应用程序的数据(也可以称为应用数据流),这样,在第一终端上才可以正常的运行该应用程序。
619.作为一种可能的实现方式,可以利用将最近任务信息或者应用程序的数据(应用数据流)写入数据包(parcel)进行rpc传输的方式进行最近任务信息在不同设备之间的传输,该方案在发送端设备上使用intent保存应用数据,使用parcel进行ipc和rpc传输。即首先在发送端设备上使用intent保存数据,然后写入parcel传输,最终在接收端设备上恢复数据。但rpc传输的最大限制为200kb,对于超过200kb的应用数据无法实现跨设备迁移,这成为了制约可迁移应用扩展的最大障碍,严重降低了应用迁移的效率,用户体验差。
620.因此,在本技术一些示例性的实施例中,在终端设备之间进行最近任务信息或者应用数据流传输的过程中,对最近任务信息或者应用数据流进行分段,得到多个分段数据,并建立分段数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端设备,对端终端根据接收到的分段数据以及索引表恢复应用数据,从而可以支持200kb以上的近任务信息或者应用数据流的迁移,提高了数据迁移的效率,提高用户体验。
621.下面将具体说明应用数据流传输的具体实施例。
622.在一些示例性的实施例中,如图18所示的,图18所示的为一例第一终端向第二终端迁移应用数据流(例如:文档编辑应用的数据流、音/视频播放应用的数据流、最近任务信息的数据流)过程的示意图。可选的,第一终端和第二终端之间存在wi-fi连接、蓝牙连接、usb、nfc连接、紫峰(zigbee)连接、wi-fi p2p连接、或者基于局域网的socket连接等。并且,第一终端和第二终端已经相互确认为可信设备。例如,第一终端和第二终端可以登录相同的wi-fi账号,或者,第一终端和第二终端登录的是同一个账号(例如华为账号),或者,第一终端和第二终端之前经过验证互为可信设备,或者,第一终端和第二终端之间通过其他各种方式(例如通过二维码扫描等)进行绑定后等,都可以确定第一终端和第二终端已经相互确认为可信设备。
623.如图18所示的,用户在第一终端上启动应用(文档编辑应用、音/视频播放应用、最近任务界面的应用)后,可选的,可以利用元能力子系统提供的数据保存(onsavedata)接口保存应用数据并开始数据迁移(start continuation),第一终端的应用程序框架层调度数据保存接口(schedulesavedata),取出元能力子系统中的应用数据(文档编辑应用数据、音/视频播放应用数据、第一终端最近使用的应用程序的数据等),将应用数据分成分段数
据,并设置分段数据的索引表。其中,分段数据利用分布式文件系统进行并行传输,分段数据的索引表利用分布式调度系统进行rpc传输。第二终端的分布式文件系统接收分段数据,第二终端的分布式调度系统接收分段数据的索引。第二终端的应用程序框架层从分布式调度系统和分布式文件系统分别接收到分段数据的索引以及分段数据后,恢复应用数据,调用第二终端的元能力子系统提供的数据恢复接口(例如为:schedulerestoredata)将恢复后的应用数据传输至元能力子系统的数据保存接口(例如为:onrestoredata)。第二终端的分布式调度系统通过使用ams的能力启动应用(文档编辑应用、音/视频播放应用、显示最近任务界面的应用等),应用通过调用元能力子系统的数据恢复(onrestoredata)接口获取恢复后的应用数据,最终在第二终端上完成应用数据的恢复工作,第二终端便可以运行该应用(文档编辑应用数据、音/视频播放应用数据、显示第一终端最近使用的应用程序的应用等,从而完成应用迁移的过程。
624.应该理解,图18所示的各个模块或者各个系统仅仅是示例性的,不应该对本技术中终端设备的内部架构产生任何的限制。例如,在本技术另一些实施例中,执行图18中所述的各个功能的模块还可以是其它模块,或者,还可以多个模块共同完成一个或者多个功能,或者,终端设备的内部架构也可以采用与图18所示的例子中不同的结构和模块,或者还可以包括更多或者更少的模块、或者多种不同模块方式的组合等。本技术实施例在此不作限制。
625.在一些示例性的实施例中,图19所示的为在图18所示的场景中,本技术提供的一个示例性的实施例的示意性流程图。在图19所示的流程中,用户在第一终端的文档编辑应用上编辑文档,该文档包括大量文字以及图片。第一终端将文档数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,将索引表写入parcel进行rpc传输的方式进行传输。在第二终端接收到全部的分段数据后,根据接收到索引表进行文档编辑应用的数据的恢复。用户第二终端拉起该文档编辑应用后,例如用户在第二终端的最近任务界面上点击第一终端的文档编辑应用对应的任务卡片后,可以保证文档编辑应用的数据迁移后可以在第二终端正常的进行显示和运行,保证用户在第二终端上可以正常的进行文档编辑。
626.如图19所示的,该实施例包括如下步骤:
627.s1901:当用户对第一终端正在编辑的文档向第二终端迁移时,第一终端将文档数据序列化成字节流。
628.s1902:第一终端根据字节流大小,确定对应的传输方式。其中,字节流大小指的是字节流的数据量,例如,字节流大小的单位为kb。
629.在一些示例性的实施例中,如果字节流的值大于或者等于200kb,则执行s1903至s1908。如果字节流的大小小于200kb,则通过将字节流写入parcel进行rpc传输。
630.在一些示例性的实施例中,无论字节流大小,均可以执行s1903至s1908。在这种情况下,也可以不应执行s1902,s1901执行完毕之后,直接执行s1903。
631.s1903:确定将字节流进行分段的个数(分段数)。
632.在本技术实施例中,可以将字节流分割成多段并行进行传输,因此,需要确定字节流进行分割或者划分的分段数。
633.在一些示例性的实施例中,可以将第一终端的线程池包括的线程总数确定为分段
数,即分段数可以和线程池包括的线程总数相同。或者,还可以根据线程池包括的线程总数确定分段数,即分段数可以和线程池包括的线程总数不同。
634.下面举例说明第一终端确定线程池包括的线程总数的过程。
635.在一些示例性的实施例中,第一终端可以获取第一终端的中央处理器(central processing unit,cpu)的核心数n,根据核心数n,确定线程池包括的线程总数(线程总数用t表示)。
636.其中,cpu的核心数是指物理上,也就是硬件cpu上存在着几个核心。换句话说,cpu的核心数即cpu芯片个数。例如。双核cpu就是包括2个相对独立的cpu核心单元组,四核就包含4个相对独立的cpu核心单元组。
637.线程是程序执行流的最小执行单位,是进程中的实际运作单位。简单来说,一个应用程序的运行就可以被看作是一个进程,而线程是运行中的实际的任务执行者,一个进程中包含了多个可以同时运行的线程。
638.线程池是线程的集合,使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。
639.线程数是一种逻辑的概念,线程数等于cpu模拟出的核心数。一般情况下,一个cpu核心数可以模拟出2线程的cpu,也就是说,这个单核心的cpu被模拟成了一个类似双核心cpu的功能。例如,双核cpu以模拟出4个线程,四核cpu可以模拟出8个线程。对于一个cpu,线程数总是大于或等于cpu的核心数,一个cpu核心最少对应一个线程。
640.示例性的,在本技术实施例中,线程池包括的线程总数t和cpu的核心数n的关系可以满足如下公式:
641.t=2
×n642.即线程池包括的线程总数为cpu的核心数的2倍,则分段数也为cpu的核心数的2倍。
643.可选的,在本技术实施例中,线程池包括的线程总数t与cpu的核心数n之间还可以满足其他关系。例如,线程池包括的线程总数为cpu的核心数的3倍或者4倍,或者,线程池包括的线程总数可以和cpu的核心数相同等。本技术实施例在此不作限制。
644.应理解,s1901至s1903为可选的步骤。换句话说,在本技术的一些实施例中,该实施例可以不包括s1901至s1903,终端设备直接执行s1904至s1906。
645.s1904,第一终端将字节流按照分段数进行分段,将分段数据保存在分布式文件系统中,并建立每个分段数据的段号与分段数据路径的索引表。
646.如果该流程不包括s1901至s1903,则在s1904中,第一终端可以将需要传输的应用的数据流(文档应用数据序对应的字节流)根据默认的分段数进行分段。可选的,默认的分段数可以是第一终端根据预设的规则,结合需要传输的应用的数据流大小确定的。示例性的,预设的规则可以包括应用的数据流大小与分段数之间的对应关系等。本技术在此不作限制。
647.而如果该流程包括s1901至s1903,利用s1901至s1903的步骤确定分段数,可以提高确定分段数的准确性,进一步的提高应用数据流传输的效率。
648.在一些示例性的实施例中,例如,假设线程池包括的线程总数为4,将字节流分成4段数据,每个分段数据可以对应一个段号,段号可以用于表征多个分段数据之间的前后顺序关系等。第一终端可以建立4段数据对应的索引表,该索引表包括每个分段数据的索引信息。其中,一个分段数据的索引信息用于指示一个分段数据在分布式文件系统中的存储路径、段号以及大小等。通过该索引表,便可以组合4段数据形成完整的字节流。
649.还应理解,在本技术实施例中,每个分段数据的大小是固定的。对于每个分段数据而言,分段数据不包括消息头字段,在本技术实施例中,分段数据的消息头字段指示的信息或者内容位于索引表中,而不在分段数据中。可选的,消息头字段指示的信息或者内容包括:分段数据的段号与分段数据路径之间的对应关系、分段数据的长度、分段数据的开始标识以及结束标识等信息。
650.s1905,第一终端利用多线程并行传输分段数据的方式向第二终端发送分段数据。
651.在一些示例性的实施例中,假设线程池包括的线程总数为4,将字节流分成4段数据,第一终端可以分别同时利用一个线程传输一个分段数据,即4个分段数据利用4个线程并行传输。换句话说,多个分段数据是利用多线程并行发送的,而不是串行发送的。多个分段数据可以分别发送,而不是将多个分段数据作为一个整体发送的。对端设备可以只根据接收到的部分分段数据,就可以进行数据的恢复,或者,对端设备可以根据接收到的全部分段数据,进行数据的恢复,即分段数据是以并行流传输的方式发送的,这样可以很大程度提高数据传输的效率。
652.s1906,第一终端将索引表写入parcel进行rpc传输的方式向第二终端发送索引表。
653.在一些示例性的实施例中,由于索引表所占的字节数一般较小,因此,可以利用parcel进行rpc传输的进行传输,即将索引表信息作为一个整体,完整的送到对端设备后,对端设备才能基于接收到的完整的索引表信息,恢复接收到的索引表,获取索引表包括的内容。
654.应理解,在本技术实施例中,索引表也可以利用和分段数据相同的方式进行传输。例如,可以将索引表按照分段数进行分段得到分段索引表数据,将分段索引表数据保存在分布式文件系统中,并建立每个分段索引表数据的段号与分段索引表数据路径的索引,然后利用多线程并行传输分段索引数据的方式向第二终端发送索引表。
655.可选的,在一些示例性的实施例中,该实施例还可以包括步骤s1907:第二终端接收启动文档编辑的应用的命令后,启动文档编辑应用。
656.示例性的,在s1907中,第二终端的分布式调度系统接收到索引表后,可以通过使用ams的能力启动文档编辑应用。
657.应理解,在本技术中,第二终端还可以通过其他方式启动文档编辑应用,本技术在此不作限制。
658.可选的,在一些示例性的实施例中,该实施例还可以包括步骤s1908:第二终端在接收到所有的分段数据后,根据索引表恢复文档数据。
659.在第二终端执行完s1907和s1908之后,便完成了应用文档编辑应用的数据流的迁移过程,用户便可以在第二终端上继续编辑文档,实现文档编辑应用在不同设备上的无缝迁移,提高了应用数据流迁移的效率,减少应用迁移的所用的时间,提高用户体验。
660.在一些示例性的实施例中,第二终端在接收到所有的分段数据后,可以根据索引表中的路径去读取各段数据,然后将各段数据的路径设置到第二终端的onrestoredata接口中,利用onrestoredata接口,按照段号进行恢复文档数据,将分段数据整合成完整的文档数据,最终可完成应用数据的恢复工作。
661.应理解,由于需要迁移的应用为文档编辑应用,因此,在s1908中,第二终端需要在所有的分段数据均接收到以后才可以进行文档数据的恢复。
662.利用本技术提供的实施例,在终端之间进行文档编辑应用的数据迁移的过程中,对文档编辑应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,将索引表写入parcel进行rpc传输的方式进行传输。从而可以支持200kb以上的应用的数据流的迁移,提高了应用数据流迁移的效率,减少应用迁移的所用的时间,用户不会感知应用数据迁移的过程,提高用户体验。并且,在对端设备接收到全部的分段数据后再进行文档编辑应用的数据的恢复,可以保证文档编辑应用的数据迁移后可以在对端设备正常的进行显示和运行,保证用户在对端设备上可以正常的进行文档编辑。
663.图20所示的为在图18所示的场景中,本技术提供的另一个示例性的实施例的示意性流程图。在图20所示的流程中,用户利用第一终端上的音频或者视频应用播放音频或者视频,第一终端将音频或者视频应用数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,将索引表写入parcel进行rpc传输的方式进行传输。在第二终端接收到部分的分段数据后,就根据接收到索引表进行音频或者视频应用数据的恢复,可以保证音频或者视频应用的数据迁移后可以在对端设备正常的进行显示和运行,保证用户在对端设备可以在之前的进度上继续播放音频或者视频。
664.如图20所示的,该实施例包括如下步骤:
665.s2001,当用户对第一终端正在播放的音频或者视频播放器应用的数据流向第二终端迁移时,第一终端将音频或者视频应用的数据序列化成字节流。
666.s2002,第一终端根据字节流大小,确定对应的传输方式。
667.s2003,确定将字节流进行分段的个数(分段数)。
668.其中,s2001至s2003为可选的步骤。
669.如果该流程不包括s2001至s2003,则在s2004中,第一终端可以将需要传输的应用的数据流(音频或者视频应用数据序对应的字节流)根据默认的分段数进行分段。可选的,默认的分段数可以是第一终端根据预设的规则,结合需要传输的应用的数据流大小确定的。示例性的,预设的规则可以包括应用的数据流大小与分段数之间的对应关系等。
670.而如果该流程包括s2001至s2003,利用s2001至s2003的步骤确定分段数,可以提高确定分段数的准确性,进一步的提高应用数据流传输的效率。
671.s2004,第一终端将字节流按照分段数进行分段,将分段数据保存在分布式文件系统中,并建立每个分段数据的段号与分段数据路径的索引表。
672.s2005,第一终端利用多线程并行传输分段数据的方式向第二终端发送分段数据。
673.s2006,第一终端将索引表写入parcel进行rpc传输的方式向第二终端发送索引表。
674.s2002至s2006的具体过程可以参考上述流程中对于s1902至s1906的描述,为了简
洁,这里不再赘述。
675.在一些示例性的实施例中,该实施例还可以包括步骤s2007:第二终端接收音频或者视频播放器应用的命令后,启动音频或者视频播放器应用。
676.在一些示例性的实施例中,该实施例还可以包括步骤s2008:第二终端陆续接收到分段数据后,根据接收到的索引表,恢复音频或者视频数据。
677.在第二终端执行完s2007和s2008之后,用户便可以在第二终端上继续播放音频或者视频,实现音频或者视频在不同设备的之间的无缝切换,从而提高用户体验。
678.在一些示例性的实施例中,第二终端可以根据索引表中的路径去读取接收到的部分分段数据,然后按照段号整合接收到的分段数据,并将整合后分段数据的路径设置到第二终端的onrestoredata接口中,便可完成音频或者视频数据的恢复工作。
679.应理解,由于需要迁移的应用为音频或者视频应用的数据,因此,在s2008中,第二终端并不需要在所有的分段数据均接收到以后才可以进行数据的恢复,而是可以接收到部分分段数据后就可以开始音频或者视频应用数据的恢复。换句话说,在s2008中,第二电子接收分段数据和恢复已经接收到的分段数据可以同时进行。在恢复音频或者视频应用数据后,用户可以在第二终端上获取当前音频或者视频的播放进度,开始继续播放。
680.利用本技术提供的实施例。在终端之间进行音频或者视频应用的数据迁移的过程中,对音频或者视频应用的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,将索引表利用写入parcel进行rpc传输的方式进行传输。从而可以支持200kb以上的应用的数据流的迁移,并且,在对端设备接收到部分的分段数据后就进行音频或者视频应用的数据的恢复,不需要等到所有的分段数据均接收到,提高了应用数据流迁移的效率,减少应用迁移的所用的时间,提高用户体验。
681.上述以文档编辑应用的数据流、音/视频播放应用的数据流为例说明本技术提供的方法。在一些示例性的实施例中,在不同的终端之间传输最近任务信息或者其他应用程序的数据流的过程中,也可以利用本技术提供的实施例,即将本端终端的最近任务信息或者应用程序的数据流进行分段,并建立分段后数据的索引表,将分段数据在分布式文件系统中利用多线程并行传输,并将索引表传输至对端终端,对端终端根据接收到的分段数据以及索引表恢复最近任务信息或者应用程序的数据流,从而实现在对端终端上显示本端终端最近运行的应用程序,进一步的实现在端终端上查看并且运行本端终端在后台运行的应用程序,这样可以提高最近任务信息或者应用程序的数据流迁移的效率,提高用户体验。
682.在上述的任务或者应用在不同终端设备之间迁移过程中,可以利用如下两种实现方式进行任务或者应用在不同终端设备之间迁移:
683.第一种实现方式是使用投屏技术,将一台终端设备上的视频信息投屏到另一个终端设备上。
684.如图21a和图21b所示,终端设备100(例如手机)上在播放视频,当用户想在终端设备200(例如笔记本电脑)上看该视频时,终端设备100可以检测到用户的投屏操作,响应于该操作,终端设备100可以通知终端设备200同步播放该视频,但这种情况下,需要终端设备100继续播放该视频才能实现在终端设备200上同步播放该视频,也即是说,需要终端设备100继续之前的任务才能实现在终端设备200上同步执行该任务。容易看出,该实现方法的缺点是不能很好的利用远端设备的计算资源,投屏通信会同时耗费本地设备和远端设备的
通信链路和计算资源,且需要本地设备将投屏任务一直保持为栈顶任务。
685.第二种实现方式是将一台终端设备的任务页面信息与恢复该任务页面所需要的信息都传输到另一台终端设备上,另一个终端设备可以基于上述信息显示该任务页面。在本技术实施例中,终端设备的任务页面信息与恢复该任务页面所需要的信息可以称为终端设备的最近任务信息。或者,换句话说,终端设备的最近任务信息包括:终端设备的任务页面信息与恢复该任务页面所需要的信息。
686.如图22a-图22e所示,终端设备100可以检测到用户针对用户界面210(可以为视频应用程序的主界面)上的视频播放选项211的点击操作,响应于该操作,终端设备100可以显示用户界面220,在检测到用户针对全屏播放控件221的点击操作,响应于该操作,终端设备100可以显示用户界面230,开始全屏播放视频。当用户想在终端设备100上继续播放该视频时,终端设备100可以将用户界面230的任务页面信息与恢复该任务页面所需要的信息发送给终端设备200,终端设备200在接收到上述信息之后,可以显示用户界面240,继续播放该视频。该方法的缺点是在终端设备200检测到用户针对用户界面240上的返回控件241的点击操作时,响应于该操作,终端设备200会直接显示用户界面250(即终端设备200的主界面),而不是显示用户界面230的上一个用户界面(例如用户界面220),也即是说,该实现方法只能恢复当前的任务页面信息,而无法保存并恢复当前的任务页面的上一个页面,这样不能很好的符合用户习惯,用户体验较差。
687.在本技术的一些示例性的实施例中,通过将本地终端设备本地任务栈恢复机制拓展到分布式场景下,使得本地终端设备与目标终端设备之间可以基于栈迁移来进行任务迁移,这样,目标终端设备可以保存并恢复本地终端设备的本地任务栈的上下文信息(context),使得用户可以在目标终端设备上无缝流转,执行本地终端设备上的任务,提高了用户体验。
688.在一些示例性的实施例中,图23a-图23g示例性示出了本技术实施例提供的一组不同终端设备之间进行任务迁移的用户界面。
689.假设本地终端设备为终端设备100,目标终端设备为终端设备200,下面以终端设备100最近使用的应用程序为视频应用程序为例对任务迁移过程中的用户界面进行说明。
690.如图23a所示,终端设备100显示的用户界面710可以为视频应用程序的主界面,终端设备100可以检测到用户针对视频播放选项711的点击操作,响应于该操作,终端设备100可以显示图23b所示的用户界面720,开始播放视频。也即是说,终端设备100最近在利用视频应用程序来播放视频,因此,终端设备100在检测到用户触发终端设备100显示最近任务界面的操作之后,响应于该操作,终端设备100可以显示图23c所示的视频应用程序对应的任务卡片730。可选的,终端设备100可以检测到用户针对返回控件722的点击操作,响应于该操作,终端设备100可以显示图23a所示的用户界面710,从而返回视频应用程序的主界面。
691.如图23d所示,当用户不想在终端设备100上继续看上述视频应用程序播放的视频时,而是想在终端设备200上继续看上述视频的情况下,则用户需要进行任务迁移。示例性的,终端设备200可以检测到用户触发终端设备200显示终端设备100的最近任务界面的操作,响应于该操作,终端设备200可以显示终端设备100的最近任务界面,该最近任务界面中可以包括视频应用程序对应的任务卡片730。终端设备200在检测到用户针对视频应用程序
对应的任务卡片730的点击操作之后,响应于该操作,终端设备200可以显示图23e所示的用户界面740,用户可以在终端设备200继续接着终端设备100上的视频播放进度观看上述视频,从而达到用户可以在不同终端设备之间“无缝切换”/“无缝流转”正在播放视频的用户界面。
692.继续参阅图23e,当用户想在终端设备200上全屏播放上述视频时,终端设备200可以检测到用户针对全屏播放控件741的点击操作,响应于该操作,终端设备200可以显示图23f所示的用户界面750,即进入用户界面740的下一个用户界面,从而实现用户在终端设备200上全屏播放上述视频的目的。
693.继续参阅图23e,终端设备200在检测到用户针对返回控件742的点击操作之后,响应于该操作,终端设备200可以显示图23g所示的用户界面760,返回视频应用程序的主界面,即进入用户界面740的上一个用户界面,而不是直接返回到图22e所示的终端设备200的主界面。
694.从图23e-图23g中容易看出,在进行任务迁移之后,终端设备200不仅能够显示终端设备100最近任务中显示的用户界面,而且,如果用户触发终端设备200执行跳转到视频应用程序的其他用户界面的操作,终端设备200也可以从最近任务中显示的用户界面跳转并显示该应用程序的其他用户界面(例如最近任务中显示的用户界面的上一个用户界面和/或下一个用户界面),简单便捷,灵活高效,提高了用户体验。
695.上述图23a-图23g的相关文字描述是对终端设备100向终端设备200进行任务迁移的过程进行说明的,容易理解,终端设备200向终端设备100进行任务迁移的过程与终端设备100向终端设备200进行任务迁移的过程是类似的,在此不再赘述。
696.在一些示例性的实施例中,图24a-图24g示例性示出了本技术实施例提供的另一组不同终端设备之间进行任务迁移的用户界面。
697.假设本地终端设备为终端设备100,目标终端设备为终端设备300,下面以终端设备100最近使用的应用程序为聊天应用程序为例对任务迁移过程中的用户界面进行说明。
698.如图24a所示,终端设备100显示的用户界面810可以为聊天应用程序的主界面,终端设备100可以检测到用户针对联系人选项811的点击操作,响应于该操作,终端设备100可以显示图24b所示的用户界面820,即进入聊天界面。也即是说,终端设备100最近在利用聊天应用程序来进行聊天,因此,终端设备100在检测到用户触发终端设备100显示最近任务界面的操作之后,响应于该操作,终端设备100可以显示图24c所示的聊天应用程序对应的任务卡片830。可选的,终端设备100可以检测到用户针对返回控件821的点击操作,响应于该操作,终端设备100可以显示图24a所示的用户界面810,从而返回聊天应用程序的主界面。
699.当用户不想在终端设备100上继续利用上述聊天应用程序进行聊天时,而是想在终端设备300上继续进行聊天的情况下,则用户需要进行任务迁移,如图24d所示,示例性的,终端设备300可以检测到用户触发终端设备300显示终端设备100的最近任务界面的操作,响应于该操作,终端设备300可以显示终端设备100的最近任务界面,该最近任务界面中可以包括聊天应用程序对应的任务卡片830。终端设备300在检测到用户针对聊天应用程序对应的任务卡片830的点击操作之后,响应于该操作,终端设备300可以显示图24e所示的用户界面840,用户可以在终端设备300继续接着终端设备100上的聊天进度进行聊天,从而达
到用户可以在不同终端设备之间“无缝切换”/“无缝流转”进行聊天的用户界面。
700.继续参阅图24e,若用户想在终端设备300上对图24e所示用户界面840中的聊天信息进行相关设置,终端设备300可以检测到用户针对更多控件841的点击操作,响应于该操作,终端设备300可以显示图24f所示的用户界面850,即进入用户界面840的下一个用户界面,从而使得用户可以在终端设备300上对聊天信息进行相关设置。
701.继续参阅图24e,终端设备300在检测到用户针对返回控件842的点击操作之后,响应于该操作,终端设备300可以显示图24g所示的用户界面860,返回聊天应用程序的主界面,即进入用户界面840的上一个用户界面,而不是直接返回到终端设备300的主界面。
702.从图24e-图24g中容易看出,在进行任务迁移之后,终端设备300不仅能够显示终端设备100最近任务中显示的用户界面,而且,如果用户触发终端设备300执行跳转到聊天应用程序的其他用户界面的操作,终端设备300也可以从最近任务中显示的用户界面跳转并显示聊天应用程序的其他用户界面(例如最近任务中显示的用户界面的上一个用户界面和/或下一个用户界面),简单便捷,灵活高效,提高了用户体验。
703.上述图24a-图24g的相关文字描述是对终端设备100向终端设备300进行任务迁移的过程进行说明的,容易理解,终端设备300向终端设备100进行任务迁移的过程与终端设备100向终端设备300进行任务迁移的过程是类似的,在此不再赘述。
704.需要说明的是,本技术实施例仅仅以视频应用程序和聊天应用程序为例对利用本技术实施例提供的方法完成任务迁移过程进行了说明,不限于此,本技术实施例还适用于其他应用程序,本技术实施例对此不作限定。
705.基于前述ui实施例,下面介绍本技术终端具体内部实现的一些示例性的实施例。
706.在一些示例性的实施例中,如图25a和图25b所示,可选的,本地终端设备和目标终端设备均可以包括全局任务中心、活动管理服务(activity manager service,ams)模块和分布式管理服务(distributed manager service,dms)模块。全局任务中心运行在应用层,活动管理服务模块和分布式管理服务模块均运行在系统服务层。
707.全局任务中心用于管理以及显示本地终端设备以及与本地终端设备建立通信连接的目标终端设备的最近使用的应用程序。
708.分布式管理服务模块用于获取本地终端设备最近使用的应用程序的信息以及与本地终端设备建立通信连接的目标终端设备交换最近任务信息。
709.活动管理服务模块用于对启动、切换、调度系统中的组件以及管理、调度各个应用程序进程。活动管理服务模块中可以存储有本地终端设备以及与本地终端设备建立通信连接的目标终端设备的最近任务列表对应的栈。
710.栈是用来记录最近使用过的应用程序以及顺序的数据结构,且对于该栈的设置确定了终端设备所记录的最近使用的应用程序的数量阈值。当超过该阈值时,使用时间最早的应用程序将会从最近任务列表中删除。
711.最近任务(recenttasks)是系统服务层中的最近任务列表,相当于是一个栈式管理结构,最近任务中可以包括一个或多个任务记录(taskrecord),栈顶的任务记录表示当前可见的任务。
712.任务记录是一个栈式管理结构,每一个任务记录中都包括一个或多个活动记录(activityrecord),栈顶的活动记录表示当前可见的用户界面。
713.活动记录是活动(activity)管理的最小单位,一个活动记录对应一个用户界面。
714.活动记录中可以包括persistentstate组件、intent组件等,可选的,persistentstate组件用于保存该活动记录对应用户界面中的用户数据,例如:视频应用程序可以保存统一资源标志符(uniform resource identifier,uri)、用户播放视频的进度数据等,聊天应用程序可以保存用户的聊天信息(例如聊天内容、聊天时间等)等。intent组件用于指示要启动的活动,并且携带有启动活动所需要的信息,可以包括该活动对应的应用程序对应的包名、类名、该活动对应的界面数据以及额外数据等等,其中额外数据可以是intent组件利用putextras方法获取到的persistentstate组件中保存的用户数据,界面数据可以是指生成某一个用户界面所需要的数据。
715.活动(activity)是安卓(android)操作系统的基本组件之一,可以用于在应用程序中为用户提供可交互的用户界面或视图。其中,一个应用程序可以有多个活动,应用通过任务栈装载活动,其中任务栈顶端的活动为用户可以直接交互的活动。
716.下面结合图25a-图25b介绍本技术一些示例性的实施例的具体内部实现过程:
717.阶段一、目标终端设备显示本地终端设备的最近任务列表。
718.在目标终端设备与本地终端设备建立通信连接的情况下,目标终端设备在接收到用户进入最近任务界面(也可以称为第三用户界面)的操作(也可以称为第三操作)之后,响应于该操作,目标终端设备的分布式管理服务模块1003可以向本地终端设备的分布式管理服务模块903发送获取最近任务信息的请求(也可以称为第二请求),本地终端设备的分布式管理服务模块903接收到该请求之后,可以从活动管理服务模块902获取到本地终端设备的最近任务信息,然后可以将最近任务信息发送给目标终端设备,从而可以使得目标终端设备可以在最近任务界面中显示本地终端设备的最近任务列表。
719.可选的,最近任务信息可以包括最近任务列表对应的栈、最近使用的应用程序的快照信息、最近使用的应用程序的标识等信息。
720.在一种可能的实现方式中,最近任务信息中还可以包括特征能力(feature ability,fa)文件,这样,即使目标终端设备没有安装对应的应用程序,也可以在用户点击该应用程序对应的任务卡片后,根据fa文件直接运行该应用程序。
721.阶段二、目标终端设备进行栈迁移。
722.目标终端设备在最近任务界面中显示本地终端设备的最近任务列表之后,可以检测到用户针对最近任务列表中某一个最近任务的任务卡片的点击操作(或者将最近任务列表中某一个最近任务的任务卡片拖动到目标终端设备的标识处的操作),响应于该操作,目标终端设备可以通过分布式管理服务模块1003指示活动管理服务模块1002查找到该任务卡片对应的任务栈(即任务记录),之后,活动管理服务模块1002可以将该任务卡片对应的任务栈迁移到目标终端设备最近任务中,从而完成栈迁移。
723.例如,如图25b所示,用户点击的任务卡片对应的任务栈可以为任务记录1,活动管理模块可以将任务记录1从本地终端设备最近任务迁移到目标终端设备最近任务,得到迁移任务记录,从而完成栈迁移。
724.可选的,任务记录1中的活动记录1可以为第一活动记录,活动记录2可以为第二活动记录。
725.在一种可能的实现方式中,在阶段一,当用户执行进入最近任务界面的操作时,目
标终端设备也可以通过分布式管理服务模块1003只向本地终端设备获取最近使用的应用程序的快照信息、最近使用的应用程序的标识,在阶段二,当用户在最近任务列表中点击某一个最近任务的任务卡片(或者拖动某一个最近任务的任务卡片到目标终端设备的标识处)时,目标终端设备可以再通过分布式管理服务模块1003向本地终端设备的分布式管理服务模块903发送获取用户点击的任务卡片对应的任务栈的请求(也可以称为第一请求),并携带该任务卡片对应的应用程序的标识,本地终端设备的分布式管理服务模块903可以将该任务卡片对应的应用程序的标识发送给活动管理服务模块902,通知活动管理服务模块902查找并发送该应用程序对应的任务栈给分布式管理服务模块903,分布式管理服务模块903接收到该应用程序对应的任务栈之后,可以将该应用程序对应的任务栈发送给目标终端设备,目标终端设备接收到用户点击的任务卡片对应的任务栈之后,再将该任务栈迁移到目标终端设备最近任务中,从而完成栈迁移。
726.阶段三、目标终端设备启动迁移任务,完成任务迁移。
727.目标终端设备通过分布式管理服务模块1003指示活动管理服务模块1002查找到阶段二中迁移的任务栈,进一步地,活动管理服务模块1002可以调用startactivity(或startability)方法、onrestore方法来对阶段二中迁移的任务栈进行复用,即活动管理服务模块1002可以基于迁移的任务栈中位于栈顶的活动记录来恢复该活动记录对应的用户界面,从而使得目标终端设备可以显示用户点击的任务卡片对应的用户界面,完成任务迁移。
728.举例来说,若图25b中的迁移任务记录为图23d所示的任务卡片对应的任务栈,则迁移任务记录中的活动记录1对应的用户界面可以是图23e所示的用户界面,迁移任务记录中的活动记录2对应的用户界面可以是图23g所示的用户界面。同理,若图25b中的迁移任务记录为图24d所示的任务卡片对应的任务栈,则迁移任务记录中的活动记录1对应的用户界面可以是图24e所示的用户界面,迁移任务记录中的活动记录2对应的用户界面可以是图24g所示的用户界面。
729.也即是说,目标终端设备不仅可以恢复迁移任务的当前用户界面,还可以恢复当前用户界面的上一个用户界面(也可以称为当前用户界面的父用户页面)。
730.容易理解,因为本技术提供的实施例是通过迁移任务栈而实现任务迁移的,所以,迁移的任务栈中存储的所有活动记录对应的用户界面均可以在目标终端设备上恢复。
731.例如,以视频应用程序为例,在用户进入如图23g所示的用户界面760之后,用户可以点击该用户界面760中的控件来查看另一个用户界面,比如,点击“我的”可以进入“我的”选项对应的用户界面查看用户的一些个人信息(例如历史观看视频等),还可以执行相应的设置操作。又例如,以聊天应用程序为例,在用户进入如图24g所示的用户界面860之后,用户可以该用户界面860中的控件来查看另一个用户界面,比如,点击“lucy”选项可以进入与lucy聊天的用户界面查看用户与lucy之前的聊天记录等。
732.本技术实施例通过基于栈迁移进行任务迁移,将本地任务栈恢复接口与迁移任务栈恢复接口进行统一,复用本地任务的恢复机制从而可以保存迁移任务的上下文信息,提高了用户体验,减少了开发者的开发成本与开发难度,避免了任务迁移对系统产生的较大的资源开销。
733.需要说明的是,本技术实施例只是以本地终端设备向目标终端设备进行任务迁移
为例说明的任务迁移具体过程,类似的,目标终端设备也可以再向另一个终端设备(例如第三终端设备)进行任务迁移,具体过程在此不再赘述。
734.在一种可能的实现方式中,若在目标终端设备和本地终端设备上都安装执行某一个任务所需要的应用程序时,则该任务从本地终端设备迁移到目标终端设备,目标终端设备可以独立运行该任务,这里独立运行是指不仅能够独立处理该任务涉及的ui,还包括目标终端设备能够利用本地软硬件来支撑该任务运行所涉及的通信、数据计算、多媒体播放能量等等。这样,可以充分利用目标终端设备本地的资源,而不是依赖本地终端设备去运行该任务,而且也不要求目标终端设备与本地终端设备一直存在通信连接。
735.在另一种可能的实现方式中,若在本地终端设备上安装执行某一个任务所需要的应用程序,而目标终端设备上未安装该任务所需要的应用程序时,则该任务从本地终端设备迁移到目标终端设备的过程中,除了传输前述最近任务信息之后,还需要传输从当前用户界面中进入当前用户界面的下一个用户界面所需要的界面数据,或者,在检测到用户进入当前用户界面的下一个用户界面的操作之后,向目标终端设备发送请求来获取进入当前用户界面的下一个用户界面所需要的界面数据。
736.在一些示例性的实施例中,如图26所示,图26示例性示出了本技术一些示例性的实施例具体流程。
737.如图26所示,该实施例包括以下步骤:
738.s2601:第一终端设备接收所述第二终端设备发送的第一用户界面的用户界面选项。
739.在第一终端设备和第二终端设备建立通信连接之后,第一终端设备可以接收第二终端设备发送的第一用户界面的用户界面选项(也可以称为最近任务的任务卡片),第一用户界面是第一应用程序的用户界面,第一应用程序是第二终端设备最近运行过的应用程序。
740.其中,第一终端设备可以是终端设备200或终端设备300。第二终端设备可以是终端设备100。
741.s2602:第一终端设备检测到用户在第一用户界面的用户界面选项上的第一操作。
742.在第一终端设备接收第二终端设备发送的第一用户界面的用户界面选项之后,第一终端设备检测到用户在第一用户界面的用户界面选项上的第一操作。可选的,第一操作可以是用户点击第一用户界面的用户界面选项操作,或者,也可以是用户拖动第一用户界面的用户界面选项到最近任务界面中的第一终端设备标识处的操作。
743.s2603:第一终端设备显示第一用户界面。
744.在第一终端设备检测到用户在第一用户界面的用户界面选项上的第一操作之后,第一终端设备可以显示第一用户界面。
745.可选的,第一用户界面可以是图23e所示的用户界面740,或者,也可以是图24e所示的用户界面840。
746.可选的,在一些示例性的实施例中,该流程还可以包括:s2604和s2605。
747.s2604:第一终端设备检测到用户在第一用户界面上的第二操作。
748.在第一终端设备可以显示第一用户界面之后,第一终端设备可以检测到用户在第一用户界面上的第二操作。可选的,第二操作可以是返回操作,例如,图23e中用户点击返回
控件742的操作,或者,图24e中用户点击返回控件842的操作。
749.s2605、第一终端设备显示第二用户界面。
750.在第一终端设备可以检测到用户在第一用户界面上的第二操作之后,第一终端设备可以显示第二用户界面,第二用户界面是所述第一应用程序的用户界面,且与第一用户界面不同。
751.可选的,第二用户界面可以是图23g所示的用户界面760,或者,也可以是图24g所示的用户界面860。
752.在上述的流程包括s2604和s2605的情况下,终端设备在显示第一用户界面之后,接收到用户的对第一用户界面的第二操作后,可以显第一用户的界面的父界面或者子界面,而不是返回到第一终端设备的主界面,符合用户的使用习惯,对用户友好,方便用户进行后续的操作,提高用户体验。
753.在本技术实施例中,父界面也可以称为父用户界面,子界面也可以称为子用户界面。其中,父界面可以理解为终端当前显示的界面的上一个(或者上一级)用户界面,子界面可以理解为终端当前显示的界面的下一个(或者下一级)用户界面。
754.例如,在终端显示当前界面时,用户可以点击当前界面上的控件(例如返回控件),则终端显示当前界面的父界面。而当终端显示当前界面的父界面时,用户可以点击当前界面上的控件(例如进入某一个菜单或者项目的控件),则终端显示当前界面。
755.又例如:在终端显示当前界面时,用户可以点击当前界面上的控件(例如进入某一个菜单或者项目的控件),则终端显示当前界面的子界面。在终端显示当前界面的子界面,用户可以点击当前界面上的控件(例如返回控件),则终端显示当前界面。
756.例如,在本技术实施例中,图23g所示的用户界面760可以称为图23e所示的用户界面740的父用户界面;图24g所示的用户界面860可以称为图24e所示的用户界面840的父用户界面。
757.在上述的实施例中,当第一终端的用户在使用第一终端时,不仅可以在最近任务界面中查看第二终端最近使用的应用程序,还可以清理第二终端在后台运行的应用程序。同时,当第三终端的用户在使用第三终端时,不仅可以在最近任务界面中查看第二终端最近使用的应用程序,还可以清理第二终端在后台运行的应用程序。例如,当第二终端此时正在后台播放视频,而第一终端的用户希望第二终端可以停止播放视频,而第三终端的用户希望第二终端可以继续播放视频。第一终端的用户可以拖住第二终端对应的最近任务列表中的视频应用程序的卡片并上划。当第一终端接收到用户的指令后,会向第二终端发送清理视频应用程序的任务指令。同时,第三终端的用户可以在视频应用程序的任务卡片对应的区域做出点击的手势,当第三终端接收到用户的指令后,会向第二终端发送运行视频应用程序的任务指令。在这种场景下,第三终端会因为同时接到两个任务指令而产生执行冲突,导致第二终端执行任务指令的失败,出现跨设备任务场景出现不稳定的问题,影响用户体验。
758.作为一种可能的实现方式,可以在云端的数据库中创建并存储一个表格,该表格中包括任务对应的方法名等字段,并在方法名字段上创建唯一索引。某个终端设备想要执行某个方法,就使用这个方法名向表中插入数据,成功插入则获取该方法对应的任务锁,在该设备获取该方法对应的任务锁之后并释放该任务锁之前,其他终端不能获取该任务锁,
即其他设备不能在执行表格中的任意一个方法(任务)。在任务执行完毕后该终端删除对应的数据并释放任务锁,释放任务锁之后,其他终端可以获取该任务锁并执行任务,从而保证同一时间一个终端只执行来自于另外一个终端设备的一个任务指令。
759.但是,上述方案中的任务锁为基于数据库的分布式任务锁,多用于端云协同场景,不适用于局域网下的嵌入式设备。并且,基于数据库的分布式任务锁需要基于分布式数据库实现,数据库的可用性和性能将直接影响分布式锁的可用性及性能。进一步的,基于数据库的分布式任务锁没有锁失效机制,因为有可能出现某个终端成功插入数据后,该终端重启了,但是对应的数据没有被删除,导致终端重启后一直不能获取到任务锁。
760.因此,在本技术一些示例性的实施例中,通过在目标设备上创建本地锁,该本地锁在同一时间只能被一个其他设备持有。哪个设备成功持有该本地锁,目标设备便可以执行来自于该设备的任务,在该设备持有该本地锁的期间,目标设备不会执行其他设备发送的任务指令,保证了同一时间内目标设备只执行来自于一个设备的任务指令,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
761.下面将结合具体的例子进行说明。
762.在一些示例性的实施例中,图27所示的为本技术提供一个示例性的实施例的示意性流程图,如图27所示的,该流程包括如下步骤:
763.s2701,第一终端上的显示界面上显示第二终端设备的最近使用的应用程序。
764.s2702,第一终端接收用户的操作,该操作用于触发清理第二终端上视频应用程序的任务指令。
765.例如,当用户在第二终端的视频应用程序的任务卡片对应的区域做出上划的操作时,则触发该用于清理第二终端视频应用程序的任务指令。本技术中对于用户操作不作限制。
766.s2703,第一终端根据任务指令的类型,在容器(例如为map)中查询该任务指令对应的第一终端的本地锁(为了区分,称为第一本地锁或者第一任务锁)。容器是用来存储数据的数据结构,而map是容器中的一种。在容器内部维护一种key-value的映射关系,key为value的索引,终端可以通过key能够查询出对于的value,value可以理解为本技术中的锁对象。终端可以通过任务指令确定对应的key,从而根据key确定对应的value(锁对象)。
767.第一本地锁用于保证第一终端在同一时间内只能向一个设备(例如第二终端)发送一个任务指令,第一本地锁可以为抢占式的跨设备任务锁。对于第一终端而言,如果同一时间需要向第二终端发送多个任务指令(即多进程或者多线程任务),则哪个任务指令成功持有或者抢占到第一本地锁,则第一终端可以向第二终端发送该任务指令。如果第一终端在同一时间内只需要向第二终端发送一个任务指令,则该任务指令持有第一本地锁。换句话说,在同一时间内,第一本地锁只能被第一终端上的一个跨设备任务指令持有。
768.例如,假设用户在第二终端的视频应用程序的任务卡片对应的区域做出上划的操作时,触发了用于清理第二终端视频应用程序的任务指令,与此同时,第一终端的后台的应用管家也向第二终端发送一个任务指令,该任务指令用于清理第二终端上音乐应用程序,或者用于运行第二终端上的视频应用程序,在这种情况下,这两个任务指令会抢占第一本地锁,哪个任务指令抢占到第本地锁,则第一终端可以向第二终端发送哪个任务指令。
769.s2704,第一终端尝试持有第一本地锁。
770.在一些示例性的实施例中,第一终端可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第一本地锁。尝试持锁(trylock)的方式可以理解为:第一终端尝试去持有第一本地锁,如果持有失败(例如,第一本地锁被其他需要第二终端执行的指令占有或者持有),则第一终端放弃持有第一本地锁,即不会向第二终端发送清理视频应用程序的任务指令。阻塞等待持锁(lock)方式可以理解为:第一终端尝试去持有第一本地锁,如果持有失败,则会一直等待,直至成功持有第一本地锁。可选的,还可以设置一个等待时间长度,如果等待时间长度截止还未能成功持有第一本地锁,则第一终端放弃持有第一本地锁,即不会向第二终端发送清理视频应用程序的任务指令。
771.在一些示例性的实施例中,第一终端还可以维护第一本地锁的持锁超时时间,第一终端持有第一本地锁的时间超过第一本地锁的持锁超时时间长度后,第一终端将释放第一本地锁,即不在持有第一本地锁,在第一终端不在持有第一本地锁后,第一终端将放弃或者终止清理第二终端的视频应用程序的任务。第一终端上的其他跨设备任务则有可能持有第一本地锁。
772.可选的,在确定第一本地锁被第一终端的其他跨设备任务指令占有的情况下,第一终端可以在显示界面上向用户显示信息,用于通知用户该任务指令执行或者发送失败。
773.示例性的,如果第一终端持有第一本地锁失败,例如,在触发向第二终端发送清理第二终端上视频应用程序(例如为app3)的任务指令的之前,第一终端已经向第二终端发送了一个任务指令,并且还未收到该任务指令的执行的反馈信息,则第一终端上的任务指令持有第一本地锁失败,在这种情况下,第一终端可以向用户显示消息,用于向用户通知清理第二终端上视频应用程序的任务指令发送失败。例如,在一些示例性的实施例中,如图28中的a图所示的,为一例第一终端向用户显示消息的示意图。第一终端可以显示弹框11,提示用户“有其他远程任务正在执行,请稍后重试”,响应于用户点击知道按钮12的操作,弹框11可以隐去。或者,弹框11可以在预设时间(例如,3s)后隐去。又例如,图28中的b图所示的为另一例第一终端向用户显示消息的示意图。第一终端可以显示弹框13,提示用户“有其他远程任务正在执行,任务指令发送失败”,响应于用户点击知道按钮13的操作,弹框14可以隐去。或者,弹框14可以在预设时间后隐去。
774.示例性的,如果第一终端持有第一本地锁失败,则用户在视频应用程序做出上划或者下滑的清理操作后,视频应用程序的卡片依然在第一终端上显示,不会消失。
775.应理解,s2703和s2704为可选的或者不必须的步骤。
776.s2705,第一终端持有第一本地锁成功后,根据任务指令的类型,在容器(例如为map)中查询并尝试持有第二终端的本地锁(为了区分,称为第二本地锁或者第二任务锁)。
777.如果该流程不包括s2703和s2704,则在s2702之后,第一终端执行s2705,在这种情况下,s2705替换为:第一终端根据任务指令的类型,在容器(例如为map)中查询并尝试持有第二终端的本地锁。
778.在该流程包括s2703和s2704的情况下,由于第一终端成功持有该任务指令对应的第一本地锁,证明第一终端当前并没有向第二终端发送其他的跨设备任务指令,即该任务指令可以占有第一本地锁,保证了第一终端向第二终端发送出去的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。
779.在该流程不包括s2703和s2704的情况下,第一终端向第二终端发送的其他指令可
能会和该任务指令产生冲突,不能保证任务指令发送的效率和成功率,第一终端向第二终端发送任务指令时可能会失败。
780.第二本地锁用于保证第二终端在某一时间或者某个时间段内只会执行来自于一个设备的任务指令。如果哪个设备成功持有第二本地锁,则意味着第二终端可以执行该设备发送的任务指令。未持有第二本地锁的其他设备不会向第二终端发送任务指令,或者,即使向第二终端发送任务指令,第二终端也不会执行该任务指令。换句话说,在同一时间内,除第二终端外,第二本地锁只能被一个设备持有。换句话说,在这种情况下,第二本地锁的粒度可以为设备级别的,即第二本地锁用于保证第二终端上的第二应用程序和第一应用程序中,在同一时间只有一个应用程序执行来自于同一个设备的任务指令。
781.可选的,在一些示例性的实施例中,第二本地锁的粒度还可以是应用级别的,第二本地锁用于保证第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有,对于第二终端上的同一个应用程序,只能在同一时间执行来自于一个设备的任务指令,不能在同一时间执行来自于不同设备的任务指令。例如,用户在第一终端的最近任务界面上查看第二终端在后台运行应用程序,但是没有对第二终端在后台运行应用程序进行操作,在这种情况下,第一终端并不会尝试持有或者抢占第二本地锁。与此同时,第三终端的用户在第三终端的最近任务界面上查看第二终端在后台运行应用程序,也没有对第二终端在后台运行应用程序进行操作,这种情况下,第三终端也不会尝试持有或者抢占第二本地锁。但是,如果第一终端的用户在第二终端后台运行的某一个应用程序做出上划或者触摸的操作,用于指示第二终端清理或者运行该应用程序,则第一终端会尝试持有或者抢占第二本地锁,如果第三终端的用户没有对第二终端在后台运行应用程序进行操作,则第一终端成功持有第二本地锁,在第一终端持有第二本地锁的期间,第三终端的用户虽然可以查看第二终端在后台运行应用程序,但是不能对第二终端在后台运行应用程序进行操作(例如清理或者运行等),或者,即使第三终端的用户对第二终端在后台运行应用程序进行操作,第二终端也不会响应该操作,即该操作触发的任务指令执行失败。
782.在上述例子中,如果第二本地锁的粒度是应用级别的,第一终端的用户和第三终端的用户针对的可以是第二终端上的同一个应用程序,例如为显示最近任务界面的应用。在本技术中,还可以预设冲突应用列表。冲突应用列表中包括多个相互冲突的不同的应用程序。例如,第一终端向第二终端发送的任务指令用于操作第二终端上的第一应用程序,与此同时,第三终端向第二终端发送的任务指令用于操作第二终端上的第二应用程序。如果这两个应用程序均在冲突应用列表中,则第二终端根据谁先持有第二本地锁,持有谁的任务指令,在该设备释放第二本地锁之前,第二终端不会执行来自于另外一个设备的任务指令。如果这两个应用程序均不在冲突应用列表中,或者,一个在冲突应用列表中而另一个不在,则第二终端会同时执行这两个任务指令。
783.例如,第一终端也可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第二本地锁。
784.在一些示例性的实施例中,第一终端还可以维护第二本地锁的持锁超时时间,第一终端持有第二本地锁的时间超过第二本地锁的持锁超时时间长度后,第一终端将释放第二本地锁,即不在持有第二本地锁,在第一终端不在持有第二本地锁后,第一终端将不能确
定第二终端是否可以执行第一终端发送的跨设备任务指令,或者,在第一终端不在持有第二本地锁后,第一终端将放弃或者终止向第一终端发送的跨设备任务指令。并且,在第一终端不在持有第二本地锁后,其他设备则可能持有第二本地锁。
785.s2706,第一终端成功持有第一本地锁和第二本地锁后,向第二终端发送清理视频应用程序的任务指令以及第二本地锁的持锁超时时间。
786.在一些示例性的实施例中,第一终端可以利用多种方式向第二终端清理视频应用程序的任务指令以及第二本地锁的持锁超时时间。
787.例如:第一终端可以使用rpc的方式将清理视频应用程序的任务指令发送至第一终端。
788.在一些示例性的实施例中,在确定第二本地锁被其他设备持有的情况下,第一终端可以在显示界面上向用户显示信息,用于通知用户该任务指令执行失败。
789.在一些示例性的实施例中,如果第一终端持有第二本地锁失败,例如,在触发向第二终端发送第一任务指令的之前,第二终端已经在执行来自于其他设备的远程任务指令,并且还未执行完毕,则第二终端持有第二本地锁失败,在这种情况下,第一终端可以向用户显示消息,用于向用户通知该任务指令发送失败。例如,在一些示例性的实施例中,如图29中的a图所示,第一终端可以显示弹框22,提示用户“任务指令发送失败,请稍后重试”,响应于用户点击知道按钮21的操作,弹框22可以隐去,或者,弹框22可以在预设时间(例如,3s)后隐去;又例如,如图29中的b图所示,第一终端可以显示弹框32,提示用户“对端设备正忙,任务指令发送失败”,响应于用户点击知道按钮31的操作,弹框32可以隐去,或者,弹框32可以在预设时间后隐去;再例如,如图29中的c图所示,第一终端可以显示弹框42,提示用户“对端设备正忙,请稍后重试”,响应于用户点击知道按钮41的操作,弹框42可以隐去,或者,弹框42可以在预设时间(例如,3s)后隐去。
790.示例性的,如果第一终端持有第二本地锁失败,则用户在视频应用程序做出上划或者下滑的清理操作后,视频应用程序的卡片依然在第一终端上显示,不会消失。
791.可选的,作为另一种可能的实现方式,第一终端在成功持有第一本地锁后,也可以向第二终端发送清理视频应用程序的任务指令,在向第二终端发送清理视频应用程序的任务指令之后或者同时,尝试持有第二本地锁。如果持有第二本地锁失败,则该任务指令执行失败。第一终端可以等待直至持有第二本地锁,或者,第二终端接收到该清理视频应用程序的任务指令后,在容器中查询该任务指令对应的第二本地锁是否被其他设备持有,如果被其他设备持有,则向第一终端发送消息,用于通知第二本地锁被其他设备持有,该任务指令执行失败。
792.s2707,第二终端接收到该清理视频应用程序的任务指令以及第二本地锁的持锁超时时间后,根据任务指令的类型,在容器中查询该任务指令对应的第二本地锁。
793.s2708,第二终端查询到第二本地锁后,确定第二本地锁被第一终端持有,开始执行清理视频应用程序的任务指令。
794.在一些示例性的实施例中,第二终端可以维护第二本地锁的持锁超时时间,超过这个时间长度后,第二终端将停止或者放弃执行清理第二终端的视频应用程序的任务。
795.可选的,如果第二终端在第二本地锁的持锁超时时间截止后还未执行完清理第二终端的视频应用程序的任务,则第二终端可以向第一终端发送消息,用于通知清理视频应
用程序的任务的执行失败。可选的,第一终端也可以在显示界面上向用户显示信息,用于通知用户该任务指令执行失败。
796.s2709:第三终端的显示界面上显示第二终端设备的最近使用的应用程序。
797.s2710:第三终端接收用户的操作,该操作用于触发运行第二终端上视频应用程序的任务指令。
798.例如,当第三终端的用户在视频应用程序的任务卡片对应的区域做出点击的手势时,则触发该用于运行第二终端视频应用程序的任务指令。本技术中对于用户操作不作限制。
799.可选的,在一些示例性的实施例中,该流程还可以包括步骤s2711:第三终端根据任务指令的类型,在容器中查询任务指令对应的第三终端的本地锁(为了区分,称为第三本地锁或者第三任务锁)。第三本地锁用于保证第三终端在同一时间内只能向第二终端发送一个任务指令,第三本地锁可以为抢占式的跨设备任务锁。对于第三终端而言,如果同一时间需要向第二终端发送多个任务指令(即多进程或者多线程任务),则哪个任务指令成功持有第三本地锁,则第三终端可以向第二终端发送该任务指令。如果第三终端在同一时间内只需要向第二终端发送一个任务指令,则该任务指令持有第三本地锁。换句话说,在同一时间内,第三本地锁只能被第三终端上的一个跨设备任务指令持有。
800.可选的,在一些示例性的实施例中,该流程还可以包括步骤s2712:第三终端尝试持有第三本地锁。
801.可选的,在一些示例性的实施例中,第三终端也可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第二分布式任务锁。
802.在本技术中,第三终端还可以维护第三本地锁的持锁超时时间,第三终端持有第三本地锁的时间超过第三本地锁的持锁超时时间长度后,第三终端将释放第三本地锁,即不在持有第三本地锁,在第三终端不在持有第三本地锁后,第三终端将放弃或者终止运行第二终端上视频应用程序的任务指令,第三终端上的其他跨设备任务则有可能持有第三本地锁。
803.s2713:第三终端持有第三本地锁成功后,尝试持有第二本地锁。
804.应理解,s2711和s2712为可选的或者不必须的步骤。
805.如果该流程不包括s2711和s2712,则在s2710之后,直接执行s2713,在这种情况下,s2713替换为:第三终端会根据任务指令的类型,在容器(例如为map)中查询并尝试持有第三终端的本地锁。
806.在该流程包括s2711和s2712的情况下,由于第三终端成功持有该任务指令对应的第一本地锁,证明第三终端当前并没有向第二终端发送其他的跨设备任务指令,即该任务指令可以占有第三本地锁,保证了第三终端向第二终端发送的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。
807.在该流程不包括s2711和s2712的情况下,第三终端向第二终端发送的其他指令可能会和该任务指令产生冲突,不能保证任务指令发送的效率和成功率,第三终端向第二终端发送任务指令时可能会失败。
808.在本技术中,由于第一终端已经持有第二本地锁,因此,第三终端将不会成功持有第二本地锁,意味着第二终端不会执行来自于第三终端的任务指令。在第一终端释放第二
本地锁,并且,没有其他设备持有第二本地锁的情况,第三终端才可能持有第二本地锁。在第三终端持有第二本地锁的情况下,第二终端执行会执行来自于第三终端的任务指令,或者,第三终端才会向第二终端发送运行第二终端视频应用程序任务指令。
809.s2714:第三终端尝试持有第二本地锁失败,确定不向第二终端发送运行视频应用程序的任务指令。
810.由于第一终端已经持有第二本地锁,因此,第二终端只会执行第一终端发送的清理视频应用程序的任务指令,这样可以避免多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
811.可选的,第三终端尝试持有第二本地锁失败的情况下,第三终端也可以在显示界面上向用户显示信息,用于通知用户运行视频应用程序的任务指令发送失败。
812.可选的,在一些示例性的实施例中,该流程还可以包括步骤s2715:第二终端执行清理视频应用程序的任务指令后,向第一终端发送反馈信息,该反馈信息用于指示第二终端的视频应用程序已经被清理。这样,第一终端设备便可以确定第二终端已经执行完相应的任务指令,保证了任务指令的执行完成。
813.可选的,在一些示例性的实施例中,该流程还可以包括步骤s2716:第一终端接收到该反馈信息后,释放第二本地锁和第一本地锁。
814.在第一终端释放第二本地锁后,其他设备便可能持有第二本地锁,在其他设备持有第二本地锁后,便可以向第二终端发送任务指令,第二终端在接收到任务指令后,便可以执行该任务指令。
815.在第一终端释放第一本地锁后,第一终端上的其他跨设备任务则有可能持有第一本地锁,在第一终端上的其他跨设备任务则持有第一本地锁的情况下,第一终端设备可以向第二终端或者其他终端发送该任务指令。
816.可选的,第一终端接收到该反馈信息后,可以向第一终端的全局任务中心发送通知,指示全局任务中心刷新最近任务界面,而视频应用将不在刷新后的最近任务界面中显示,或者不在最近任务界面中第二终端对应的最近任务列表中显示。在用户确认视频应用不在刷新后的最近任务界面中显示,或者不在最近任务界面中第二终端对应的最近任务列表中显示后,则确定该任务指令执行成功。
817.利用本技术提供的实施例,通过在目标设备或者目标设备的某个应用程序上创建本地锁,该本地锁在同一时间只能被一个其他设备持有,向目标设备或者目标设备的应用程序发送跨设备任务指令的终端尝试持有该本地锁,哪个设备成功持有该本地锁,目标设备便可以执行来自于该设备的任务,在该设备持有该本地锁的期间,目标设备不会执行其他设备发送的任务指令,保证了同一时间内目标设备或者目标设备上某一个应用程序只执行来自于一个设备的任务指令,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
818.在一些示例性的实施例中,图30所示的为本技术提供另一个示例性的实施例的示意性流程图,如图30所示的,该流程包括如下步骤:
819.s3001中,第一终端上的显示界面上显示第二终端设备的最近使用的应用程序。
820.s3002,第一终端接收用户的第一操作,第一操作用于触发清理第二终端上视频应用程序的任务指令(为了区分,称为第一任务指令)。
821.s3003,在接收到第一操作后,第一终端接收用户的第二操作,第二操作用于触发运行第二终端上音乐应用程序的任务指令(为了区分,称为第二任务指令)。
822.s3004,第一终端创建任务队列,该任务队列包括第一任务指令和第二任务指令,第一任务指令和第二任务指令在任务队列中的先后顺序为对应的操作的先后顺序。
823.可选的,在本实施例中,第一终端可以只接收到用户的一个操作(第一操作或者第二操作),触发第一任务指令或者第二任务指令。在此之前,第一终端可以接收到用户的多个操作,分别用于触发不同的任务指令,第一终端可以根据用户多个操作的先后顺序,创建一个任务队列,然后将第一任务指令或者第二任务指令插入到之前创建的任务队列中。该任务队列包括多个任务指令,多个任务指令的先后顺序为对应的操作的先后顺序。
824.可选的,第一终端也可尝试持有第一本地锁。在本实施例中,第一本地锁用于保证第一终端按照顺序依次向第二终端发送多个任务指令,即保证了第一终端不会在同一时间向第二终端发送多个任务指令,保证了第二终端执行多个任务指令的先后顺序。
825.s3005,第一终端根据任务队列中包括的任务类型,在容器(例如为map)中查询并尝试持有第二终端的第二本地锁。
826.关于第二本地锁的描述可以参考上述s2705中的描述,为了简洁,这里不再赘述。
827.s3006,第一终端尝试持有第二本地锁。
828.例如。第一终端可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第二分布式任务锁。
829.在一些示例性的实施例中,如果第一终端持有第二本地锁失败(例如,第二本地锁被其他设备占有或者持有),则第一终端放弃持有第二分布式任务锁,即不会向第二终端发送任务队列。
830.s3007,第一终端成功持有第二本地锁后,向第二终端发送该任务队列以及第二本地锁的持锁超时时间。
831.s3007的具体过程可以参考上述流程中对于s2706的描述,为了简洁,这里不再赘述。
832.s3008,第二终端接收到任务队列以及第二本地锁的持锁超时时间后,根据任务指令的类型,在容器中查询该任务指令对应的第二本地锁。
833.s3009,第二终端查询到第二本地锁后,确定第二本地锁被第一终端持有,便可以按照任务队列中的多个任务指令的先后顺序,依次执行多个任务指令。例如,可以先执行清理视频应用程序的任务指令,在该任务指令执行完毕后,再执行运行音乐应用程序的任务指令。
834.可选的,如果第二终端在第二本地锁的持锁超时时间截止后还未执行完任务队列中的多个任务指令,则第二终端可以向第一终端发送消息,用于通知任务队列中的哪个或者哪些任务指令执行失败。
835.s3010:第三终端上的显示界面上显示第二终端设备的最近使用的应用程序。
836.s3011:第三终端接收用户的操作,该操作用于触发运行第二终端文档编辑应用程序任务指令。
837.例如,当第三终端的用户在文档编辑应用程序的任务卡片对应的区域做出点击的手势时,则触发该用于运行第二终端文档编辑应用程序的任务指令。本技术中对于用户操
作不作限制。
838.可选的,第三终端也可以先后接收用户的多个操作,根据多个操作分别对应的任务指令创建任务队列,任务队列包括的多个任务指令在任务队列中的先后顺序为对应的操作的先后顺序。
839.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3012:第三终端根据任务指令的类型,在容器中查询任务指令对应的第三终端的第三本地锁。
840.关于第三本地锁的描述可以流程中对于s2711的描述,为了简洁,这里不再赘述。
841.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3013:第三终端尝试持有第三本地锁。
842.示例性的,第三终端也可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第二分布式任务锁。
843.s3014:第三终端持有第三本地锁成功后,尝试持有第二本地锁。
844.如果上述流程不包括s3012和s3013,在s3011之后执行s3014,在这种情况下,s3014可以替换为:第三终端尝试持有第二本地锁。
845.在该流程包括s3012和s3013的情况下,由于第三终端成功持有该任务指令对应的第三本地锁,证明第三终端当前并没有向第二终端发送其他的跨设备任务指令,即该任务指令可以占有第三本地锁,保证了第三终端向第二终端发送的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。
846.在该流程不包括s3012和s3013的情况下,第三终端向第二终端发送的其他指令可能会和该任务指令产生冲突,不能保证任务指令发送的效率和成功率,第一终端向第二终端发送任务指令时可能会失败。
847.在本技术中,由于第一终端已经持有第二本地锁,因此,第三终端将不会成功持有第二本地锁,意味着第二终端不会执行来自于第三终端的任务指令。在第一终端释放第二本地锁,并且,没有其他设备持有第二本地锁的情况,第三终端才可能持有第二本地锁。在第三终端持有第二本地锁的情况下,第二终端执行会执行来自于第三终端的任务指令,或者,第三终端才会向第二终端发送运行第二终端视频应用程序任务指令。
848.s3015:第三终端尝试持有第二本地锁失败,确定不向第二终端发送运行文档编辑应用程序的任务指令。
849.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3016:第二终端执行任务队列中多个任务指令后,向第一终端发送反馈信息,该反馈信息用于指示任务队列中多个任务指令已经执行完毕。这样,第一终端设备便可以确定第二终端已经执行完相应的任务指令,保证了任务指令的执行完成。
850.在第二终端释放第二分布式任务锁后,其他设备则可能持有第二分布式任务锁。
851.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3017:第一终端接收到该反馈信息后,释放第二本地锁。
852.在第一终端释放第二本地锁后,其他设备便可能持有第二本地锁,在其他设备持有第二本地锁后,便可以向第二终端发送任务指令,第二终端在接收到任务指令后,便可以执行该任务指令。
853.可选的,第一终端接收到该反馈信息后,将向第一终端的全局任务中心发送通知,
指示全局任务中心刷新最近任务界面,而视频应用将不在刷新后的最近任务界面中显示,或者不在最近任务界面中第二终端对应的最近任务列表中显示。
854.利用本技术提供的实施例,通过在目标设备上创建本地锁,该本地锁在同一时间只能被一个设备持有。哪个设备成功持有该分布式任务锁,目标设备便可以接收来自于该设备的任务队列,并且按照任务队列中包括的多个任务指令的先后顺序依次执行多个任务指令,在该设备持有该本地锁的期间,目标设备不会执行其他设备发送的任务指令,可以避免跨设备的多个任务之间的冲突,同时,保证了来自于同一个设备的多个任务指令按顺序执行,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
855.在一些示例性的实施例中,图31所示的为本技术提供另一个示例性的实施例的示意性流程图,如图31所示的,该流程包括如下步骤:
856.s3101,第一终端上的显示界面上显示第二终端设备的最近使用的应用程序。
857.s3102,第一终端接收用户的操作,该操作用于触发清理第二终端上视频应用程序任务指令。
858.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3103:第一终端根据任务指令的类型,在容器中查询与第一终端对应的第一终端的设备锁(即查询与本设备关联的唯一对应)。
859.在本实施例中,第一终端的设备锁具有如下两个功能:
860.第一:第一终端的设备锁用于保证第一终端在同一时间内只能向一个设备(例如第二终端)发送一个任务指令(即第一本地锁的功能)。对于第一终端而言,如果同一时间需要向第二终端发送多个任务指令(即多进程或者多线程任务),则哪个任务指令成功持有第一本地锁,则第一终端可以向第二终端发送该任务指令。如果第一终端在同一时间内只需要向第二终端发送一个任务指令,则该任务指令持有第一本地锁。换句话说,在同一时间内,第一本地锁只能被第一终端上的一个跨设备任务指令持有。
861.第二:第一终端的设备锁用于保证第一终端和另一个终端(例如第二终端)合作进行或者执行跨设备任务过程中,第一终端不会再执行其他设备发送的任务指令。换句话说,第一终端的设备锁还用于保证第一终端在同一时间内只和一个设备进行或者执行跨设备任务,即只参与到和一个设备之间的跨设备任务中。
862.第一终端的设备锁在同一时间,只能被一个设备持有。
863.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3104:第一终端尝试持有第一终端的设备锁。
864.在一些示例性的实施例中,第一终端可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第一终端的设备锁。
865.如果第一终端不能成功持有第一终端的设备锁,则意味着第一终端和另一个终端合作进行或者执行跨设备任务过程中,第一终端也会执行其他设备发送的任务指令,或者,第一终端可能同时向第二终端发送多个任务指令。
866.在本技术中,第一终端还可以维护第一终端的设备锁的持锁超时时间。
867.应理解,s3103和s3104为可选的步骤。
868.s3105:第一终端持有第一终端的设备锁成功后,根据任务指令的类型,在容器(例如为map)中查询并尝试持有第二终端的设备锁。
869.如果该流程不包括s3103和s3104,则在s3102之后执行s3105,在这种情况下,s3105可以替换为:第一终端会根据任务指令的类型,在容器(例如为map)中查询并尝试持有第二终端的设备锁。
870.在该流程包括s3103和s3104的情况下,由于第一终端成功持有第一终端的设备锁,保证了第一终端在同一时间内只向第二终端发送了这一个任务指令,并且,第一终端和第二终端合作进行跨设备任务过程中,第一终端不会再执行其他设备发送的任务指令。这样,一方面可以保证第一终端向第二终端发送的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。另一方面,也避免了其他设备在第一终端参与跨设备的任务过程中向第一终端设备发送跨设备任务指令,避免了第一终端设备上的跨设备任务指令的冲突。
871.在该流程不包括s3103和s3104的情况下,第一终端向第二终端发送的其他指令可能会和该任务指令产生冲突,并且,其他终端还可以向第一终端发送跨设备的任务指令,可能导致第一终端产生跨设备的任务指令冲突,不能保证第一终端任务指令发送的效率和成功率。
872.第二终端的设备锁具有如下两个功能:
873.第一个功能:第二终端的设备锁用于保证第二终端在某一时间或者某个时间段内只会执行来自于一个设备的任务指令。如果哪个设备成功持有第二终端的设备锁,则意味着第二终端可以执行该设备发送的任务指令。未持有第二终端的设备锁的其他设备不会向第二终端发送任务指令,或者,即使向第二终端发送任务指令,第二终端也不会执行该任务指令。
874.第二个功能:第二终端的设备锁用于保证第二终端在执行来自于某一个终端的任务指令期间,第二终端不会向其他设备发送跨设备的任务指令。换句话说,第二终端的设备锁用于保证第二终端在同一时间内只和一个设备进行或者执行跨设备任务,即只参与到和一个设备之间的跨设备任务中。
875.在本技术中,第二终端的设备锁在同一时间,只能被一个设备持有。
876.s3106:第一终端成功持有第一终端的设备锁和第二终端的设备锁后,向第二终端发送清理视频应用程序的任务指令以及第二终端的设备锁的持锁超时时间。
877.s3107:第二终端接收到该清理视频应用程序的任务指令以及第二终端的设备锁的持锁超时时间后,根据任务指令的类型,在容器中查询该任务指令对应的第二终端的设备锁。
878.s3108:第二终端查询到第二终端的设备锁后,确定第二终端的设备锁被第一终端持有,开始执行清理视频应用程序的任务指令。
879.s3109:第三终端上的显示界面上显示第二终端设备的最近使用的应用程序。
880.s3110:第三终端接收用户的操作,该操作用于触发运行第二终端购物类的应用程序任务指令。
881.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3111:第三终端根据任务指令的类型,在容器中查询任务指令对应的第三终端的第三本地锁。
882.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3112中:第三终端尝试持有第三本地锁。
883.s3113中:在第三终端持有第三本地锁成功后,尝试持有第二终端的设备锁。
884.如果上述流程不包括s3111和s3112,在s3110之后,执行s3113,s3113可以替换为:第三终端尝试持有第二终端的设备锁。
885.在该流程包括s3111和s3112的情况下,由于第三终端成功持有该任务指令对应的第三本地锁,证明第三终端当前并没有向第二终端发送其他的跨设备任务指令,即该任务指令可以占有第三本地锁,保证了第三终端向第二终端发送的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。
886.在该流程不包括s3111和s3112的情况下,第三终端向第二终端发送的其他指令可能会和该任务指令产生冲突,不能保证任务指令发送的效率和成功率,第三终端向第二终端发送任务指令时可能会失败。
887.s3114:第三终端尝试持有第二终端的设备锁失败,确定不向第二终端发送运行购物类的应用程序任务指令。
888.示例性的,在确定第二终端的设备锁被其他设备持有的情况下,第三终端可以在显示界面上向用户显示信息,用于通知用户该任务指令发送或者执行失败。
889.其中,s3109至s3114的具体描述可以参考上述流程中对于s2709至s2714的描述,为了简洁,这里不再赘述。
890.s3115中,第四终端接收用户的操作,该操作用于触发向第一终端设备发送任务指令(跨设备的任务指令)。
891.s3116,第四终端根据任务指令的类型,该容器中查询该任务指令对应的第一终端的设备锁。
892.s3117,第四终端尝试持有第一终端的设备锁。
893.由于第一终端的设备锁已经被第一终端持有,即第一终端已经参与到与第二终端的跨设备任务中,因此,第四终端不能持有第一终端的设备锁,即第四终端不会向第一终端发送任务指令。在第一终端的设备锁被第一终端释放后,即第一终端没有参与到与其他任何设备的跨设备任务中,在这种情况下,第四终端才可能持有第一终端的设备锁,在这种情况下,第四终端可以向第一终端发送任务指令。
894.示例性的,第四终端也可以通过尝试持锁(trylock)或者或阻塞等待持锁(lock)方式尝试持有第一终端的设备锁。
895.s3118,第四终端尝试持有第一终端的设备锁失败,确定不向第一终端发送任务指令。
896.可选的,第四终端尝试持有第一终端的设备锁后,作为一种可能的实现方式,第四终端会一直等待,直至成功持有第一终端的设备锁,在第四终端成功持有第一终端的设备锁后,第四终端可以向第一终端发送跨设备的任务指令。
897.例如,第一终端向第二终端上发送的任务指令为:将第一终端上视频应用程序的数据流迁移到第二终端上,同时,第四终端需要向第一终端设备的发送任务指令为停止运行第一终端上的视频应用程序,在这种情况下,由于第四终端尝试持有第一终端的设备锁失败,因此,不向第一终端发送任务指令,或者,即使向第一终端发送任务指令,第一终端发现第四终端未持有第一终端的设备锁,也不会执行该任务指令。
898.示例性的,在第四终端持有第一终端的设备锁失败的情况下,第四终端可以在显
示界面上向用户显示信息,用于通知用户该任务指令发送或者执行失败。具体界面可以参考图28和图29所示的界面,这里不再赘述。
899.可选的,还可以设置一个等待时间长度,如果等待时间长度截止第四终端还未能成功持有第一终端的设备锁,则第四终端放弃持有第一终端的设备锁,停止或者放弃该跨设备的任务。
900.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3119:第二终端执行清理视频应用程序的任务指令后,向第一终端发送反馈信息,该反馈信息用于指示第二终端的视频应用程序已经被清理。这样,第一终端设备便可以确定第二终端已经执行完相应的任务指令,保证了任务指令的执行完成。
901.可选的,在一些示例性的实施例中,该流程还可以包括步骤s3120:第一终端接收到该反馈信息后,释放第二终端的设备锁和第一终端的设备锁。
902.在第一终端释放第二终端的设备锁后,其他设备便可能持有第二终端的设备锁,在其他设备持有第二终端的设备锁后,便可以向第二终端发送任务指令,第二终端在接收到任务指令后,便可以执行该任务指令。
903.在第一终端释放第一终端的设备锁,即第一终端没有参与到与其他任何设备的跨设备任务中,在这种情况下,其他终端才可能持有第一终端的设备锁,在其他设备持有第一终端的设备锁的情况下,其他终端可以向第一终端发送任务指令。
904.可选的,第一终端接收到该反馈信息后,将向第一终端的全局任务中心发送通知,指示全局任务中心刷新最近任务界面,而视频应用将不在刷新后的最近任务界面中显示,或者不在最近任务界面中第二终端对应的最近任务列表中显示。
905.利用本技术提供的实施例,通过在目标设备上创建设备锁,该设备锁在同一时间只能被一个其他设备持有。哪个设备成功持有该设备锁,目标设备便可以执行来自于该设备的任务,并且,在该设备持有目标设备的设备锁期间,目标设备不能向其他设备发送远程任务指令,保证了同一时间内目标设备只和一个设备进行或者执行跨设备任务,即只参与到和一个设备之间的跨设备任务中。并且,在和目标设备合作执行跨设备任务的设备上也设置设备锁,该设备锁在同一时间只能被一个设备持有,在该设备与目标设备合作执行跨设备任务期间,该设备持有该设备锁,从而保证该设备不会在参与或者不会执行与其他设备之间的跨设备任务,即保证该设备在同一时间只参与到和一个设备之间的跨设备任务中,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
906.还应理解,在本技术中,以第一终端为例,如果第一终端接收到自于另外一个终端的跨设备任务指令(例如为第一任务指令),并且,第一终端还需要执行本机内部的一个指令(例如为第二任务指令),在这种情况下,一种可能的实现方式为:第一任务指令和第二任务指令那个指令先达到任务指令的执行单元(例如为内核层或者芯片),第一终端优先执行哪个任务指令,在该任务指令执行完毕之后,再执行后续的指令。或者,另外一种可能的实现方式为,可以优先执行本机内部的任务指令,在本机内部的任务指令执行完毕之后,再执行来自于其他终端的任务指令。
907.在一些示例性的实施例中,图32所示的为本技术提供一个示例性的实施例的示意性流程图,如图32所示的,该流程包括如下步骤:
908.s3201:第一终端接收来自第二终端的任务信息,该任务信息包括第二终端在后台运行的应用程序的信息。
909.s3202:第一终端接收来自用户的第一操作。
910.s3203:第一终端根据第一操作开启最近任务界面,其中,该最近任务界面包括控件,该控件包括第二终端的标识。
911.可选的,该控件包括第二终端的标识和第一终端的标识,该最近任务界面中包括任务卡片,该任务卡片包括第一终端和第二终端在后台运行应用程序分别对应的任务卡片,任务卡片对应第一终端或者第二终端在后台运行的一个应用程序。
912.s3204:第一终端响应于用户对于第二终端的标识的第二操作,在最近任务界面中显示第二终端在后台运行的应用程序对应的至少一个任务卡片,该至少一个任务卡片包括第二终端在后台运行的第一应用程序对应的第一任务卡片。
913.s3205:第一终端响应于用户对第一任务卡片的第三操作,运行第一应用程序并显示第一应用程序的第一用户界面。
914.s3206:第一终端响应于用户在第一用户界面上的第四操作,显示第二用户界面,其中,第四操作是回退操作,第二用户界面是第一用户界面的父用户界面。
915.本技术提供的实施例,在第一终端显示第一用户界面之后,接收到用户的对第一用户界面的操作后,第一终端显示第一用户的界面的父界面或者子界面,而不是显示第一终端设备的主界面,符合用户的使用习惯,对用户友好,方便用户进行后续的操作,提高用户体验。
916.在一些示例性的实施例中,该方法还包括:在最近任务界面中显示第一终端最近运行的应用程序对应的第二任务卡片。
917.在一些示例性的实施例中,该控件还包括第一终端的标识,该方法还包括:在最近任务界面中显示第二任务卡片之前,第一终端接收用户对第一终端的标识的操作。
918.在一些示例性的实施例中,该方法还包括:在第二操作之前,第一终端在最近任务界面中显示第一终端最近运行的应用程序对应的第二任务卡片;在第二操作之后,第一终端停止显示第一终端最近运行的应用程序对应的第二任务卡片。
919.可选的,在一些示例性的实施例中,在第一终端设备显示第一用户界面之前,该实施例还可以包括步骤:第一终端接收第二终端设备发送的任务栈,该任务栈包括第一活动记录和第二活动记录;其中,第一活动记录包括第一用户界面的界面数据和第一用户界面的用户数据,第二活动记录包括第二用户界面的界面数据和第二用户界面的用户数据。
920.在一些示例性的实施例中,第一活动记录和第二活动记录相邻存储于该任务栈中,第一活动记录早于第二活动记录被第一终端设备读取出来,在第一终端设备显示第一用户界面之前,该实施例还可以包括步骤:第一终端基于第一用户界面的界面数据生成第一用户界面,并基于第一用户界面的用户数据保存第一用户界面的状态;在第一终端设备显示第二用户界面之前,该实施例还可以包括步骤:第一终端基于第二用户界面的界面数据生成第二用户界面,并基于第二用户界面的用户数据保存第二用户界面的状态。
921.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端利用多线程并行接收的方式接收第二终端发送的多个分段数据,该多个分段数据为第一应用程序的应用数据流经过分割后得到的;第一终端接收第二终端发送的索引表,该索引表用于指示该多个
分段数据在第二终端的分布式文件系统中的存储路径以及前后顺序关系;第一终端根据接收到的多个分段数据和该索引表,恢复第一应用程序的应用数据流;第一终端在检测到第三操作之后,根据第三操作以及第一应用程序的应用数据流,运行第一应用程序。在该实现方式中,从而可以支持200kb以上的近任务信息或者应用数据流的迁移,提高了数据迁移的效率,提高用户体验。
922.可在一些示例性的实施例中,该多个分段数据中每个分段数据的数据量是固定的,和/或,该索引表包括:该多个分段数据中每个分段数据对应的消息头信息;其中,每个分段数据对应的消息头信息包括:每个分段数据的段号与分段数据路径之间的对应关系、每个分段数据的长度信息、开始标识信息以及结束标识信息。
923.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端接收用户的第五操作,第五操作用于触发向第二终端发送第一任务指令,第一任务指令用于指示第二终端清理第一应用程序;第一终端向第二终端发送第一信息,第一信息包括:第一任务指令的信息;第一终端根据第一任务指令,尝试持有第二本地锁,第二本地锁用于保证第二终端上的第一应用程序在同一时间只执行来自于一个设备的任务指令,第二本地锁在同一时间只能被一个设备持有。在该实现方式中,可以避免跨设备的多个任务之间的冲突,解决了跨设备任务场景出现不稳定的问题,提高用户体验。
924.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端根据第一任务指令,尝试持有第一终端的第一本地锁,第一本地锁用于保证第一终端在同一时间内只能向一个设备发送一个任务指令,第一本地锁在同一时间只能被一个设备持有,其中,第一终端成功持有第一本地锁。在该实现方式中,由于第一终端成功持有该任务指令对应的第一本地锁,证明第一终端当前并没有向第二终端发送其他的跨设备任务指令,即该任务指令可以占有第一本地锁,保证了第一终端向第二终端发送出去的任务指令不会产生冲突,从而提高任务指令发送的效率和成功率。
925.在一些示例性的实施例中,该至少一个任务卡片中还包括第二终端桌面第一屏快照对应的第三任务卡片,在第三任务卡片上存在界面能力fa卡片、悬浮窗、悬浮球中的至少一种,该方法还包括:在第一终端的最近任务界面中显示该至少一个任务卡片时,第一终端按照第二终端横屏使用时、竖屏使用时、折叠屏的展开态竖屏使用时、折叠屏的展开态横屏使用时、折叠屏的折叠态横屏使用时、折叠屏的折叠态竖屏使用时的任意一种,在第一终端的最近任务界面中单排显示或者多排显示该至少一个任务卡片。在该实现方式中,利用用户对第二终端的使用状态、用户对第一终端的使用状态、以及第一终端的屏幕大小第一终端的最近任务界面中单排显示或者多排显示第二终端的任务卡片,可以提高第二终端的任务卡片显示的效率,方便用户在一个设备上查看和管理其他设备的历史任务,提高用户体验。
926.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端利用第一终端的硬件能力运行第一应用程序;或者,第一终端利用第二终端的硬件能力运行第一应用程序;或者,第一终端利用第一终端和第二终端的硬件能力运行第一应用程序。
927.在一些示例性的实施例中,图33所示的为本技术提供一个示例性的实施例的示意性流程图,如图33所示的,该流程包括如下步骤:
928.s3301:第一终端接收来自用户的第六操作。
929.s3302:第一终端根据第六操作显示第三用户界面,第三用户界面包括控件,该控件包括第二终端的标识。
930.s3303:第一终端响应于用户对于第二终端的标识的第七操作,显示第四用户界面,第四用户界面包括第二终端桌面上应用程序的标识。
931.例如:该控件包括还可以包括第一终端的标识,第三用户界面还可以包括:第二终端桌面上应用程序的标识和第一终端桌面上应用程序的标识。在本技术实施例中,终端设备桌面上应用程序的标识也可以称为终端设备的桌面应用标识。
932.s3304:第一终端响应于用户对第二终端桌面上应用程序的标识中第一应用标识的第八操作,运行并显示第一应用程序标识对应的第一应用程序。
933.在该实现方式中,可以在第一终端实现超级桌面的功能,便于用户在第一终端上对其他终端的桌面应用进行操作,对用户友好,提高用户体验。
934.在一些示例性的实施例中,在s3301之前,该实施例还可以包括步骤:第一终端接收第二终端发送的第二终端的桌面应用标识的信息。
935.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端接收用户对第二终端的桌面应用程序标识的第九操作,第九操作包括:对桌面应用的排序、创建文件夹、删除桌面应用中的至少一种;第一终端显示第九操作后的第二终端的桌面应用程序标识。在该实现方式中,可以使得用户在第一终端上管理第二终端的桌面应用,方便用户操作,对用户友好,提高用户体验。
936.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端利用悬浮窗、分屏或者全屏的方式显示第二应用程序。在该实现方式中,提高了第一终端显示第二应用程序的灵活性,提高用户体验。
937.在一些示例性的实施例中,该实施例还可以包括步骤:第一终端按照第二终端的桌面应用布局形式,显示第二终端的桌面应用标识;或者,第一终端按照第一终端的桌面应用布局形式,显示第二终端的桌面应用标识。
938.应理解,上述只是为了帮助本领域技术人员更好地理解本技术实施例,而非要限制本技术实施例的范围。本领域技术人员根据所给出的上述示例,显然可以进行各种等价的修改或变化,例如,上述流程(方法实施例)中某些步骤可以不必须的,或者可以新加入某些步骤等。或者上述任意两种或者任意多种实施例的组合。这样的修改、变化或者组合后的方案也落入本技术实施例的范围内。
939.还应理解,本技术实施例中的方式、情况、类别以及实施例的划分仅是为了描述的方便,不应构成特别的限定,各种方式、类别、情况以及实施例中的特征在不矛盾的情况下可以相结合。
940.还应理解,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
941.还应理解,上文对本技术实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
942.本实施例可以根据上述方法实施例,对各个设备(包括上述的各个终端设备)进行
功能模块的划分。例如,可以对应各个功能,划分为各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
943.需要说明的是,上述方法实施例涉及的各步骤的相关内容,均可以援引到对应功能模块的功能描述,此处不再赘述。
944.本技术实施例提供的终端设备,用于执行上述任一实施例提供的流程,因此可以达到与上述实现方法相同的效果。在采用集成的单元的情况下,终端设备可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对终端设备的动作进行控制管理。例如,可以用于支持终端设备执行处理单元执行的步骤。存储模块可以用于支持存储程序代码和数据等。通信模块,可以用于支持终端设备与其他设备的通信。
945.其中,处理模块可以是处理器或控制器。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,dsp)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、wi-fi芯片等与其他终端设备交互的设备。
946.图34是本技术实施例的终端设备的一种软件结构框图。
947.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为五层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime,art)和原生c/c++库,硬件抽象层(hardware abstract layer,hal)以及内核层。
948.应用程序层可以包括一系列应用程序包。
949.如图34所示,应用程序包可以包括图库,日历,通话,地图,导航,wlan,蓝牙,音乐,短信等应用程序。另外,应用程序层还包括的全局任务中心。
950.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
951.如图34所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。
952.窗口管理器提供窗口管理服务(window manager service,wms),wms可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。
953.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
954.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
955.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
956.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消
息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
957.活动管理器可以提供活动管理服务(activity manager service,ams),ams可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。
958.输入管理器可以提供输入管理服务(input manager service,ims),ims可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。ims从输入设备节点取出事件,通过和wms的交互,将事件分配至合适的窗口。
959.运行时模块是一种面向对象的编程语言(面向对象编程)的运行环境。任何语言编写的代码要运行在硬件上都需要相应的运行时模块。或者说,一个程序要在一个硬件或者平台上运行,就必须要有一个中间层来把程序语言转换为或者说解释为机器能识别的机器语言,该中间层可以理解为运行时模块。
960.运行时模块中通常会包含相应的引擎来作为解释器,该引擎为运行时模块提供操作系统的网络、进程、文件系统等平台能力。
961.本实施例中的运行时模块可以包括核心库、fa运行时模块、安卓运行时模块。
962.fa运行时模块可以将源代码转换为用户界面。例如,本实施例中的fa运行时模块可以包含javascript(js)引擎,该js引擎可以运行用javascript语言编写的程序文件。本实施例中的js assets文件的一种示例为用javascript语言编写的程序文件。
963.安卓运行时负责将源代码转换为机器码。安卓运行时主要包括采用提前(ahead or time,aot)编译技术和及时(just in time,jit)编译技术。
964.核心库主要用于提供基本的java类库的功能,例如基础数据结构、数学、io、工具、数据库、网络等库。核心库为用户进行安卓应用开发提供了api。
965.原生c/c++库可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(media framework),libc,opengl es、sqlite、webkit等。
966.其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。opengl es提供应用程序中2d图形和3d图形的绘制和操作。sqlite为终端的应用程序提供轻量级关系型数据库。
967.硬件抽象层运行于用户空间(user space),对内核层驱动进行封装,向上层提供调用接口。
968.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,蓝牙驱动。
969.在图34所示软件结构中,还可以存在一个系统服务层(图中未示出)。系统服务层可以包括分布式调度子系统和本地任务管理模块。其中,该系统服务层在软件结构中的位置不限定,可以是在应用程序层和应用程序框架层之间,也可以是在应用程序框架层和原生c/c++库之间等。
970.图35本技术实施例的终端设备的另一种软件结构框图。如图35所示的,终端的软
件架构包括:内核及硬件平台层、系统服务层、应用程序框架层以及应用程序层,层与层之间通过软件接口通信。
971.如图35所示,内核及硬件平台层包括hal以及支持多形态设备的内核以及驱动。硬件抽象层运行于用户空间(user space),对内核层驱动进行封装,向上层提供调用接口。内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。例如,内核及硬件平台层可以包括内核抽象层(kernel abstract layer,kal)和驱动子系统。kal下包括多个内核,如linux系统的内核linux kernel、轻量级物联网系统内核liteos等。驱动子系统则可以包括硬件驱动框架(hardware driver foundation,hdf)。硬件驱动框架能够提供统一外设访问能力和驱动开发、管理框架。多内核的内核层可以根据系统的需求选择相应的内核进行处理。
972.系统服务层是系统的核心能力集合,系统服务层通过框架层对应用程序提供服务。如图35所示的,系统服务层包括分布式调度子系统、本地任务管理模块以及其他子系统等。可选的,分布式调度子系统用于获取本终端设备最近使用的应用程序的信息以及与其他终端设备交换最近任务信息。本地任务管理模块用于维护终端设备的最近任务信息(最近使用的应用程序的信息)。其他子系统包括:通信子系统、分布式数据管理、分布式profile等。
973.应用程序框架层为系统应用开发提供了java、c、c++、js等多语言的用户程序框架和能力(ability)框架,用户界面(user interface,ui)框架(包括适用于java语言的java ui框架、适用于js语言的js ui框架),以及各种软硬件服务对外开放的多语言框架应用程序接口(application programming interface,api)。根据系统的组件化裁剪程度,操作系统设备支持的api也会有所不同。
974.应用程序层包括各种应用程序,例如,可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。另外,应用程序层还包括全局任务中心以及数据任务管理工具(dtaskmanagerkit)。全局任务中心运行用于管理以及显示组网内终端设备的最近使用的应用程序。应用程序层中的应用包括系统应用和第三方非系统应用。系统应用可包括桌面、控制栏、设置、电话等终端设备默认安装的应用程序。扩展应用可以是由终端设备的制造商开发设计的、非必要的应用,如终端设备管家、换机迁移、便签、天气等应用程序。而第三方非系统应用则可以是由其他厂商开发,但是可以在系统中运行应用程序,如游戏、导航、社交或购物等应用程序。
975.应该理解,图34和图35仅仅是示例性的,不应该对本技术中终端设备的软件架构产生任何的限制。例如,在本技术另一些实施例中,终端设备的系统架构也可以采用与图34和图35所示的例子中不同的分层结构,或者每层还可以包括更多或者更少的模块、或者多种不同模块方式的组合等。本技术实施例在此不作限制。终端设备还可以同时包括图34中所示的全部或部分模块以及图35中所示的全部或者部分模块,本技术也不对此进行限定。
976.图36所示的本技术提供的一例终端设备3600结构的示意图,该终端设备可以为上述的各个实施例中的任一终端(例如为手机、大屏设备、平板电脑、pc、折叠屏手机、车机、轻设备等),如图36所示的,终端3600可以包括处理器3610,外部存储器接口3620,内部存储器3621,通用串行总线(universal serial bus,usb)接口3630,天线1,天线2,移动通信模块3650,无线通信模块3660,音频模块3670,扬声器3670a,受话器3670b,麦克风3670c,耳机接
口3670d,传感器模块3680等。该终端设备用于执行上述任务示例任意一个终端执行的步骤或者显示的任意一种界面。
977.可以理解的是,本技术实施例示意的结构并不构成对终端设备3600的具体限定。在本技术另一些实施例中,终端设备3600可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
978.处理器3610可以包括一个或多个处理单元,例如:处理器3610可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
979.处理器3610中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器3610中的存储器为高速缓冲存储器。该存储器可以保存处理器3610刚用过或循环使用的指令或数据。如果处理器3610需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器3610的等待时间,因而提高了系统的效率。
980.终端设备3600的无线通信功能可以通过天线1,天线2,移动通信模块3650,无线通信模块3660,调制解调处理器以及基带处理器等实现。
981.天线1和天线2用于发射和接收电磁波信号。终端设备3600中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
982.移动通信模块3650可以提供应用在终端设备3600上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块3650可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块3650可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块3650还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块3650的至少部分功能模块可以被设置于处理器3610中。在一些实施例中,移动通信模块3650的至少部分功能模块可以与处理器3610的至少部分模块被设置在同一个器件中。
983.无线通信模块3660可以提供应用在终端设备3600上的包括无线局域网(wireless local area networks,wlan),如无线保真(wireless fidelity,wi-fi)网络,蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块3660可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块3660经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器3610。无线通信模块3660还可以从处理器3610接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
984.在一些实施例中,终端设备3600的天线1和移动通信模块3650耦合,天线2和无线通信模块3660耦合,使得终端设备3600可以通过无线通信技术与网络以及其他设备通信。
所述无线通信技术可以包括全球移动通信系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),lte,bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
985.终端设备3600通过gpu,显示屏3694,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏3694和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器3610可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
986.显示屏3694用于显示图像,视频等。显示屏3694包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,终端设备3600可以包括1个或n个显示屏3694,n为大于1的正整数。
987.终端设备3600可以通过isp,摄像头3693,视频编解码器,gpu,显示屏3694以及应用处理器等实现拍摄功能。
988.isp用于处理摄像头3693反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头3693中。
989.摄像头3693用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,终端设备3600可以包括1个或n个摄像头3693,n为大于1的正整数。
990.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端设备3600在做频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
991.视频编解码器用于对数字视频压缩或解压缩。终端设备3600可以支持一种或多种视频编解码器。这样,终端设备3600可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
992.外部存储器接口3620可以用于连接外部存储卡,例如micro sd卡,实现扩展终端设备3600的存储能力。外部存储卡通过外部存储器接口3620与处理器3610通信,实现数据
存储功能。例如将音乐,视频等文件保存在外部存储卡中。
993.内部存储器3621可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器3610通过运行存储在内部存储器3621的指令,从而执行终端设备3600的各种功能应用以及数据处理。内部存储器3621可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备3600使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器3621可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
994.终端设备3600可以通过音频模块3670,扬声器3670a,受话器3670b,麦克风3670c,耳机接口3670d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
995.音频模块3670用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块3670还可以用于对音频信号编码和解码。在一些实施例中,音频模块3670可以设置于处理器3610中,或将音频模块3670的部分功能模块设置于处理器3610中。
996.扬声器3670a,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备3600可以通过扬声器3670a收听音乐,或收听免提通话。
997.受话器3670b,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备3600接听电话或语音信息时,可以通过将受话器3670b靠近人耳接听语音。
998.麦克风3670c,也称“话筒”、“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风3670c发声,将声音信号输入到麦克风3670c。终端设备3600可以设置至少一个麦克风3670c。在另一些实施例中,终端设备3600可以设置两个麦克风3670c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端设备3600还可以设置三个,四个或更多麦克风3670c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
999.耳机接口3670d用于连接有线耳机。耳机接口3670d可以是usb接口3630,也可以是3.5mm的开放移动终端设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
1000.传感器模块3680中可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
1001.当然,终端设备3600还可以包括充电管理模块、电源管理模块、电池、按键、指示器以及1个或多个sim卡接口等,本技术实施例对此不做任何限制。
1002.本技术实施例还提供一种芯片系统,如图37所示,该芯片系统包括至少一个处理器3701和至少一个接口电路3702。处理器3701和接口电路3702可通过线路互联。例如,接口电路3702可用于从其它装置(例如上述任一终端设备的存储器)接收信号。又例如,接口电路3702可用于向其它装置(例如处理器3701)发送信号。示例性的,接口电路3702可读取存储器中存储的指令,并将该指令发送给处理器3701。当所述指令被处理器3701执行时,可使
得终端设备执行上述实施例中的任一终端设备(比如,手机、大屏设备、平板电脑、车机、pc等)执行的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
1003.本技术实施例还提供一种装置,该装置包含在终端设备中,该装置具有实现上述任一实施例中终端设备行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括至少一个与上述功能相对应的模块或单元。
1004.本技术实施例还提供一种计算机存储介质,包括计算机指令,当计算机指令在终端设备上运行时,使得终端设备执行上述任一实施例中终端设备执行的步骤。
1005.本技术实施例还提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述任一实施例中终端设备执行的步骤。
1006.本技术实施例还提供一种终端设备上的图形用户界面,所述终端设备具有显示屏、摄像头、存储器、以及一个或多个处理器,所述一个或多个处理器用于执行存储在所述存储器中的一个或多个计算机程序,所述图形用户界面包括所述终端设备执行如上述任一实施例中终端设备执行的步骤时显示的图形用户界面。
1007.本技术实施例还提供了一种任务迁移的系统,该系统包括:上述实施例中提供的第一终端和第二终端。可选的,该系统还可以包括第三终端、第四终端等。
1008.可以理解的是,上述终端设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
1009.本技术实施例可以根据上述方法示例对上述终端设备等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
1010.通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
1011.在本技术实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
1012.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台
计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
1013.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1