CN111538574A - 任务堆栈的管理方法、装置、终端及存储介质 - Google Patents
任务堆栈的管理方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN111538574A CN111538574A CN202010231583.4A CN202010231583A CN111538574A CN 111538574 A CN111538574 A CN 111538574A CN 202010231583 A CN202010231583 A CN 202010231583A CN 111538574 A CN111538574 A CN 111538574A
- Authority
- CN
- China
- Prior art keywords
- active page
- page
- activity
- task stack
- task
- 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
- 238000007726 management method Methods 0.000 title claims description 44
- 230000000694 effects Effects 0.000 claims abstract description 364
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000012544 monitoring process Methods 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 29
- 238000011084 recovery Methods 0.000 claims description 14
- 230000006378 damage Effects 0.000 claims description 10
- 230000000875 corresponding effect Effects 0.000 description 41
- 230000003993 interaction Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000002411 adverse Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种任务堆栈的管理方法、装置、终端及存储介质。所述方法包括:监测目标应用的活动页面的状态;在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。因此,本发明的方案,在一定程度上解决了现有技术中要退出的页面的activity被销毁时,该activity才会从页面栈中出栈,从而可能会影响业务判断的问题。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种任务堆栈的管理方法、装置、终端及存储介质。
背景技术
Android(安卓)系统中存在页面堆栈的概念,对于每个应用具有对应的页面堆栈,其中,可以在安装该应用的终端设备与电脑连接后,在电脑上通过adb(调试桥)命令获取系统的页面堆栈,即可以通过代码调用的方式获取系统的页面堆栈。由于,用户日常使用终端设备时不会将其与电脑连接,因而在用户日常使用终端设备的过程中,无法通过代码调用的方式实时获取到系统的页面堆栈。
然而,对于一款应用而言,在某些业务场景需要获取页面堆栈来做不同的业务操作,从而无法根据页面堆栈进行业务操作。
其中,针对无法通过代码调用获取系统的页面堆栈的问题,目前的传统做法是:监听activity(活动页面)的生命周期,使用弱引用activity的列表保存栈内activity,在activity创建时将该activity入栈,在activity销毁时,将其出栈。
但是,通过此种方式存在出栈较晚的问题,例如页面A打开页面B,在页面B完成并且返回页面A时,一般是页面A的activity先恢复,页面B的activity才会销毁。其中,页面A的activity恢复后,就可以在页面A上进行人机交互,但由于页面B的activity的销毁发生在页面A的activity恢复之后,所以,页面A上可以进行人机交互时,页面B的activity还未销毁,即页面B的activity还未出栈,则若在页面A的activity恢复之后至页面B的activity销毁期间,页面A上通过人机交互,产生某项业务,需要根据此时的页面堆栈进行业务判断,则由于页面B的activity还未出栈,所以此时得到的页面堆栈的信息是错误的,从而会影响业务判断。
由此可知,现有技术中,需要退出的页面的activity被销毁时,才将该activity出栈,可能会影响业务判断。
发明内容
本发明实施例提供一种任务堆栈的管理方法、装置、终端及存储介质,以在一定程度上解决现有技术中要退出的页面的activity被销毁时,该activity才会从页面栈中出栈,从而可能会影响业务判断的问题。
根据本公开实施例的第一方面,提供了一种任务堆栈的管理方法,包括:
监测目标应用的活动页面的状态;
在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;
其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。
可选的,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于暂停状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中;
在监测到所述第一活动页面处于销毁状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中,直到监测到所述第一活动页面处于销毁状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面记录从所述第一任务堆栈中出栈。
可选的,在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从第一任务堆栈中出栈之前,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于创建状态,且所述第一活动页面未被目标系统回收的情况下,创建所述第一活动页面的第一活动页面记录,并将所述第一活动页面记录入栈其所属的第一任务堆栈;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
可选的,在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从第一任务堆栈中出栈之前,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于创建状态,且所述第一活动页面被目标系统回收的情况下,更新所述第一活动页面的第一活动页面记录的哈希码;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
可选的,将所述第一活动页面记录入栈其所属的第一任务堆栈之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第一任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第一任务堆栈中出栈。
可选的,为所述目标应用执行业务操作创建的任务堆栈,与其对应的操作系统维护的任务堆栈的ID相同;
所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于恢复状态的情况下,获取所述第一活动页面当前所处的目标系统所维护的任务堆栈的第一ID;其中,所述目标系统为安装所述目标应用的设备的操作系统;
在所述第一ID与所述第一活动页面记录当前所处的所述第一任务堆栈的ID不同的情况下,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中。
可选的,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第二任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第二任务堆栈中出栈。
可选的,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位包括第三预设标记,或者在所述第一活动页面的启动模式为站内复用模式,或者所述第一活动页面的启动模式为单实例模式的情况下:若所述第一活动页面记录未处于所述第二任务堆栈的栈顶,则将所述第二任务堆栈中,位于所述第一活动页面记录之上的活动页面记录,从所述第二任务堆栈中出栈。
可选的,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
获取所述第二任务堆栈中正在退出的活动页面的第二活动页面记录,并将所述第二活动页面记录从所述第二任务堆栈中出栈。
可选的,所述第一活动页面记录中包括所述第一任务堆栈的信息记录的ID、所述第一活动页面的ID、所述第一活动页面的状态、所述第一活动页面的哈希值、所述第一活动页面的页面名称。
可选的,所述第一任务堆栈的信息记录包括所述第一任务堆栈的ID、最近预设次数从所述第一任务堆栈中出栈的活动页面记录组成的第一列表、所述第一任务堆栈中包括的活动页面记录组成的第二列表。
根据本公开实施例的第二方面,提供了一种任务堆栈的管理装置,所述任务堆栈的管理装置包括:
监测模块,被配置为监测目标应用的活动页面的状态;
第一出栈处理模块,被配置为在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;
其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。
可选的,所述任务堆栈的管理装置还包括:
第二出栈处理模块,被配置为在监测到所述第一活动页面处于暂停状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中;
第三出栈处理模块,被配置为在监测到所述第一活动页面处于销毁状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中,直到监测到所述第一活动页面处于销毁状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面记录从所述第一任务堆栈中出栈。
可选的,所述任务堆栈的管理装置还包括:
第一入栈处理模块,被配置为在监测到所述第一活动页面处于创建状态,且所述第一活动页面未被目标系统回收的情况下,创建所述第一活动页面的第一活动页面记录,并将所述第一活动页面记录入栈其所属的第一任务堆栈;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
可选的,所述任务堆栈的管理装置还包括:
哈希码更新模块,被配置为在监测到所述第一活动页面处于创建状态,且所述第一活动页面被目标系统回收的情况下,更新所述第一活动页面的第一活动页面记录的哈希码;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
可选的,所述任务堆栈的管理装置还包括:
第四出栈处理模块,被配置为在将所述第一活动页面记录入栈其所属的第一任务堆栈之后,检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第一任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第一任务堆栈中出栈。
可选的,为所述目标应用执行业务操作创建的任务堆栈,与其对应的操作系统维护的任务堆栈的ID相同;所述任务堆栈的管理装置还包括:
ID获取模块,被配置为在监测到所述第一活动页面处于恢复状态的情况下,获取所述第一活动页面当前所处的目标系统所维护的任务堆栈的第一ID;其中,所述目标系统为安装所述目标应用的设备的操作系统;
移动模块,被配置为在所述第一ID与所述第一活动页面记录当前所处的所述第一任务堆栈的ID不同的情况下,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中。
可选的,所述任务堆栈的管理装置还包括:
第五出栈处理模块,被配置为在将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第二任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第二任务堆栈中出栈。
可选的,所述任务堆栈的管理装置还包括:
第六出栈处理模块,被配置为在将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,检测到所述第一活动页面的标记位包括第三预设标记,或者在所述第一活动页面的启动模式为站内复用模式,或者所述第一活动页面的启动模式为单实例模式的情况下:若所述第一活动页面记录未处于所述第二任务堆栈的栈顶,则将所述第二任务堆栈中,位于所述第一活动页面记录之上的活动页面记录,从所述第二任务堆栈中出栈。
可选的,所述任务堆栈的管理装置还包括:
第七出栈处理模块,被配置为在将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,获取所述第二任务堆栈中正在退出的活动页面的第二活动页面记录,并将所述第二活动页面记录从所述第二任务堆栈中出栈。
可选的,所述第一活动页面记录中包括所述第一任务堆栈的信息记录的ID、所述第一活动页面的ID、所述第一活动页面的状态、所述第一活动页面的哈希值、所述第一活动页面的页面名称。
可选的,所述第一任务堆栈的信息记录包括所述第一任务堆栈的ID、最近预设次数从所述第一任务堆栈中出栈的活动页面记录组成的第一列表、所述第一任务堆栈中包括的活动页面记录组成的第二列表。
根据本公开实施例的第三方面,提供了一种终端,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行以实现上述任一种所述的任务堆栈的管理方法所执行的操作。
根据本公开实施例的第四方面,提供了一种计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够实现上述任一种所述的任务堆栈的管理方法所执行的操作。
根据本公开实施例的第五方面,提供根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由终端的处理器执行时,使得终端能够执行一种以实现如本公开提供的任务堆栈的管理方法所执行的操作。
与现有技术相比,本发明具有以下优点:
发明实施例的任务堆栈的管理方法,为了目标应用执行业务操作创建新的任务堆栈,并监测目标应用的活动页面的状态,从而在监测到第一活动页面处于暂停状态,且第一活动页面正在退出的情况下,将第一活动页面的第一活动页面记录从当前所处的为目标应用执行业务操作创建的第一任务堆栈中出栈;第一活动页面为目标应用的活动页面中的其中一个。其中,一个要退出的活动页面首先进入暂停状态(即显示界面失去焦点),然后才会进入销毁状态,并且一个要退出的活动页面的暂停状态发生在所要切换的活动页面的恢复状态(即可进行人机交互)之前,因此,可以在该要退出的活动页面处于暂停状态时,将对应的活动页面记录从其当前所处的为目标应用执行业务操作创建的任务堆栈中出栈,从而可以实现在所要切换的活动页面进入恢复状态之前就将该要退出的活动页面的记录出栈,因此,相较于现有技术在活动页面销毁时才出栈,本发明的实施例,提早了出栈时机,从而在所要切换的活动页面恢复时,就可以得到正确的栈信息,在一定程度上减小了对业务操作的不良影响。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
通过阅读下文优选实施方式的详细描述,各种优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
在附图中:
图1是本发明实施例一的任务堆栈的管理方法的流程图;
图2是本发明实施例二的任务堆栈的管理方法的流程图;
图3是本发明实施例中的出栈过程的具体实施方式的流程图;
图4是本发明实施例中的入栈过程的具体实施方式的流程图;
图5是本发明实施例中对启动模式和活动页面的标记位的相关处理的具体实施方式的流程图;
图6是发明实施例中在一个活动页面的完整生命周期的监测过程中的栈操作的具体实施方式的流程图;
图7是本发明实施例三的任务堆栈的管理装置的结构框图;
图8是本发明实施例四的任务堆栈的管理装置的结构框图;
图9是本发明实施例五的终端的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
实施例一
参照图1,示出了本发明实施例一的一种任务堆栈的管理方法的流程图,如图1所示,任务堆栈的管理方法包括以下步骤:
步骤101:监测目标应用的活动页面的状态。
其中,activity(活动页面)是一个应用程序的组件,提供一个屏幕,用户可以用来交互,从而完成某项任务。activity的状态包括初始化(initialing)状态、创建(onCreate)状态、启动(onStart)状态、恢复(onResume)状态、暂停(onPause)状态、停止(onstop)状态、销毁(onDestroy)状态。其中,一个activity处于initialing状态,则某个应用正在授权可以使用该activity;处于onCreate状态,则表示正在设置该activity对应的页面的相关属性(例如风格、位置、颜色等);处于onStart状态,则该activity对应的页面开始显示;处于onResume状态,则该activity对应的页面可以进行人机交互;处于onPause状态,则该activity对应的页面失去焦点,不可进行人机交互;处于onStop状态,则该activity对应的页面在显示界面不可见,处于onDestory状态,则该activity对应的页面内存被回收。
另外,一个应用包括多个页面,例如首页、拍照页面、主页等,其中,一个应用的页面对应一个activity的对象,即一个应用的页面对应一个activity,例如首页对应一个activity,一个拍照页面对应一个activity,一个主页对应一个activity。
步骤102:在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈。
其中,所述第一活动页面为所述目标应用的activity中的其中一个,即本发明实施例中,在监测到目标应用的任何一个activity处于暂停状态,且正在退出的情况下,将该activity的活动页面记录(activityrecord)从为目标应用执行业务操作创建的任务堆栈(task)中出栈。
另外,一个activity的显示界面失去焦点,即用户无法在该显示界面上进行操作,则该activity进入暂停状态;一个activity的activityrecord中包括isFinishing字段,该字段的取值若为“true”,则表示该activity正在退出;该字段的取值若为“false”,则表示activity未退出。其中,activityrecod为activity的信息记录,即activityrecord包括activity的相关信息。
对于一个处于暂停状态的activity,若仅仅是被暂停,而并未执行任何退出的操作,则该activityrecord不能执行出栈操作,因而本发明的实施例,在监测到一个activity处于暂停状态,且正在退出时,才将该activity的activityrecord出栈,避免了在页面并未退出时却出栈。
此外,一个要退出的activity首先进入onPsuse状态(即显示界面失去焦点),然后才会进入onDestory状态,并且一个要退出的activity的onPsuse状态发生在所要切换的activity的onResume状态(即可进行人机交互)之前,因此,可以在该要退出的activity处于onPsuse状态时,将对应的activityrecord从其当前所处的为目标应用执行业务操作创建的task中出栈,从而可以实现在所要切换的activity进入onResume状态之前就将该要退出的activity的activityrecord出栈,因此,相较于现有技术在activity销毁时才出栈,本发明的实施例,提早了出栈时机,从而在所要切换的activity恢复时,就可以得到正确的栈信息,在一定程度上减小了对业务操作的不良影响。
需要说明的是,所述第一任务堆栈是为所述目标应用执行业务操作创建的。即本发明的实施例,为了目标应用执行业务操作创建一套task,其中,一个应用对应一套task,并且一套task中包括至少一个task,一个task中包括存放至少一个activityrecord,一个activityrecord对应一个activity。
而安装所述目标应用的终端上的操作系统所维护的栈结构,具体为:一个页面堆栈中包括至少一个taskrecord,其中taskrecord是一个task的信息记录,一个task中存放有至少一个activity。
由此可知,本发明实例里中所维护的栈结构与操作系统所维护的栈结构不同,但是,本发明实施例中为应用执行业务操作创建的task与操作系统维护的task一一对应,即一个操作系统维护的task中包括的activity的activityrecord,处于与这个操作系统维护的task对应且为应用执行业务操作创建的task中,例如一个操作系统维护的task-E,与为应用执行业务操作创建的task-F对应,且task-E中包括四个activity,则这四个activity对应的activityrecord处于task-F中。
另外,在用户使用目标应用的过程中,无法通过代码调用的方式获取操作系统所维护的任务堆栈的栈信息,但是,在需要执行某项业务操作时,可以从本发明实施例中新创建的任务堆栈中获取具体的栈信息,从而依据获取的栈信息执行业务操作。
具体的,例如如下场景可以根据栈信息,执行业务操作:
业务场景一:当通过push(推送)或者外链进入一个应用时,通常不是进入首页,例如会进入视频播放页、直播页、个人主页,而当用户离开这些页面时,希望能回到首页而不是退出该应用。这时的判断就需要用到任务堆栈,即通过任务堆栈可以判断当前离开页面不是首页并且是任务堆栈中最后一个页面,则可以回到首页,且不退出该应用。
业务场景二:例如在视频播放页点击视频作者头像时,可以根据任务堆栈判断该视频播放页上一个页面是否为该作者的个人主页,若是,则可以不再创建一个新的个人主页,而是直接返回上一个页面即可。
业务场景三:当我们有需要根据页面累积上报数据时,例如在做统计时,用户从页面A到页面B走过哪些路径,例如路径是A-B-C-D,则目前需要B面将来源告知C页面,C页面将B的来源、C的来源告知D页面,这样路径较长时,需要传输的来源信息会很多,而采用任务堆栈的形式按路径顺序存储A、B、C、D四个页面,则通过遍历该任务堆栈就可以获知其中的顺序。由此可见,通过任务堆栈遍历每个页面的方式要明显优于每个页面透传给下个页面的方式。
实施例二
参照图2,示出了本发明实施例二的一种任务堆栈的管理方法的流程图,如图2所示,任务堆栈的管理方法包括以下步骤:
步骤201:监测目标应用的活动页面的状态。
其中,activity(活动页面)是一个应用程序的组件,提供一个屏幕,用户可以用来交互,从而完成某项任务。activity的状态包括初始化(initialing)状态、创建(onCreate)状态、启动(onStart)状态、恢复(onResume)状态、暂停(onPause)状态、停止(onstop)状态、销毁(onDestroy)状态。
另外,一个应用包括多个页面,例如首页、拍照页面、主页等,其中,一个应用的页面对应一个activity的对象,即一个应用的页面对应一个activity,例如首页对应一个activity,一个拍照页面对应一个activity,一个主页对应一个activity。
步骤202:在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈。
其中,所述第一活动页面为所述目标应用的activity中的其中一个,即本发明实施例中,在监测到目标应用的任何一个activity处于暂停状态,且正在退出的情况下,将该activity的活动页面记录(activityrecord)从为目标应用执行业务操作创建的任务堆栈(task)中出栈。
另外,一个activity的显示界面失去焦点,即用户无法在该显示界面上进行操作,则该activity进入暂停状态;一个activity的activityrecord中包括isFinishing字段,该字段的取值若为“true”,则表示该activity正在退出;该字段的取值若为“false”,则表示activity未退出。其中,activityrecod为activity的信息记录,即activityrecord包括activity的相关信息。
对于一个处于暂停状态的activity,若仅仅是被暂停,而并未执行任何退出的操作,则该activityrecord不能执行出栈操作,因而本发明的实施例,在监测到一个activity处于暂停状态,且正在退出时,才将该activity的activityrecord出栈,避免了在页面并未退出时却出栈。
此外,一个要退出的activity首先进入onPsuse状态(即显示界面失去焦点),然后才会进入onDestory状态,并且一个要退出的activity的onPsuse状态发生在所要切换的activity的onResume状态(即可进行人机交互)之前,因此,可以在该要退出的activity处于onPsuse状态时,将对应的activityrecord从其当前所处的为目标应用执行业务操作创建的task中出栈,从而可以实现在所要切换的activity进入onResume状态之前就将该要退出的activity的activityrecord出栈,因此,相较于现有技术在activity销毁时才出栈,本发明的实施例,提早了出栈时机,从而在所要切换的activity恢复时,就可以得到正确的栈信息,在一定程度上减小了对业务操作的不良影响。
需要说明的是,所述第一任务堆栈是为所述目标应用执行业务操作创建的。即本发明的实施例,为了目标应用执行业务操作创建一套task,其中,一个应用对应一套task,并且一套task中包括至少一个task,一个task中包括存放至少一个activityrecord,一个activityrecord对应一个activity。
而安装所述目标应用的终端上的操作系统所维护的栈结构,具体为:一个页面堆栈中包括至少一个taskrecord,其中taskrecord是一个task的信息记录,一个task中存放有至少一个activity。
由此可知,本发明实例里中所维护的栈结构与操作系统所维护的栈结构不同,但是,本发明实施例中为应用执行业务操作创建的task与操作系统维护的task一一对应,即一个操作系统维护的task中包括的activity的activityrecord,处于与这个操作系统维护的task对应且为应用执行业务操作创建的task中,例如一个操作系统维护的task-E,与为应用执行业务操作创建的task-F对应,且task-E中包括四个activity,则这四个activity对应的activityrecord处于task-F中。
另外,在用户使用目标应用的过程中,无法通过代码调用的方式获取操作系统所维护的任务堆栈的栈信息,但是,在需要执行某项业务操作时,可以从本发明实施例中新创建的任务堆栈中获取具体的栈信息,从而依据获取的栈信息执行业务操作。
步骤203:在监测到所述第一活动页面处于暂停状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中。
其中,activity的activityrecord中包括的isFinishing字段的取值为“false”,则表示该activity未退出,则若在activity处于暂停状态时,若检测到该activity的activityrecord中包括的isFinishing字段的取值为“false”,则不对该activity的activityrecord执行出栈操作,即仍然保持该activityrecord存放在task中。
步骤204:在监测到所述第一活动页面处于销毁状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中,直到监测到所述第一活动页面处于销毁状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面记录从所述第一任务堆栈中出栈。
其中,一个activity的onPause状态结束后,会依次经历onStop状态和onDestroy状态,本发明实施例中,若在onPause状态中,该activity的activityrecord中包括的isFinishing字段的取值为“false”,则该activityrecord不做出栈操作,当到达销毁状态时,再次判断isFinishing字段的取值,若仍然为“false”,则该activityrecord仍然不做出栈操作,直到检测到isFinishing字段的取值为“true”时,将该activityrecord出栈。
具体的,对于一个activity的出栈过程的具体实施方式可如图3所示,即:检测到activity处于onPause状态,则判断activity的isFinishing字段的取值是否为“true”,若是,则将该activity的activityrecord出栈;若isFinishing字段的取值为“false”,则该activity的activityrecord不出栈,直到activity进入onDestroy状态,再次判断activity的isFinishing字段的取值是否为“true”,若是,则将该activity的activityrecord出栈,若isFinishing字段的取值为“false”,则该activity的activityrecord不出栈,且确定该activity被操作系统回收。
可选的,在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从第一任务堆栈中出栈之前,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于创建状态,且所述第一活动页面未被目标系统回收的情况下,创建所述第一活动页面的第一活动页面记录,并将所述第一活动页面记录入栈其所属的第一任务堆栈;
所述目标系统为安装所述目标应用的设备的操作系统。
可选的,最新入栈的activityrecord位于其所进入的task的队尾。
其中,安装目标应用的设备的操作系统在运行时,为了优先保证当前显示的页面的正常运行,会对一些activity进行回收。例如,目标应用按照A-B-C的顺序打开页面,假设这时设备的内存不足,或者页面C的显示很耗内存,则操作系统会将最底部的页面A回收掉,优先保证页面C的运行。
另外,本发明的实施例,在监测到一个activity处于onCreate时,若该activity未被操作系统回收,则需要创建一个与该activity对应的activityrecord,并保存到对应的task中。
可选的,为所述目标应用执行业务操作创建的任务堆栈,与其对应的操作系统维护的任务堆栈的ID相同;所述将所述第一活动页面记录入栈其所属的第一任务堆栈的过程包括:
获取所述第一活动页面所处的所述目标系统所维护的任务堆栈的第二ID;
在当前已存在为所述目标应用执行业务操作所创建的且ID为所述第二ID的第一任务堆栈的情况下,将所述第一活动页面记录入栈至所述第一任务堆栈中;
在当前不存在为所述目标应用执行业务操作所创建的且ID为所述第二ID的第一任务堆栈的情况下,创建所述第一任务堆栈,并将所述第一活动页面记录入栈至所述第一任务堆栈中。
其中,为所述目标应用执行业务操作创建的task,与其对应的操作系统维护的task的ID相同,即本发明的实施例中为应用执行业务操作创建的task的ID与操作系统所维护的task的ID保持一致,即一个activity所处的操作系统所维护的task的ID,与该activity对应的activityrecord所处的为应用执行业务操作创建的task的ID相同。
另外,操作系统维护多个task,而为应用执行业务操作创建的task,与其对应的操作系统维护的task的ID相同,因而,本发明的实施例中,一个应用也对应着多个task,从而使得本发明的实施例中创建的task可以适用于更多场景的业务操作。
例如,页面的显示顺序是A-B-C-D,但有时从D页面希望直接返回到B页面,而采用本发明实施例的任务堆栈的管理方法,在onGreat状态,根据activity在操作系统维护的task的ID,会将ID相同的activityrecord置于一个为应用执行业务操作创建的task中,例让A-B-D处于一个栈,C处于另一个栈,则从D页面可以直接返回到B页面。
可选的,在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从第一任务堆栈中出栈之前,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于创建状态,且所述第一活动页面被目标系统回收的情况下,更新所述第一活动页面的第一活动页面记录的哈希码;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
另外,哈希码是Java语言的软件开发工具包(jdk)根据activityrecord的地址或者字符串或者数字算出来的int类型的数值代表,一个哈希码唯一标识一个activityrecord。
由上述可知,本发明的实施例中,在监测到一个activity处于onCreate状态时,若该activity被操作系统回收了,则与该activity对应的activityrecord已存在,则不需要创建与该activity对应的activityrecord。但,一个activity被回收后恢复,其activityrecord的哈希码会发生变化,因而此种情况下,可以对该activityrecord的哈希码进行更新,从而便于后续利用哈希码执行其他操作。
由上述可知,本发明的实施例中,针对一个activity入栈的具体实施方式可如图4所示,即检测到一个activity处于onCreate状态,则判断activity是否存在其所属的task(其中activity所属的task即为与该activity当前所处的操作系统维护的task对应的,且是为应用执行业务操作创建的task),若不存在,则创建一个该activity的所属task以及与该activity对应的activityrecord,并将新创建的该activityrecord入栈至此时创建的该task中,若存在,则判断该activity是否被回收(即判断已存在的该activity所属的task中,是否已存在与该activity对应的activityrecord),若是,则仅修改activityrecord的哈希码即可,若否,则创建该activity对应的activityrecord,并入栈。
可选的,将所述第一活动页面记录入栈其所属的第一任务堆栈之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位为第一预设标记和第二预设标记的情况下,将所述第一任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第一任务堆栈中出栈。
其中,第一预设标记可以为FLAG_ACTIVITY_CLEAR_TASK,第二预设标记可以为FLAG_ACTIVITY_NEW_TASK,其中,FLAG_ACTIVITY_CLEAR_TASK用于指示清除任务堆栈中的所有activityrecord,FLAG_ACTIVITY_NEW_TASK用于指示保留新入栈的activityrecord,因此,当检测到FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK同时出现(即flag中包括FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK)时,可以将一个task中除去新入栈的activityrecord之外的其他所有activityrecord集体出栈。
例如,一个task中包括a1~a10、A这些页面的activityrecord,且某种场景下需要将该task中除去页面A的activityrecord之外的其他activityrecord都出栈,则此种场景下,可以采用特殊的标记触发多个activityrecord集体出栈,即可以在页面A的activityrecord入栈之后,判断是否检测到标记位(flag)包括FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK,若是,则可以实现多个activityrecord的集体出栈。
可选的,为所述目标应用执行业务操作创建的任务堆栈,与其对应的操作系统维护的任务堆栈的ID相同;
所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于恢复状态的情况下,获取所述第一活动页面当前所处的目标系统所维护的任务堆栈的第一ID;其中,所述目标系统为安装所述目标应用的设备的操作系统;
在所述第一ID与所述第一活动页面记录当前所处的所述第一任务堆栈的ID不同的情况下,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中。
其中,操作系统运行时,可能将某个activity从操作系统维护的task1移动到task2,而本发明的实施例中,操作系统维护的task与为应用执行业务操作创建的task一一对应,因此,在某个activity从task1移动到task2时,则需要将该activity的activityrecord从与task1对应且为应用执行业务操作创建的task中,移动至与task2对应且为应用执行业务操作创建的task中。
可选的,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
步骤H1:检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第二任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第二任务堆栈中出栈。
其中,FLAG_ACTIVITY_CLEAR_TASK用于指示清除任务堆栈中的所有activityrecord,FLAG_ACTIVITY_NEW_TASK用于指示保留新入栈的activityrecord。
本发明的实施例中,在一个activityrecord从一个task中移动至另一个task中之后,还可进一步检测被移动的activityrecord对应的activity的flag为是否包括第一预设标记和第二预设标记,从而可以在此时机执行多个activityrecord的集体出栈。
可选的,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
步骤H2:检测到所述第一活动页面的标记位包括第三预设标记,或者在所述第一活动页面的启动模式为站内复用模式,或者所述第一活动页面的启动模式为单实例模式的情况下:若所述第一活动页面记录未处于所述第二任务堆栈的栈顶,则将所述第二任务堆栈中,位于所述第一活动页面记录之上的活动页面记录,从所述第二任务堆栈中出栈。
其中,第三预设标记可以为FLAG_ACTIVITY_CLEAR_TOP,FLAG_ACTIVITY_CLEAR_TOP用于指示将一个未处于栈顶的activityrecord移动至栈顶,则可以在检测到某个activity的flag包括FLAG_ACTIVITY_CLEAR_TOP时,将该activity对应的activityrecord之上的activityrecord出栈,从而将该activityrecord置于栈顶。
其中,需要说明的是,对于一个堆栈,其新入栈的元素置于栈顶,即位于原堆栈的栈顶元素的上面,因此,需要将一个堆栈中未处于栈顶的元素移动至栈顶时,则需要将位于该元素上面的其他元素出栈。
另外,在某一activity的启动模式为站内复用模式或者单实例模式时,也可以将该activity对应的activityrecord之上的activityrecord出栈,从而将该activityrecord置于栈顶。
例如,一个任务堆栈中包括a1~a10、A、B、C这些页面的activityrecord,若在页面C之后,又打开页面A,即需要从页面C返回到页面A,具体过程是先将栈中的页面A之前的a1~a10全部出栈,将A移到栈顶,才能返回到页面A,其中,由于现有技术中在销毁状态之后才能出栈,所以若采用现有技术的出栈方式,将a1~a10全部出栈,需要一一等待每个activity销毁之后才能出栈,这样a1~a10全部出栈所需的时间较长。而在这10个activity全部销毁之前,返回的页面A已经恢复,即用户已经可以与页面A交互,若在此期间通过用户与页面A的交互,需要调取任务堆栈信息,则会从这10个页面未完全出栈时的任务堆栈中拿取,则会产生错误。
而本发明的实施例,可以采用特殊的标记触发多个activityrecord集体出栈,例如上述例子,则可以在页面A的activityrecord入栈之后,判断是否检测到flag中包括FLAG_ACTIVITY_CLEAR_TOP,若是,则可以将a1~a10这10个页面对应的activityrecord的集体出栈。
由上述步骤H1和步骤H2可知,对启动模式和activity的标记位的相关处理的具体实施方式可如图5所示。
即activity处于onCreate状态或者onResume状态,则判断该activity的flag是否包括FLAG_ACTIVITY_CLEAR_TASK,若包括FLAG_ACTIVITY_CLEAR_TASK,则进一步判断flag是否包括FLAG_ACTIVITY_NEW_TASK,若包括FLAG_ACTIVITY_NEW_TASK,则将该activity的activityrecord所处的task中内除去该activityrecord之外的其他activityrecord全部出栈;
若flag中不包括FLAG_ACTIVITY_CLEAR_TASK或者FLAG_ACTIVITY_NEW_TASK,则判断flag是否包括FLAG_ACTIVITY_CLEAR_TOP,若否,则判断启动模式是否为站内复用模式,若启动模式不是站内复用模式,则判断启动模式是否为单实例模式;
若flag中包括FLAG_ACTIVITY_CLEAR_TOP,或者启动模式是站内复用模式,或者启动模式是单实例模式,则判断该activity的activityrecord是否处于栈顶,若否,则将处于栈顶的activityrecord出栈,直到该activity的activityrecord处于栈顶为止。
可选的,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
步骤H3:获取所述第二任务堆栈中正在退出的活动页面的第二活动页面记录,并将所述第二活动页面记录从所述第二任务堆栈中出栈。
其中,可以采用反射的方式,获取所述第二任务堆栈中正在退出的活动页面的第二活动页面记录。
例如在页面A很快跳到页面B,即A刚进入onCreate状态,还未进入onStart状态,页面B就进入了onStart状态,这时由于页面A并未进入onStart状态,所以,页面A从onCreate状态直接跳到了onDestroy状态,这样由于检测不到onPause状态,只能在页面A进入onDestroy状态时出栈。但是,这样出栈时机也会较晚晚。为了解决这一问题,本发明的实施例,在页面B处于onResume状态时,查找一下这个任务堆栈中那个activity正在退出,即判断哪个activity的activityrecord中包括的isFinishing字段的取值是“true”,若是,则出栈,从而实现了此种场景下的提早出栈,进一步减小了由于出栈较晚导致错误的栈信息影响业务操作。
其中,需要说明的是,上述步骤H1和步骤H2可以置于步骤H3之前,也可以置于步骤H3之后。
可选的,所述第一活动页面记录中包括所述第一任务堆栈的信息记录的ID、所述第一活动页面的ID、所述第一活动页面的状态、所述第一活动页面的哈希值、所述第一活动页面的页面名称。其中,任务堆栈的信息记录(taskrecord)中包括的是task的相关信息,即一个task对应一个taskrecord。
由此可知,本发明的实施例中,为应用执行业务操作创建的task中存储的activityrecord是activity的相关信息,例如其所处的task的taskrecord的ID、activity的ID、状态、哈希值、页面名称。因此,本发明的实施例通过对activityrecord的自定义,并将该自定义的activityrecord存放于task中,脱离了对activity的引用,并且,通过采用自定义的activityrecord,还可以便于对activityrecord的其他扩展。
其中,现有技术存在监听activity生命周期,使用弱引用activity的列表保存栈内的activity,即现有技术在监听activity生命周期时,创建的task中中存放的是activity真实对象,而activity相关信息所占据的内存小于activity真实对象所占据的内存,因而本发明的实施例中,为应用执行业务操作创建的task中存放activity的相关信息,可以减小应用运行时所占据的内存空间。
可选的,所述第一任务堆栈的信息记录包括所述第一任务堆栈的ID、最近预设次数从所述第一任务堆栈中出栈的活动页面记录组成的第一列表、所述第一任务堆栈中包括的活动页面记录组成的第二列表。
即一个taskrecord中包括task的ID、最近预设次数从该task中出栈的activityrecord组成的第一列表、以及该task中当前包括的activityrecord。
其中,现有技术存在监听activity生命周期,使用弱引用activity的列表保存栈内的activity,即现有技术在监听activity生命周期时,创建的task中中存放的是activity真实对象,从而存在某些场景下占据过多内存的问题。例如页面的显示顺序为A-B-A,其中从页面B返回到A后,假设在页面A的某些业务需要偶尔查看一下是从哪个页面返回到页面A的,则页面B的activity无法从对应的task出栈,从而无法释放页面B占据的内存,进而在此种场景较多的情况下,会占据过多内存,从而出现卡顿现象。
而本发明的实施例,为应用执行业务操作创建的task中存放的是activity的相关参数(即activityrecord),而并不是实际的activity对象,并且在task的信息记录中还包括最近预设次数从该task中出栈的activityrecord,则在上述举例中页面B返回页面A时,页面B的activityrecord可以从相应的task中出栈,从而释放内存,但在该task的taskrecord的第一列表中可以保存页面B的activityrecord,从而可以在执行页面A中的某些业务可以偶尔该taskrecord中获知从哪个页面返回到页面A。由此可知,发明实施例中,针对上述场景,页面B可以释放内存,从而避免占据过多内存,从而可以提升系统的运行速度。
由上述可知,在本发明实施例中,一个应用包括多个页面,其中一个页面对应一个activity,activity的相关信息组成一个activityrecord(即一个activity对应一个activityrecord),多个activityrecord组成一个task,一个task对应一个taskrecord。其中,第一应用的上述栈结构,可以直接初始化后应用到第二应用,即授权第二应用可以在监测activity的状态时,应用上述栈结构,而无需改动任何原有代码。
可选的,将所述第一活动页面的第一活动页面记录从第一任务堆栈中出栈之后,还包括:
更新所述第一任务堆栈的信息记录中的所述第二列表和所述第一列表。
其中,在将一个activityrecord从一个task中出栈后,需要对这个task的taskrecord中包括的第一列表和第二列表进行更新。同理,在将一个activityrecord入栈至一个task中后,也可以对这个task的taskrecord中包括的第一列表和第二列表进行更新。
需要说明的时,一个activityrecord从无论前文中所述的哪一种场景下出栈或者入栈,都可以对相应task的taskrecord中包括的第一列表和第二列表进行更新。
综上所述,发明实施例中在一个activity的完整生命周期的监测过程中的栈操作的具体实施方式可如图6所示,具体如下所述:
onCreate时,检查是否需要创建activityrecord对象并入栈,入栈之后,检查是否需要根据启动模式和flag的取值,执行对应的出栈操作,例如在flag包括FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK时,将activityrecord所处的task中内除去该activityrecord外全部出栈。
onResume时,检查是否需要修正该activity的activityrecord当前所处的task,即在该activity的activityrecord当前所处的task的ID与该activity当前所处的系统所维护的task的ID不同的情况下,将该activity的activityrecord移动到,为应用执行业务操作所创建的,且ID与该activity当前所处的系统所维护的task的ID相同的task中;接着,检查是否需要根据启动模式和flag的取值,执行对应的出栈操作,例如flag包括FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK时,将activityrecord所处的task中内除去该activityrecord外全部出栈;在flag包括FLAG_ACTIVITY_CLEAR_TOP,或者启动模式为站内复用模式或者单实例模式时,若activityrecord不在所属task的栈顶,出栈其上所有activityrecord;然后,检查是否存在isFinishing=true的activity需要出栈。
onPause时,判断isFinishing决定是否出栈。
onDestroy时,判断isFinishing,若为true则尝试出栈,若为false则是页面回收不需要处理。
综上所述,本发明实施例的任务堆栈的管理方法,可以使得为应用执行业务操作创建的task的出入栈时机尽可能与系统一致,解决现有方案的出栈过晚问题,还可以实现数据结构与系统基本一致,兼容系统栈多task的情况,并支持activity所有启动模式和特殊flag,支持activity回收的情况,还可以脱离对activity引用,便于扩展。
实施例三
图7是根据一示例性实施例示出的一种任务堆栈的管理装置的框图,该任务堆栈的管理装置70可以包括:
监测模块701,被配置为监测目标应用的活动页面的状态;
第一出栈处理模块702,被配置为在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;
其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。
由上述可知,本发明实施例的任务堆栈的管理装置,为了目标应用执行业务操作创建新的任务堆栈,并监测目标应用的活动页面的状态,从而在监测到第一活动页面处于暂停状态,且第一活动页面正在退出的情况下,将第一活动页面的第一活动页面记录从当前所处的为目标应用执行业务操作创建的第一任务堆栈中出栈;第一活动页面为目标应用的活动页面中的其中一个。其中,一个要退出的活动页面首先进入暂停状态(即显示界面失去焦点),然后才会进入销毁状态,并且一个要退出的活动页面的暂停状态发生在所要切换的活动页面的恢复状态(即可进行人机交互)之前,因此,可以在该要退出的活动页面处于暂停状态时,将对应的活动页面记录从其当前所处的为目标应用执行业务操作创建的任务堆栈中出栈,从而可以实现在所要切换的活动页面进入恢复状态之前就将该要退出的活动页面的记录出栈,因此,相较于现有技术在活动页面销毁时才出栈,本发明的实施例,提早了出栈时机,从而在所要切换的活动页面恢复时,就可以得到正确的栈信息,在一定程度上减小了对业务操作的不良影响。
实施例四
图8是根据一示例性实施例示出的一种任务堆栈的管理装置的框图,该任务堆栈的管理装置80可以包括:
监测模块801,被配置为监测目标应用的活动页面的状态;
第一出栈处理模块802,被配置为在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;
其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。
可选的,所述任务堆栈的管理装置80还包括:
第二出栈处理模块803,被配置为在监测到所述第一活动页面处于暂停状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中;
第三出栈处理模块804,被配置为在监测到所述第一活动页面处于销毁状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中,直到监测到所述第一活动页面处于销毁状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面记录从所述第一任务堆栈中出栈。
可选的,所述任务堆栈的管理装置80还包括:
第一入栈处理模块805,被配置为在监测到所述第一活动页面处于创建状态,且所述第一活动页面未被目标系统回收的情况下,创建所述第一活动页面的第一活动页面记录,并将所述第一活动页面记录入栈其所属的第一任务堆栈;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
可选的,所述任务堆栈的管理装置80还包括:
哈希码更新模块806,被配置为在监测到所述第一活动页面处于创建状态,且所述第一活动页面被目标系统回收的情况下,更新所述第一活动页面的第一活动页面记录的哈希码;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
可选的,所述任务堆栈的管理装置80还包括:
第四出栈处理模块807,被配置为在将所述第一活动页面记录入栈其所属的第一任务堆栈之后,检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第一任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第一任务堆栈中出栈。
可选的,为所述目标应用执行业务操作创建的任务堆栈,与其对应的操作系统维护的任务堆栈的ID相同;所述任务堆栈的管理装置80还包括:
ID获取模块808,被配置为在监测到所述第一活动页面处于恢复状态的情况下,获取所述第一活动页面当前所处的目标系统所维护的任务堆栈的第一ID;其中,所述目标系统为安装所述目标应用的设备的操作系统;
移动模块809,被配置为在所述第一ID与所述第一活动页面记录当前所处的所述第一任务堆栈的ID不同的情况下,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中。
可选的,所述任务堆栈的管理装置80还包括:
第五出栈处理模块810,被配置为在将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第二任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第二任务堆栈中出栈。
可选的,所述任务堆栈的管理装置80还包括:
第六出栈处理模块811,被配置为在将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,检测到所述第一活动页面的标记位包括第三预设标记,或者在所述第一活动页面的启动模式为站内复用模式,或者所述第一活动页面的启动模式为单实例模式的情况下:若所述第一活动页面记录未处于所述第二任务堆栈的栈顶,则将所述第二任务堆栈中,位于所述第一活动页面记录之上的活动页面记录,从所述第二任务堆栈中出栈。
可选的,所述任务堆栈的管理装置80还包括:
第七出栈处理模块812,被配置为在将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,获取所述第二任务堆栈中正在退出的活动页面的第二活动页面记录,并将所述第二活动页面记录从所述第二任务堆栈中出栈。
可选的,所述第一活动页面记录中包括所述第一任务堆栈的信息记录的ID、所述第一活动页面的ID、所述第一活动页面的状态、所述第一活动页面的哈希值、所述第一活动页面的页面名称。
可选的,所述第一任务堆栈的信息记录包括所述第一任务堆栈的ID、最近预设次数从所述第一任务堆栈中出栈的活动页面记录组成的第一列表、所述第一任务堆栈中包括的活动页面记录组成的第二列表。
本公开实施例提供的任务堆栈的管理装置,可以使得为应用执行业务操作创建的task的出入栈时机尽可能与系统一致,解决现有方案的出栈过晚问题,还可以实现数据结构与系统基本一致,兼容系统栈多task的情况,并支持activity所有启动模式和特殊flag,支持activity回收的情况,还可以脱离对activity引用,便于扩展。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
实施例五
参照图9,示出了本发明实施例四的一种终端的结构框图。
本发明实施例的终端可以包括:存储器、处理器及存储在存储器上并可在处理器上运行的用于确定动作执行的程序,用于确定动作执行程序被处理器执行时实现本发明中所述的任意一种任务堆栈的管理方法的步骤。
图9是根据一示例性实施例示出的一种终端900的框图。例如,终端900可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图9,终端900可以包括以下一个或多个组件:处理组件902,存储器905,电源组件906,多媒体组件908,音频组件910,输入/输出(I/O)的接口912,传感器组件915,以及通信组件916。
处理组件902通常控制装置900的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件902可以包括一个或多个处理器920来执行指令,以完成上述任务堆栈的管理方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理部件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。
存储器905被配置为存储各种类型的数据以支持在终端900的操作。这些数据的示例包括用于在终端900上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器905可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件906为终端900的各种组件提供电力。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为终端900生成、管理和分配电力相关联的组件。
多媒体组件908包括在所述终端900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当终端900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克风(MIC),当终端900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器905或经由通信组件916发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件915包括一个或多个传感器,用于为终端900提供各个方面的状态评估。例如,传感器组件915可以检测到终端900的打开/关闭状态,组件的相对定位,例如所述组件为终端900的显示器和小键盘,传感器组件915还可以检测终端900或终端900一个组件的位置改变,用户与终端900接触的存在或不存在,装置900方位或加速/减速和终端900的温度变化。传感器组件915可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件915还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件915还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件916被配置为便于终端900和其他设备之间有线或无线方式的通信。终端900可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件916还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,终端900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行本发明中所述的任意一种任务堆栈的管理方法。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器905,上述指令可由终端900的处理器920执行以完成上述视频管理方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。当存储介质中的指令由终端的处理器执行时,使得终端能够执行本发明中所述的任意一种任务堆栈的管理方法的步骤。
综上所述,本发明实施例的任务堆栈的管理方法,为了目标应用执行业务操作创建新的任务堆栈,并监测目标应用的活动页面的状态,从而在监测到第一活动页面处于暂停状态,且第一活动页面正在退出的情况下,将第一活动页面的第一活动页面记录从当前所处的为目标应用执行业务操作创建的第一任务堆栈中出栈;第一活动页面为目标应用的活动页面中的其中一个。其中,一个要退出的活动页面首先进入暂停状态(即显示界面失去焦点),然后才会进入销毁状态,并且一个要退出的活动页面的暂停状态发生在所要切换的活动页面的恢复状态(即可进行人机交互)之前,因此,可以在该要退出的活动页面处于暂停状态时,将对应的活动页面记录从其当前所处的为目标应用执行业务操作创建的任务堆栈中出栈,从而可以实现在所要切换的活动页面进入恢复状态之前就将该要退出的活动页面的记录出栈,因此,相较于现有技术在活动页面销毁时才出栈,本发明的实施例,提早了出栈时机,从而在所要切换的活动页面恢复时,就可以得到正确的栈信息,在一定程度上减小了对业务操作的不良影响。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的信息提取方案不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造具有本发明方案的系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的信息提取方案中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种任务堆栈的管理方法,其特征在于,所述任务堆栈的管理方法包括:
监测目标应用的活动页面的状态;
在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;
其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。
2.根据权利要求1所述的任务堆栈的管理方法,其特征在于,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于暂停状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中;
在监测到所述第一活动页面处于销毁状态,且所述第一活动页面未退出的情况下,保持所述第一活动页面记录保存在所述第一任务堆栈中,直到监测到所述第一活动页面处于销毁状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面记录从所述第一任务堆栈中出栈。
3.根据权利要求1所述的任务堆栈的管理方法,其特征在于,在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从第一任务堆栈中出栈之前,所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于创建状态,且所述第一活动页面未被目标系统回收的情况下,创建所述第一活动页面的第一活动页面记录,并将所述第一活动页面记录入栈其所属的第一任务堆栈;
其中,所述目标系统为安装所述目标应用的设备的操作系统。
4.根据权利要求3所述的任务堆栈的管理方法,其特征在于,将所述第一活动页面记录入栈其所属的第一任务堆栈之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第一任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第一任务堆栈中出栈。
5.根据权利要求1所述的任务堆栈的管理方法,其特征在于,为所述目标应用执行业务操作创建的任务堆栈,与其对应的操作系统维护的任务堆栈的ID相同;
所述任务堆栈的管理方法还包括:
在监测到所述第一活动页面处于恢复状态的情况下,获取所述第一活动页面当前所处的目标系统所维护的任务堆栈的第一ID;其中,所述目标系统为安装所述目标应用的设备的操作系统;
在所述第一ID与所述第一活动页面记录当前所处的所述第一任务堆栈的ID不同的情况下,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中。
6.根据权利要求5所述的任务堆栈的管理方法,其特征在于,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位包括第一预设标记和第二预设标记的情况下,将所述第二任务堆栈中,除去所述第一活动页面记录之外的其他活动页面记录从所述第二任务堆栈中出栈。
7.根据权利要求5所述的任务堆栈的管理方法,其特征在于,将所述第一活动页面记录从所述第一任务堆栈中移动到,为所述目标应用执行业务操作所创建的且ID为所述第一ID的第二任务堆栈中之后,所述任务堆栈的管理方法还包括:
检测到所述第一活动页面的标记位包括第三预设标记,或者在所述第一活动页面的启动模式为站内复用模式,或者所述第一活动页面的启动模式为单实例模式的情况下:若所述第一活动页面记录未处于所述第二任务堆栈的栈顶,则将所述第二任务堆栈中,位于所述第一活动页面记录之上的活动页面记录,从所述第二任务堆栈中出栈。
8.一种任务堆栈的管理装置,其特征在于,所述任务堆栈的管理装置包括:
监测模块,被配置为监测目标应用的活动页面的状态;
第一出栈处理模块,被配置为在监测到第一活动页面处于暂停状态,且所述第一活动页面正在退出的情况下,将所述第一活动页面的第一活动页面记录从当前所处的第一任务堆栈中出栈;
其中,所述第一活动页面为所述目标应用的活动页面中的其中一个,所述第一任务堆栈是为所述目标应用执行业务操作创建的。
9.一种终端,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行以实现如权利要求1至7中任一项所述的任务堆栈的管理方法所执行的操作。
10.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由终端的处理器执行时,使得终端能够实现如权利要求1至7中任一项所述的任务堆栈的管理方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010231583.4A CN111538574B (zh) | 2020-03-27 | 2020-03-27 | 任务堆栈的管理方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010231583.4A CN111538574B (zh) | 2020-03-27 | 2020-03-27 | 任务堆栈的管理方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538574A true CN111538574A (zh) | 2020-08-14 |
CN111538574B CN111538574B (zh) | 2024-03-12 |
Family
ID=71978449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010231583.4A Active CN111538574B (zh) | 2020-03-27 | 2020-03-27 | 任务堆栈的管理方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538574B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463518A (zh) * | 2020-11-05 | 2021-03-09 | 广州博恒信息科技有限责任公司 | 基于Flutter的页面全生命周期监控方法、装置、设备及存储介质 |
CN113434796A (zh) * | 2021-06-24 | 2021-09-24 | 青岛海尔科技有限公司 | 页面缓存的操作方法及装置、存储介质及电子装置 |
CN116466953A (zh) * | 2023-03-03 | 2023-07-21 | 港珠澳大桥管理局 | 组件化的前端开发方法、装置、计算机设备和存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11134204A (ja) * | 1997-10-29 | 1999-05-21 | Hitachi Ltd | スタック保護装置 |
CN103902359A (zh) * | 2014-03-31 | 2014-07-02 | 深圳创维-Rgb电子有限公司 | 基于Android系统内存优化与应用调度方法及系统 |
CN104182686A (zh) * | 2013-05-23 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种Android系统Activity劫持风险检测方法及装置 |
US20150277977A1 (en) * | 2014-04-01 | 2015-10-01 | Samsung Electronics Co., Ltd. | Method and system for providing stack memory management in real-time operating systems |
WO2016095728A1 (zh) * | 2014-12-16 | 2016-06-23 | 阿里巴巴集团控股有限公司 | 一种多窗口显示方法及装置 |
CN105955748A (zh) * | 2016-05-06 | 2016-09-21 | 青岛海信电器股份有限公司 | 应用程序的返回场景处理方法及装置 |
CN107402781A (zh) * | 2017-06-26 | 2017-11-28 | 努比亚技术有限公司 | 开屏页面显示管理方法、终端及计算机可读存储介质 |
CN107678780A (zh) * | 2017-10-26 | 2018-02-09 | 深圳乐信软件技术有限公司 | 一种内存管理方法、装置、存储介质及终端设备 |
CN108205427A (zh) * | 2016-12-16 | 2018-06-26 | 大连中科创达软件有限公司 | 一种基于Android系统的多屏幕控制方法及装置 |
CN108345480A (zh) * | 2017-01-23 | 2018-07-31 | 北京京东尚科信息技术有限公司 | 页面切换管理方法、装置和移动终端 |
CN109857489A (zh) * | 2017-11-30 | 2019-06-07 | 阿里巴巴集团控股有限公司 | 基于Android系统的开发系统、解耦方法和装置 |
CN110134481A (zh) * | 2019-05-20 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 一种页面处理方法、装置以及相关设备 |
-
2020
- 2020-03-27 CN CN202010231583.4A patent/CN111538574B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11134204A (ja) * | 1997-10-29 | 1999-05-21 | Hitachi Ltd | スタック保護装置 |
CN104182686A (zh) * | 2013-05-23 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种Android系统Activity劫持风险检测方法及装置 |
CN103902359A (zh) * | 2014-03-31 | 2014-07-02 | 深圳创维-Rgb电子有限公司 | 基于Android系统内存优化与应用调度方法及系统 |
US20150277977A1 (en) * | 2014-04-01 | 2015-10-01 | Samsung Electronics Co., Ltd. | Method and system for providing stack memory management in real-time operating systems |
WO2016095728A1 (zh) * | 2014-12-16 | 2016-06-23 | 阿里巴巴集团控股有限公司 | 一种多窗口显示方法及装置 |
CN105955748A (zh) * | 2016-05-06 | 2016-09-21 | 青岛海信电器股份有限公司 | 应用程序的返回场景处理方法及装置 |
CN108205427A (zh) * | 2016-12-16 | 2018-06-26 | 大连中科创达软件有限公司 | 一种基于Android系统的多屏幕控制方法及装置 |
CN108345480A (zh) * | 2017-01-23 | 2018-07-31 | 北京京东尚科信息技术有限公司 | 页面切换管理方法、装置和移动终端 |
CN107402781A (zh) * | 2017-06-26 | 2017-11-28 | 努比亚技术有限公司 | 开屏页面显示管理方法、终端及计算机可读存储介质 |
CN107678780A (zh) * | 2017-10-26 | 2018-02-09 | 深圳乐信软件技术有限公司 | 一种内存管理方法、装置、存储介质及终端设备 |
CN109857489A (zh) * | 2017-11-30 | 2019-06-07 | 阿里巴巴集团控股有限公司 | 基于Android系统的开发系统、解耦方法和装置 |
CN110134481A (zh) * | 2019-05-20 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 一种页面处理方法、装置以及相关设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463518A (zh) * | 2020-11-05 | 2021-03-09 | 广州博恒信息科技有限责任公司 | 基于Flutter的页面全生命周期监控方法、装置、设备及存储介质 |
CN113434796A (zh) * | 2021-06-24 | 2021-09-24 | 青岛海尔科技有限公司 | 页面缓存的操作方法及装置、存储介质及电子装置 |
CN113434796B (zh) * | 2021-06-24 | 2023-08-18 | 青岛海尔科技有限公司 | 页面缓存的操作方法及装置、存储介质及电子装置 |
CN116466953A (zh) * | 2023-03-03 | 2023-07-21 | 港珠澳大桥管理局 | 组件化的前端开发方法、装置、计算机设备和存储介质 |
CN116466953B (zh) * | 2023-03-03 | 2024-01-02 | 港珠澳大桥管理局 | 组件化的前端开发方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111538574B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6072362B2 (ja) | アプリケーションプログラムの処理方法、装置、プログラム及び記憶媒体 | |
CN105955765B (zh) | 应用预加载方法及装置 | |
CN111538574A (zh) | 任务堆栈的管理方法、装置、终端及存储介质 | |
CN104951335B (zh) | 应用程序安装包的处理方法及装置 | |
CN105468410B (zh) | 系统升级方法及装置 | |
CN112860145B (zh) | 一种应用的控制方法与电子设备 | |
EP3236355B1 (en) | Method and apparatus for managing task of instant messaging application | |
CN112506553A (zh) | 服务网格的数据面容器的升级方法、装置及电子设备 | |
CN109725943B (zh) | 一种程序跳转方法、装置、电子设备及存储介质 | |
CN113010157A (zh) | 一种代码生成方法及装置 | |
CN109901886B (zh) | 页面语言切换方法、系统、装置和计算机可读存储介质 | |
CN113360708B (zh) | 视频播放方法、装置、电子设备及存储介质 | |
CN112445484B (zh) | 一种寄存器处理方法、装置、电子设备及存储介质 | |
CN113568748A (zh) | 一种应用进程处理方法、装置、存储介质及电子设备 | |
CN114860242A (zh) | 一种编译方法、编译装置及存储介质 | |
CN112632184A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111787157A (zh) | 移动终端及其操作响应方法 | |
CN112083981A (zh) | 一种页面视图组件的创建方法和装置 | |
CN114115025B (zh) | 基于自动驾驶系统的故障信息的保存方法、装置和设备 | |
WO2023245368A1 (zh) | 应用控制方法、装置、电子设备以及存储介质 | |
CN110990068B (zh) | 一种显示方法、装置、电子设备及存储介质 | |
CN117131497B (zh) | 一种软件检测方法及电子设备 | |
CN110659081B (zh) | 用于程序对象的文件处理方法、装置及电子设备 | |
CN114077573A (zh) | 进程优化方法的步骤及装置、电子设备、存储介质 | |
CN114416085A (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 |