CN106940616A - 应用运行方法及装置 - Google Patents
应用运行方法及装置 Download PDFInfo
- Publication number
- CN106940616A CN106940616A CN201710128445.1A CN201710128445A CN106940616A CN 106940616 A CN106940616 A CN 106940616A CN 201710128445 A CN201710128445 A CN 201710128445A CN 106940616 A CN106940616 A CN 106940616A
- Authority
- CN
- China
- Prior art keywords
- window
- display
- intended application
- display object
- system service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
一种应用运行方法,应用于电子设备中,该方法包括:当显示目标应用的第一窗口时,检测是否接收到多任务指令;若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。本发明还提供一种应用运行装置。本发明可以在一个应用内打开该应用的多个窗口,提高用户使用应用的效率。
Description
技术领域
本发明涉及电子技术领域,具体涉及一种应用运行方法及装置。
背景技术
随着移动互联网的发展,电子设备的上安装的应用越来越多。由于电子设备的屏幕、硬件资源等因素,现有应用通常只支持单任务操作,即应用在某时刻只能通过某一界面与用户交互。
例如,用户在某购物APP上购买山地车时,首先通过搜索界面找到山地车A,并进入山地车A的详细信息界面查看山地车A的参数信息。若客户需要浏览其他山地车,需要退出山地车A的详细信息界面,再在搜索或者是历史足迹页面找到山地车B,然后进入山地车B的详细信息界面查看山地车B的参数信息。在以上浏览山地车A与山地车B的过程中,需要打开山地车B的详细信息界面时必须要先退出山地车A的详细信息界面,无法同时打开山地车A的详细信息界面与山地车B的详细信息界面。
由于现有应用使用时,每当需要打开其他显示界面时都需要退出当前显示界面,使得用户需要打开不同显示界面时总是需要经过一系列操作才能打开,操作繁琐,使用十分不便。
发明内容
鉴于此,有必要提供一种应用运行方法及装置,可实现在一个应用内打开该应用的多个窗口,提高用户使用应用的效率。
本申请的第一方面提供一种应用运行方法,应用于电子设备中,所述方法包括:
当显示目标应用的第一窗口时,检测是否接收到多任务指令;
若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。
另一种可能的实现方式中,所述第一窗口包括的显示对象保存于第一容器中,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口包括:
通过系统服务在所述目标应用所属的进程内创建第二窗口;
将所述第一窗口包括的显示对象复制保存于第二容器;
在所述第二窗口中显示所述第二容器包括的显示对象。
另一种可能的实现方式中,所述系统服务包括活动管理服务ActivityManagerService,所述显示对象包括活动Activity,所述第一容器和所述第二容器包括Activity栈。
另一种可能的实现方式中,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口包括:
检测所述第一窗口内的预设可操作对象是否被触发;
若是,通过系统服务在所述目标应用所属的进程内创建第二窗口,获取所述预设可操作对象对应的显示对象,将所述显示对象显示于所述第二窗口中。
另一种可能的实现方式中,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口包括:
获取所述第一窗口包括的显示对象;
将所述第一窗口包括的显示对象显示于通过系统服务在所述目标应用所属的进程内创建的第二窗口中;
清除所述第一窗口包括的显示对象;
将所述多任务指令对应的显示对象显示于所述第一窗口中。
另一种可能的实现方式中,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口之后还包括:
将所述第一窗口和所述第二窗口置于所述电子设备的显示界面中运行;或者
将所述第一窗口或所述第二窗口置于后台运行。
本申请的第二方面提供一种应用运行装置,所述装置包括:
检测模块,用于当显示目标应用的第一窗口时,检测是否接收到多任务指令;
启动模块,用于若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。
另一种可能的实现方式中,所述第一窗口包括的显示对象保存于第一容器中,所述启动模块包括:
创建单元,用于通过系统服务在所述目标应用所属的进程内创建第二窗口;
复制单元,用于将所述第一窗口包括的显示对象复制保存于第二容器;
第一显示单元,用于在所述第二窗口中显示所述第二容器包括的显示对象。
另一种可能的实现方式中,所述启动模块包括:
检测单元,用于检测所述第一窗口中的预设可操作对象是否被触发;
第二显示单元,用于若所述第一窗口内的预设可操作对象被触发,通过系统服务在所述目标应用所属的进程内创建第二窗口,获取所述预设可操作对象对应的显示对象,将所述显示对象显示于所述第二窗口中。
另一种可能的实现方式中,所述装置还包括:
获取单元,用于获取所述第一窗口包括的显示对象;
第三显示单元,用于将所述第一窗口包括的显示对象显示于通过系统服务在所述目标应用所属的进程内创建的第二窗口中;
清除单元,用于清除所述第一窗口包括的显示对象;
第四显示单元,用于将所述多任务指令对应的显示对象显示于所述第一窗口中。
本发明当显示目标应用的第一窗口时,检测是否接收到多任务指令;若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。本发明可以使用户方便的操作多个显示窗口,提高用户使用应用的效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用运行方法的流程图;
图2是本发明实施例中电子设备的显示界面上显示目标应用的的示例图;
图3是本发明实施例中接收到多任务指令后,在电子设备的显示屏上显示了与第一窗口相同显示内容的第二窗口的示例图;
图4是本发明实施例中接收到多任务指令后,在电子设备的显示屏上显示了与第一窗口不同显示内容的第二窗口的示例图;
图5是本发明实施例中在显示屏上分屏显示目标应用的两个窗口的示例图;
图6是本发明实施例中Activity栈中存放着Activity的结构示例图;
图7是本发明提供的应用运行装置的结构图;
图8本发明实现应用运行方法的较佳实施例的电子设备的结构示意图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
实施例
图1为本发明实施例提供的应用运行方法的示意流程图。所述应用运行方法应用于电子设备中,所述电子设备可以为手机、平板、台式电脑等可以运行应用软件的终端。如图1所示,应用运行方法可包括以下步骤:
S101:当显示目标应用的第一窗口时,检测是否接收到多任务指令。
上述目标应用可以为电子设备上安装的任意应用。当安装在电子设备上的应用运行后,会在显示屏上显示,当应用已运行但不在显示屏上显示时,通常称为在后台运行。
目标应用运行时显示的一个界面可以称为一个窗口。上述第一窗口可以为目标应用运行时显示的任意一个窗口。当电子设备的显示屏显示目标应用的第一窗口时,即目标应用在前台运行,且目标应用可以直接从电子设备的显示屏中看到并进行操作。
当显示目标应用的第一窗口时,检测是否接收到多任务指令。上述多任务指令是用于开启另一个窗口的指令。触发多任务指令的方法有很多,例如通过触控电子设备上的物理按键触发多任务指令;或者是在电子设备的操作系统桌面上设置悬浮按钮,按压悬浮按钮可触发多任务指令;还可以是通过作用在电子设备的显示屏上触控操作触发多任务指令。
S102:若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。
上述系统服务是执行指定功能的程序。在电子设备上系统服务通常有多种,在本实施例中具体是通过用于控制进程创建窗口的系统服务来进行窗口的启动。
上述目标应用的第二窗口是目标应用的另一窗口,则第一窗口与第二窗口属于同一应用运行时的显示界面。其中,第二窗口与第一窗口显示的内容可以相同也可以不同。
请参见图2,图2为电子设备的显示界面上显示目标应用的示例图。在图2中,显示界面上显示的是记事本应用,同时,电子设备的显示界面中还显示了悬浮按钮,当用户点击悬浮按钮点击后,触发多任务指令。同时,若通过悬浮按钮触发多任务指令,悬浮按钮为全局按钮,悬浮按钮可以出现在显示屏的任意位置。
请参见图3,图3为接收到多任务指令后,在电子设备的显示屏上显示了与第一窗口相同显示内容的第二窗口的示例图。
请参见图4,图4为接收到多任务指令后,在电子设备的显示屏上显示了与第一窗口不同显示内容的第二窗口的示例图。
上述目标应用所属的进程是运行所述目标应用的进程,即目标应用的第二窗口与目标应用的第一窗口在同一进程中。
由于第一窗口与第二窗口在同一个进程中,因此,第一窗口中的数据与第二窗口中的数据可以共享。例如,第一窗口显示的是某一购物应用在登陆并将待购买物品添加至购物车后的显示界面,开启第二窗口后,第二窗口可以同样显示将待购买物品添加至购物车后的显示界面,或者第二窗口显示的是购物应用的商品查找页面。由于第一窗口和第二窗口共享数据,则若用户要在第二窗口中进行操作无需再登陆,并且第一窗口中已添加到购物车的商品,在第二窗口中也已经添加至购物车,第二窗口中的显示界面与第一窗口显示界面中的数据源相同。
在启动目标应用的第二窗口后,保持第一窗口为运行状态。保持窗口为运行状态具体是保持第一窗口不会退出,若目标应用为即时通讯类应用,第一窗口为运行状态时也能接收消息。在具体实现时,可以保持第一窗口为resume状态,或者是pause状态。
同时,在开启第二窗口后,第二窗口与第一窗口可以通过以下方法运行:
将所述第一窗口和所述第二窗口置于所述电子设备的显示界面中运行;或者将所述第一窗口或所述第二窗口置于后台运行。
上述将第一窗口和第二窗口置于电子设备的显示界面中运行可以是将第一窗口与第二窗口同时在电子设备的显示界面中显示运行,第一窗口与第二窗口可以上下分屏运行,也可以左右分屏运行等。具体的第一窗口与第二窗口的排列形式有很多,不做具体限制。
也可以将第一窗口或第二窗口之中任意一个置于后台运行,另一个在前台运行。此时,处于后台运行的窗口也仍为运行状态。可以通过切换指令,将处于后台运行的窗口直接调到前台运行;或者是与前台运行的窗口切换,若切换,则后台运行的窗口变更为前台运行,前台运行的窗口变更为后台运行。
以安卓操作系统为例,若将第一窗口或第二窗口置于后台运行,可以通过调用moveTaskToback函数实现将第一窗口与第二窗口同时置于前台运行或者是第一窗口或第二窗口置于后台运行。
例如,在图3和图4中,两个窗口均在前台运行,可以通过显示屏直接看到两个窗口中的显示内容。
当在电子设备的显示屏上显示第一窗口和第二窗口时,可以分别对上下两个窗口进行操作。
请参见图5,图5为在显示屏上显示目标应用的两个窗口的示例图。在图5中,用户可以同时在两个窗口中与不同用户聊天,而不需要用户在与一个用户聊天时退回到应用的主界面,再选择另一用户聊天,极大的提高了用户的操作效率和使用便捷性。同样的,若是在购物类的应用中,用户可以在两个窗口中分别浏览不同的产品并进行比较,而无需每次进入到不同的商品页面将商品页面来回切换对比,极大的提高了用户的操作效率和使用便捷性。
在其他实施例中,所述第一窗口包括的显示对象保存于第一容器中,所述通过系统服务在目标应用所属的进程内启动所述目标应用的第二窗口包括:
通过系统服务在所述目标应用所属的进程内创建第二窗口;将所述第一窗口包括的显示对象复制保存于第二容器;在所述第二窗口中显示所述第二容器包括的显示对象。
上述第一窗口包括的显示对象即显示界面中包括的所有显示对象,具体在安卓中,一个显示界面中包括的所有显示对象可以是一个活动Activity,即一个Activity可以代表一个显示界面中包含的所有显示内容。
上述第一容器是用来存储和组织其他对象的对象。具体的,上述第一容器可以是Activity栈,栈是一种数据结构,Activity栈中以一定顺序存放着Activity,窗口中显示的显示内容始终是处于栈顶的Activity。请参见图6,图6为Activity栈中存放着Activity的示例图。
上述系统服务具体可以是活动管理服务ActivityManagerService,也可称为AMS服务,AMS服务可以用于管理Activity的启动、切换、调度等。
在通过系统服务创建第二窗口后,将第一窗口包括的显示对象复制保存于第二容器,第二容器可以新创建的一个存储单元用于存储第一窗口包括的显示对象。具体的,上述第二容器可以是Activity栈。则将第一窗口包括的显示对象复制保存于第二容器,即是将第一窗口对应的Activity栈中的Activity复制到另一个栈中。由于第二容器包括的显示对象是复制了第一窗口包括的显示对象,则此时第二窗口中显示的内容与第一窗口中显示的内容一致。
请继续参见图6,在图6中,第一窗口为Activity栈1,Activity栈1中栈顶的Activity为Activity a,第二窗口为Activity栈2,复制Activity之后,Activity栈2的栈顶也是Activity a。由于栈顶的Activity是当前显示的内容,因此复制后第一窗口与第二窗口要显示的内容一样。
在其他实施例中,通过系统服务在目标应用所属的进程内启动所述目标应用的第二窗口包括:
检测所述第一窗口内的预设可操作对象是否被触发;若是,通过系统服务在所述目标应用所属的进程内创建第二窗口,获取所述预设可操作对象对应的显示对象,将所述显示对象显示于所述第二窗口中。
上述预设可操作对象是第一窗口内可以被触发的对象,例如登陆按钮。当预设可操作对象被触发后,当前页面会跳转至另一显示界面。上述可操作对象对应的显示对象即是触发可操作对象后要显示的界面的内容。
在接收到多任务指令后,若第一窗口内的预设可操作对象被触发,通过系统服务在目标应用所属的进程内创建第二窗口,再获取可操作对象被触发后要显示的界面内容,显示于新创建的第二窗口中。
请继续参见图4,在图4中,第一窗口的“新建”按钮若被触发后,则显示第二窗口,第二窗口是新建记事本的具体显示界面。
在具体实现时,也可以将第一窗口对应的显示对象保存于Activity栈中,当新创建窗口时添加newtask标志,则新创建的第二窗口会单独创建一个Activity栈用于保存第二窗口中的内容。要打开的显示页面对应的Activity添加至新创建的Activity栈的栈顶中,第二窗口中显示的内容是Activity栈的栈顶的Activity,即显示的是预设可操作对象对应的显示页面。
在其他实施例中,通过系统服务在目标应用所属的进程内启动所述目标应用的第二窗口包括:
获取所述第一窗口包括的显示对象;将所述第一窗口包括的显示对象显示于通过系统服务在所述目标应用所属的进程内创建的第二窗口中;清除所述第一窗口包括的显示对象;将所述多任务指令对应的显示对象显示于所述第一窗口中。
在创建窗口时,对于有些应用,有时需要预先查找并获取到第一窗口中的显示对象,此时可以通过预设程序段进行查找。预设程序段可以通过代码注入的方式注入到管理应用运行的进程中,例如zygote进程。当应用刚启动或者是完全启动运行时,通过预设程序段查找该应用的窗口中的显示内容的保存位置。具体查找时,可以通过扫描应用的源代码,通过关键字在代码中进行查找,以获取应用运行时显示的显示对象。
在第二窗口中可以显示目标应用的任意一显示界面,例如,根据多任务指令可以显示预设的界面。
将第一窗口包括的显示对象显示于通过系统服务在目标应用所属的进程内创建的第二窗口中,是指将第一窗口中包括的显示对象显示于第二窗口中,此时通过系统服务创建第二窗口,再将第一窗口内的内容预先保存于第二窗口中。同时,若要保持第一窗口不退出,可以屏蔽退出顶层窗口的操作。顶层窗口是指处于最上层的窗口,当开启另一窗口前,处于最上层的窗口就是第一窗口,一般开启另一窗口会退出当前的顶层窗口,此时若接收到退出窗口的指令后,不执行该操作从而实现第一窗口不被退出的目的。
当开启第二窗口时保持第一窗口不退出,即将第一窗口和第二窗口在显示屏上同时显示时,若目标应用为即时通讯类应用,由于即时通讯类应用会接收到对话消息(例如接收到通讯录中其他人的对话消息),由于在一个时刻只有一个窗口是处于焦点状态(在一个时刻用户只操作一个窗口,用户操作的窗口是处于焦点状态的窗口),因此第一窗口或第二窗口中会弹出通知消息或者是在通知栏显示大量通知消息用于提示用户接收到了对话消息,此时,将第一窗口和第二窗口的通知消息进行屏蔽。
具体的实现方式是通过:在显示通知消息之前,检测第一窗口与第二窗口的状态,若为resume状态,则将通知消息进行屏蔽。将通知消息进行屏蔽,可以不影响用户的正常操作,保持显示界面的简洁,提高用户体验。例如,当电子设备的显示屏上分屏显示即时通讯类的第一窗口和第二窗口,第一窗口用户与A聊天,第二窗口用户与B聊天,若接收到了A的对话消息可以将对话消息显示以数字标识接收到了消息而不再弹出通知消息或者是不再在通知栏显示通知消息。从而不影响用户操作,提高用户的使用效率和用户体验。
本发明实施例当显示目标应用的第一窗口时,检测是否接收到多任务指令;若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。可以使用户方便的操作多个显示窗口,提高用户使用应用的效率。
以上是对本发明所提供的方法进行的详细描述。根据不同的需求,所示流程中方块的执行顺序可以改变,某些方块可以省略,应用运行的方法也在上述应用运行方法中选择性的组合使用,或者与其他上述未提及的应用运行方法组合使用。下面对本发明所提供的装置进行描述。
实施例
图7为本发明实施例提供的应用运行装置的结构图,所述应用运行装置应用于电子设备中,所述电子设备可以为手机、平板、台式电脑等可以运行应用软件的终端。如图7所示,应用运行装置可以包括:检测模块710和启动模块720。
检测模块710,用于当显示目标应用的第一窗口时,检测是否接收到多任务指令。
上述目标应用可以为电子设备上安装的任意应用。当安装在电子设备上的应用运行后,会在显示屏上显示,当应用已运行但不在显示屏上显示时,通常称为在后台运行。
目标应用运行时显示的一个界面可以称为一个窗口。上述第一窗口可以为目标应用运行时显示的任意一个窗口。当电子设备的显示屏显示目标应用的第一窗口时,即目标应用在前台运行,且目标应用可以直接从电子设备的显示屏中看到并进行操作。
当显示目标应用的第一窗口时,检测模块710检测是否接收到多任务指令。上述多任务指令是用于开启另一个窗口的指令。触发多任务指令的方法有很多,例如通过触控电子设备上的物理按键触发多任务指令;或者是在电子设备的操作系统桌面上设置悬浮按钮,按压悬浮按钮可触发多任务指令;还可以是通过作用在电子设备的显示屏上触控操作触发多任务指令。
启动模块720,用于若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。
上述系统服务是执行指定功能的程序。在电子设备上系统服务通常有多种,在本实施例中具体是通过用于控制进程创建窗口的系统服务来进行窗口的启动。
上述目标应用的第二窗口是目标应用的另一窗口,则第一窗口与第二窗口属于同一应用运行时的显示界面。其中,第二窗口与第一窗口显示的内容可以相同也可以不同。
请参见图2,图2为电子设备的显示界面上显示目标应用的示例图。在图2中,显示界面上显示的是记事本应用,同时,电子设备的显示界面中还显示了悬浮按钮,当用户点击悬浮按钮点击后,触发多任务指令。同时,若通过悬浮按钮触发多任务指令,悬浮按钮为全局按钮,悬浮按钮可以出现在显示屏的任意位置。
请参见图3,图3为接收到多任务指令后,在电子设备的显示屏上显示了与第一窗口相同显示内容的第二窗口的示例图。
请参见图4,图4为接收到多任务指令后,在电子设备的显示屏上显示了与第一窗口不同显示内容的第二窗口的示例图。
上述目标应用所属的进程是运行所述目标应用的进程,即目标应用的第二窗口与目标应用的第一窗口在同一进程中。
由于第一窗口与第二窗口在同一个进程中,因此,第一窗口中的数据与第二窗口中的数据可以共享。例如,第一窗口显示的是某一购物应用在登陆并将待购买物品添加至购物车后的显示界面,开启第二窗口后,第二窗口可以同样显示将待购买物品添加至购物车后的显示界面,或者第二窗口显示的是购物应用的商品查找页面。由于第一窗口和第二窗口共享数据,则若用户要在第二窗口中进行操作无需再登陆,并且第一窗口中已添加到购物车的商品,在第二窗口中也已经添加至购物车,第二窗口中的显示界面与第一窗口显示界面中的数据源相同。
在启动目标应用的第二窗口后,保持第一窗口为运行状态。保持窗口为运行状态具体是保持第一窗口不会退出,若目标应用为即时通讯类应用,第一窗口为运行状态时也能接收消息。在具体实现时,可以保持第一窗口为resume状态,或者是pause状态。
同时,启动模块720启动第二窗口后,第二窗口与第一窗口可以将所述第一窗口和所述第二窗口置于所述电子设备的显示界面中运行;或者将所述第一窗口或所述第二窗口置于后台运行。
上述将第一窗口和第二窗口置于电子设备的显示界面中运行可以是将第一窗口与第二窗口同时在电子设备的显示界面中显示运行,第一窗口与第二窗口可以上下分屏运行,也可以左右分屏运行等。具体的第一窗口与第二窗口的排列形式有很多,不做具体限制。
也可以将第一窗口或第二窗口之中任意一个置于后台运行,另一个在前台运行。此时,处于后台运行的窗口也仍为运行状态。可以通过切换指令,将处于后台运行的窗口直接调到前台运行;或者是与前台运行的窗口切换,若切换,则后台运行的窗口变更为前台运行,前台运行的窗口变更为后台运行。
以安卓操作系统为例,若将第一窗口或第二窗口置于后台运行,可以通过调用moveTaskToback函数实现将第一窗口与第二窗口同时置于前台运行或者是第一窗口或第二窗口置于后台运行。
例如,在图3和图4中,两个窗口均在前台运行,可以通过显示屏直接看到两个窗口中的显示内容。
当在电子设备的显示屏上显示第一窗口和第二窗口时,可以分别对上下两个窗口进行操作。
请参见图5,图5为在显示屏上显示目标应用的两个窗口的示例图。在图5中,用户可以同时在两个窗口中与不同用户聊天,而不需要用户在与一个用户聊天时退回到应用的主界面,再选择另一用户聊天,极大的提高了用户的操作效率和使用便捷性。同样的,若是在购物类的应用中,用户可以在两个窗口中分别浏览不同的产品并进行比较,而无需每次进入到不同的商品页面将商品页面来回切换对比,极大的提高了用户的操作效率和使用便捷性。
在其他实施例中,所述第一窗口包括的显示对象保存于第一容器中,所述启动模块720可通过创建单元、复制单元和第一显示单元在所述目标应用所属的进程内启动所述目标应用的第二窗口。
创建单元,用于通过系统服务在所述目标应用所属的进程内创建第二窗口。
复制单元,用于将所述第一窗口包括的显示对象复制保存于第二容器。
第一显示单元,用于在所述第二窗口中显示所述第二容器包括的显示对象。
上述第一窗口包括的显示对象即显示界面中包括的所有显示对象,具体在安卓中,一个显示界面中包括的所有显示对象可以是一个活动Activity,即一个Activity可以代表一个显示界面中包含的所有显示内容。
上述第一容器是用来存储和组织其他对象的对象。具体的,上述第一容器可以是Activity栈,栈是一种数据结构,Activity栈中以一定顺序存放着Activity,窗口中显示的显示内容始终是处于栈顶的Activity。请参见图6,图6为Activity栈中存放着Activity的示例图。
上述系统服务具体可以是活动管理服务ActivityManagerService,也可称为AMS服务,AMS服务可以用于管理Activity的启动、切换、调度等。
在通过系统服务创建第二窗口后,将第一窗口包括的显示对象复制保存于第二容器,第二容器可以新创建的一个存储单元用于存储第一窗口包括的显示对象。具体的,上述第二容器可以是Activity栈。则将第一窗口包括的显示对象复制保存于第二容器,即是将第一窗口对应的Activity栈中的Activity复制到另一个栈中。由于第二容器包括的显示对象是复制了第一窗口包括的显示对象,则此时第二窗口中显示的内容与第一窗口中显示的内容一致。
请继续参见图6,在图6中,第一窗口为Activity栈1,Activity栈1中栈顶的Activity为Activity a,第二窗口为Activity栈2,复制Activity之后,Activity栈2的栈顶也是Activity a。由于栈顶的Activity是当前显示的内容,因此复制后第一窗口与第二窗口要显示的内容一样。
在其他实施例中,所述启动模块720可通过检测单元和第二显示单元在所述目标应用所属的进程内启动所述目标应用的第二窗口。
检测单元,用于检测所述第一窗口中的预设可操作对象是否被触发。
第二显示单元,用于若所述第一窗口内的预设可操作对象被触发,通过系统服务在所述目标应用所属的进程内创建第二窗口,获取所述预设可操作对象对应的显示对象,将所述显示对象显示于所述第二窗口中。
上述预设可操作对象是第一窗口内可以被触发的对象,例如登陆按钮。当预设可操作对象被触发后,当前页面会跳转至另一显示界面。上述可操作对象对应的显示对象即是触发可操作对象后要显示的界面的内容。
在接收到多任务指令后,若第一窗口内的预设可操作对象被触发,通过系统服务在目标应用所属的进程内创建第二窗口,再获取可操作对象被触发后要显示的界面内容,显示于新创建的第二窗口中。
请继续参见图4,在图4中,第一窗口的“新建”按钮若被触发后,则显示第二窗口,第二窗口是新建记事本的具体显示界面。
在具体实现时,也可以将第一窗口对应的显示对象保存于Activity栈中,当新创建窗口时添加newtask标志,则新创建的第二窗口会单独创建一个Activity栈用于保存第二窗口中的内容。要打开的显示页面对应的Activity添加至新创建的Activity栈的栈顶中,第二窗口中显示的内容是Activity栈的栈顶的Activity,即显示的是预设可操作对象对应的显示页面。
在其他实施例中,所述启动模块720可通过获取单元、第三显示单元、清除单元和第四显示单元在所述目标应用所属的进程内启动所述目标应用的第二窗口。
获取单元,用于获取所述第一窗口包括的显示对象;
第三显示单元,用于将所述第一窗口包括的显示对象显示于通过系统服务在所述目标应用所属的进程内创建的第二窗口中;
清除单元,用于清除所述第一窗口包括的显示对象;
第四显示单元,用于将所述多任务指令对应的显示对象显示于所述第一窗口中。
在创建窗口时,对于有些应用,有时需要预先查找并获取到第一窗口中的显示对象,此时可以通过预设程序段进行查找。预设程序段可以通过代码注入的方式注入到管理应用运行的进程中,例如zygote进程。当应用刚启动或者是完全启动运行时,通过预设程序段查找该应用的窗口中的显示内容的保存位置。具体查找时,可以通过扫描应用的源代码,通过关键字在代码中进行查找,以获取应用运行时显示的显示对象。
在第二窗口中可以显示目标应用的任意一显示界面,例如,根据多任务指令可以显示预设的界面。
将第一窗口包括的显示对象显示于通过系统服务在目标应用所属的进程内创建的第二窗口中,是指将第一窗口中包括的显示对象显示于第二窗口中,此时通过系统服务创建第二窗口,再将第一窗口内的内容预先保存于第二窗口中。同时,若要保持第一窗口不退出,可以屏蔽退出顶层窗口的操作。顶层窗口是指处于最上层的窗口,当开启另一窗口前,处于最上层的窗口就是第一窗口,一般开启另一窗口会退出当前的顶层窗口,此时若接收到退出窗口的指令后,不执行该操作从而实现第一窗口不被退出的目的。
当开启第二窗口时保持第一窗口不退出,即将第一窗口和第二窗口在显示屏上同时显示时,若目标应用为即时通讯类应用,由于即时通讯类应用会接收到对话消息(例如接收到通讯录中其他人的对话消息),由于在一个时刻只有一个窗口是处于焦点状态(在一个时刻用户只操作一个窗口,用户操作的窗口是处于焦点状态的窗口),因此第一窗口或第二窗口中会弹出通知消息或者是在通知栏显示大量通知消息用于提示用户接收到了对话消息,此时,将第一窗口和第二窗口的通知消息进行屏蔽。
具体的实现方式是通过:在显示通知消息之前,检测第一窗口与第二窗口的状态,若为resume状态,则将通知消息进行屏蔽。将通知消息进行屏蔽,可以不影响用户的正常操作,保持显示界面的简洁,提高用户体验。例如,当电子设备的显示屏上分屏显示即时通讯类的第一窗口和第二窗口,第一窗口用户与A聊天,第二窗口用户与B聊天,若接收到了A的对话消息可以将对话消息显示以数字标识接收到了消息而不再弹出通知消息或者是不再在通知栏显示通知消息。从而不影响用户操作,提高用户的使用效率和用户体验。
本发明实施例当显示目标应用的第一窗口时,检测是否接收到多任务指令;若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。可以使用户方便的操作多个显示窗口,提高用户使用应用的效率。
实施例
请参照图8,图8是本发明实现应用运行方法的较佳实施例的电子设备的结构示意图。
所述电子设备80是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述电子设备80可以是,但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、智能式穿戴式设备等。
所述电子设备80所处的网络包括,但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
所述电子设备80包括至少一个发送装置81、至少一个存储设备82、至少一个处理设备83、至少一个接收装置84、至少一个显示设备85以及至少一个通信总线。其中,所述通信总线用于实现这些组件之间的连接通信。
其中,所述接收装置84和所述发送装置81可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他设备进行数据通信。
所述处理设备83可以包括一个或者多个微处理器、数字处理器。
所述存储设备82用于存储应用运行装置中各个程序段的程序代码。所述存储设备82可以为智能媒体卡(smart media card)、安全数字卡(secure digital card)、快闪存储器卡(flash card)等储存设备。
优选地,本发明的应用运行方法通过所述电子设备80中存储的应用运行装置来实现。
所述应用运行装置当显示目标应用的第一窗口时,检测是否接收到多任务指令;若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。可以使用户方便的操作多个显示窗口,提高用户使用应用的效率。
所述显示设备85可以是触摸屏等其他用于显示画面的设备。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装,也可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个装置也可以由同一个装置或系统通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种应用运行方法,应用于电子设备中,其特征在于,所述方法包括:
当显示目标应用的第一窗口时,检测是否接收到多任务指令;
若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。
2.如权利要求1所述的方法,其特征在于,所述第一窗口包括的显示对象保存于第一容器中,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口包括:
通过系统服务在所述目标应用所属的进程内创建第二窗口;
将所述第一窗口包括的显示对象复制保存于第二容器;
在所述第二窗口中显示所述第二容器包括的显示对象。
3.如权利要求2所述的方法,其特征在于,所述系统服务包括活动管理服务ActivityManagerService,所述显示对象包括活动Activity,所述第一容器和所述第二容器包括Activity栈。
4.如权利要求1所述的方法,其特征在于,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口包括:
检测所述第一窗口内的预设可操作对象是否被触发;
若是,通过系统服务在所述目标应用所属的进程内创建第二窗口,获取所述预设可操作对象对应的显示对象,将所述显示对象显示于所述第二窗口中。
5.如权利要求1所述的方法,其特征在于,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口包括:
获取所述第一窗口包括的显示对象;
将所述第一窗口包括的显示对象显示于通过系统服务在所述目标应用所属的进程内创建的第二窗口中;
清除所述第一窗口包括的显示对象;
将所述多任务指令对应的显示对象显示于所述第一窗口中。
6.如权利要求1至5任一项所述的方法,其特征在于,所述通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口之后还包括:
将所述第一窗口和所述第二窗口置于所述电子设备的显示界面中运行;或者
将所述第一窗口或所述第二窗口置于后台运行。
7.一种应用运行装置,其特征在于,所述装置包括:
检测模块,用于当显示目标应用的第一窗口时,检测是否接收到多任务指令;
启动模块,用于若接收到所述多任务指令,通过系统服务在所述目标应用所属的进程内启动所述目标应用的第二窗口,保持所述第一窗口为运行状态。
8.如权利要求7所述的装置,其特征在于,所述第一窗口包括的显示对象保存于第一容器中,所述启动模块包括:
创建单元,用于通过系统服务在所述目标应用所属的进程内创建第二窗口;
复制单元,用于将所述第一窗口包括的显示对象复制保存于第二容器;
第一显示单元,用于在所述第二窗口中显示所述第二容器包括的显示对象。
9.如权利要求7所述的装置,其特征在于,所述启动模块包括:
检测单元,用于检测所述第一窗口中的预设可操作对象是否被触发;
第二显示单元,用于若所述第一窗口内的预设可操作对象被触发,通过系统服务在所述目标应用所属的进程内创建第二窗口,获取所述预设可操作对象对应的显示对象,将所述显示对象显示于所述第二窗口中。
10.如权利要求7所述的装置,其特征在于,所述装置还包括:
获取单元,用于获取所述第一窗口包括的显示对象;
第三显示单元,用于将所述第一窗口包括的显示对象显示于通过系统服务在所述目标应用所属的进程内创建的第二窗口中;
清除单元,用于清除所述第一窗口包括的显示对象;
第四显示单元,用于将所述多任务指令对应的显示对象显示于所述第一窗口中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710128445.1A CN106940616B (zh) | 2017-03-06 | 2017-03-06 | 应用运行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710128445.1A CN106940616B (zh) | 2017-03-06 | 2017-03-06 | 应用运行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106940616A true CN106940616A (zh) | 2017-07-11 |
CN106940616B CN106940616B (zh) | 2020-08-11 |
Family
ID=59468725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710128445.1A Active CN106940616B (zh) | 2017-03-06 | 2017-03-06 | 应用运行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106940616B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062190A (zh) * | 2017-12-28 | 2018-05-22 | 维沃移动通信有限公司 | 一种应用运行状态控制方法及移动终端 |
CN108519850A (zh) * | 2018-04-09 | 2018-09-11 | 维沃移动通信有限公司 | 一种键盘界面显示方法和移动终端 |
CN108646961A (zh) * | 2018-05-04 | 2018-10-12 | 腾讯科技(深圳)有限公司 | 一种待办任务的管理方法、装置及存储介质 |
CN109085979A (zh) * | 2018-07-24 | 2018-12-25 | 合肥联宝信息技术有限公司 | 一种处理多显示区域信息的方法及装置 |
CN111666009A (zh) * | 2020-05-28 | 2020-09-15 | 维沃移动通信有限公司 | 一种界面显示方法及电子设备 |
CN112395029A (zh) * | 2019-08-16 | 2021-02-23 | 珠海市魅族科技有限公司 | 应用程序的界面显示方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199734A (zh) * | 2014-09-12 | 2014-12-10 | 上海斐讯数据通信技术有限公司 | 一种基于安卓智能终端的应用程序多开管理方法和系统 |
CN105335044A (zh) * | 2014-08-11 | 2016-02-17 | 中兴通讯股份有限公司 | 分屏模式下的窗口显示处理方法及电子设备 |
-
2017
- 2017-03-06 CN CN201710128445.1A patent/CN106940616B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335044A (zh) * | 2014-08-11 | 2016-02-17 | 中兴通讯股份有限公司 | 分屏模式下的窗口显示处理方法及电子设备 |
CN104199734A (zh) * | 2014-09-12 | 2014-12-10 | 上海斐讯数据通信技术有限公司 | 一种基于安卓智能终端的应用程序多开管理方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062190A (zh) * | 2017-12-28 | 2018-05-22 | 维沃移动通信有限公司 | 一种应用运行状态控制方法及移动终端 |
CN108062190B (zh) * | 2017-12-28 | 2020-06-09 | 维沃移动通信有限公司 | 一种应用运行状态控制方法及移动终端 |
CN108519850A (zh) * | 2018-04-09 | 2018-09-11 | 维沃移动通信有限公司 | 一种键盘界面显示方法和移动终端 |
CN108646961A (zh) * | 2018-05-04 | 2018-10-12 | 腾讯科技(深圳)有限公司 | 一种待办任务的管理方法、装置及存储介质 |
CN109085979A (zh) * | 2018-07-24 | 2018-12-25 | 合肥联宝信息技术有限公司 | 一种处理多显示区域信息的方法及装置 |
CN112395029A (zh) * | 2019-08-16 | 2021-02-23 | 珠海市魅族科技有限公司 | 应用程序的界面显示方法、装置、电子设备和存储介质 |
CN111666009A (zh) * | 2020-05-28 | 2020-09-15 | 维沃移动通信有限公司 | 一种界面显示方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106940616B (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106940616A (zh) | 应用运行方法及装置 | |
CN104238877B (zh) | 控制图标的方法和终端 | |
CN104898952B (zh) | 一种终端分屏实现方法及终端 | |
CN107786730A (zh) | 一种任务管理方法及终端 | |
CN103744671B (zh) | 一种信息处理的方法及电子设备 | |
CN101291251B (zh) | 一种多计算机的同步控制方法及系统 | |
CN102707888B (zh) | 一种终端控制方法及终端 | |
CN110096679A (zh) | 在电子表格中显示多个作者的在场 | |
CN107180186A (zh) | 应用程序的权限配置方法、控制方法、装置及移动终端 | |
CN106921798A (zh) | 通知消息的处理方法及装置 | |
CN104951093A (zh) | 通过自定义按键实现调用程序或功能的移动终端及其方法 | |
CN109799938A (zh) | 控件显示管理方法、终端设备及计算机可读存储介质 | |
CN106716357A (zh) | 多系统移动终端的控制方法、控制装置及电子设备 | |
CN106959879A (zh) | 一种控制方法及电子设备 | |
CN104407865B (zh) | 窗口的显示方法及装置 | |
CN113194024B (zh) | 信息显示方法、装置和电子设备 | |
CN106484270A (zh) | 一种语音操作事件添加方法及终端 | |
CN106383721A (zh) | 一种电子设备的显示控制方法、装置及电子设备 | |
CN104883453A (zh) | 迷宫解锁方法、系统及根据迷宫解锁启动的移动终端 | |
CN106020622A (zh) | 用于收藏表情符号的方法和装置 | |
JP2018502404A (ja) | メッセージ表示方法、メッセージ表示装置、およびメッセージ表示デバイス | |
WO2022213945A1 (zh) | 应用提醒方法、装置及电子设备 | |
CN106293729A (zh) | 移动终端中控制应用程序的方法、装置和移动设备 | |
CN106528238A (zh) | 应用启动方法及装置 | |
CN103294351B (zh) | 一种显示方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |