CN106598572B - 一种应用的退出方法及装置 - Google Patents
一种应用的退出方法及装置 Download PDFInfo
- Publication number
- CN106598572B CN106598572B CN201611024324.4A CN201611024324A CN106598572B CN 106598572 B CN106598572 B CN 106598572B CN 201611024324 A CN201611024324 A CN 201611024324A CN 106598572 B CN106598572 B CN 106598572B
- Authority
- CN
- China
- Prior art keywords
- interface
- application
- transparent
- transparent interface
- starting
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000006870 function Effects 0.000 claims description 23
- 230000006378 damage Effects 0.000 claims description 8
- 230000000994 depressogenic effect Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 24
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 125000006850 spacer group Chemical group 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/442—Shutdown
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种应用的退出方法及装置,该方法包括:在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;销毁所述透明界面,以关闭所述应用。本申请提供的方法和装置可以解决现有技术中退出安卓系统应用程序的方法,存在的完全退出与内存泄漏不能兼顾的技术问题。实现了兼顾应用的完全退出和避免内存泄漏的技术效果。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用的退出方法及装置。
背景技术
在安卓Android开发过程中,特别是应用开启界面比较多的情况下,常见的退出方式往往是不能完全退出这个应用的所有界面,如果应用不能够完全退出,依旧在内存中存在,占据着内存空间,就会造成系统资源的浪费。
现有的常用手段去完全退出应用的方法是,在应用程序里面开启单例的集合List<Activity>管理容器,每次Android系统中打开应用程序的界面Activity时,就把当前Activity加入到容器中,在需要完全退出时,就循环遍历该容器以关闭掉每个Activity,即达到完全退出应用的功能。
虽然这种退出方式能够达到完全退出的目的,但维护集合是一个很复杂的过程,并且由于集合持有Activity的引用,会导致内存泄漏的问题。
可见,现有技术中退出安卓系统应用程序的方法,存在完全退出与内存泄漏不能兼顾的技术问题。
发明内容
本发明提供一种应用的退出方法及装置,用以解决现有技术中退出安卓系统应用程序的方法,存在的完全退出与内存泄漏不能兼顾的技术问题。
第一方面,本发明实施例提供了一种应用的退出方法,包括:
在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;
启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;
当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;
销毁所述透明界面,以关闭所述应用。
可选的,所述应用为基于安卓系统的应用。
可选的,在所述启动透明界面之前,还包括:接收到用于开启的所述应用的开启操作后,启动用于过渡到所述主界面的引导界面;销毁所述引导界面,以为所述透明界面预留所述系统栈存储的底部位置。
可选的,所述销毁所述引导界面之后,还包括:获取系统内存的当前剩余空间量;当所述当前剩余空间量小于预设阈值时,回收所述引导界面消耗的系统资源。
可选的,所述启动所述应用的主界面之后,还包括:启动第一界面,以将所述主界面压至所述系统栈存储中位于所述透明界面和所述第一界面之间的位置;所述启动所述透明界面,包括:启动所述透明界面以将所述系统栈存储中,位于所述透明界面之上的界面全部弹出。
可选的,所述主界面被标记为标准启动模式。
可选的,所述销毁所述透明界面,包括:调用销毁函数finish来销毁所述透明界面。
第二方面,提供一种应用的退出装置,包括:
第一启动模块,用于接收到用于开启的所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;
第二启动模块,用于启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;
第三启动模块,用于当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;
第一销毁模块,用于销毁所述透明界面,以关闭所述应用。
可选的,所述装置还包括:第四启动模块,用于接收到用于开启的所述应用的开启操作后,启动用于过渡到所述主界面的引导界面;第二销毁模块,用于销毁所述引导界面,以为所述透明界面预留所述系统栈存储的底部位置。
可选的,所述第二启动模块还用于:启动第一界面,以将所述主界面压至所述系统栈存储中,位于所述透明界面和所述第一界面之间的位置;所述第三启动模块还用于:启动所述透明界面以将所述系统栈存储中,位于所述透明界面之上的界面全部弹出。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例提供的方法及装置,在启动应用的主界面之前,先启动单任务启动模式的透明界面,以使得在主界面启动后,能将所述透明界面压入所述应用的系统栈存储的底部,在需要退出应用时,由于所述透明界面为单任务启动模式,故只需要启动所述透明界面就会将系统栈存储中位于所述透明界面之上的所有界面弹出,再销毁所述透明界面就能实现应用的完全退出,且由于不需要开启单独的集合来持有每个界面Activity的引用,从而避免内存泄漏的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中应用的退出方法的流程图;
图2为本发明实施例中应用的退出实例的流程图;
图3为本发明实施例中应用的退出实例的示意图;
图4为本发明实施例中应用的退出装置的结构示意图。
具体实施方式
本申请实施例通过提供一种应用的退出方法及装置,解决了现有技术中退出安卓系统应用程序的方法,存在的完全退出与内存泄漏不能兼顾的技术问题。实现了兼顾应用的完全退出和避免内存泄漏的技术效果。
本申请实施例中的技术方案,总体思路如下:
在接收到用于开启的所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;销毁所述透明界面,以关闭所述应用。
上述方法通过在启动应用的主界面之前,先启动单任务启动模式的透明界面,以使得在主界面启动后,能将所述透明界面压入所述应用的系统栈存储的底部,在需要退出应用时,由于所述透明界面为单任务启动模式,故只需要启动所述透明界面就会将系统栈存储中位于所述透明界面之上的所有界面弹出,再销毁所述透明界面就能实现应用的完全退出,且由于不需要开启单独的集合来持有Activity的引用,从而避免内存泄漏的问题。。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种应用的退出方法,请参考图1,所述方法包括:
步骤S101,在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;
步骤S102,启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;
步骤S103,当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;
步骤S104,销毁所述透明界面,以关闭所述应用。
需要说明的是,所述方法是基于Android系统的应用退出方法,在Android系统中启动应用时,会将应用中开启的尚未销毁的界面放入系统栈存储中,其中,最先开启的界面会位于所述系统栈存储的底部,界面按启动由先至后的顺序,沿所述系统栈存储的栈底往栈顶排列。
还需要说明的是,Android系统中有四种界面启动模式:
一是,标准standard启动模式,standard模式是默认的启动模式,不为界面配置启动模式属性时即默认为该启动模式,当然也可以将界面指定为standard启动模式。standard模式是所启动的界面都是在同一个系统栈存储下。先压入栈的界面Activity实例按顺序入栈底,后入栈在栈顶,处于栈的顶部Activity实例处于活动状态,其他处于非活动状态。
二是,单顶singleTop启动模式,当启动标记为该模式的实例化Activity时,如果系统栈存储的栈顶存在已经激活的Activity实例,就会重用当前栈顶的Activity实例,否则,singleTop启动模式会创建新的目标Activity实例。
三是,单任务singleTask启动模式,当启动标记为该模式的目标Activity实例时,不管目标实例处于栈的任何位置,是栈顶也好,栈底也好,还是处于栈中间,只要该目标Activity实例处于系统栈存储中,都可以重用该Activity实例对象,然后,把处于该Activity实例对象上面全部Activity实例弹出清除掉。
四是,单实例singleInstance启动模式,该模式可以共享某个Activity。比如,应用1的系统栈存储中创建了MainActivity实例,应用2也要激活MainActivity,则不需要创建MainActivity实例,直接可以共用MainActivity实例。
在本申请实施例中,创造性的设置一标识为singleTask启动模式的透明界面,并在启动主界面前启动该透明界面,以使透明界面位于该应用的系统栈存储的底部,巧妙地借助singleTask启动模式的界面在启动时能自动将其上方的Activity弹出的特点,通过启动透明界面来清除位于透明界面之上的所有界面,以实现只需启动并销毁透明界面就能实现应用所有界面资源的退出和释放。
下面,结合图1和图2对本申请提供的应用的退出方法进行详细介绍:
首先,执行步骤S101,在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式。
考虑到在具体实施过程中,大部分应用开启时会有一引导界面,该引导界面主要功能是处理启动时候的初始化的操作,或为了后期运营广告预留占位的。通常应用程序引导界面只是在第一次启动的时候才会有。由于所述引导界面只需要出现一次,故在本申请实施例中可以设置:
在接收到用于开启的所述应用的开启操作后,先启动用于过渡到所述主界面的引导界面;再销毁所述引导界面,以为所述透明界面预留所述系统栈存储的底部位置;然后在启动所述透明界面。具体销毁所述引导界面的方法可以是调用activity中的finish函数的方法,这个方法主要功能是用于销毁当前activity。
在具体实施过程中,由于销毁引导界面后,系统并不会立即进行销毁资源的回收,为了提高后续开启所述透明界面的速度,可以设置所述销毁所述引导界面之后,还包括:获取系统内存的当前剩余空间量;当所述当前剩余空间量小于预设阈值时,回收所述引导界面消耗的系统资源。
具体来讲,所述系统内存的当前剩余空间量的获取方法可以是,先通过mContext.getSystemService(Context.ACTIVITY_SERVICE)函数获取系统的ActivityManager管理类,该函数主要功能即是向Android系统获取到ActivityManager的管理实例。再通过ActivityManager获取到内存相关的信息,具体获取方法是通过ActivityManager.MemoryInfo()函数返回一个MemoryInfo(内存相关信息的描述)的实例。再通过MemoryInfo调用getTotalMem就能够获取到内存标记为totalMem。然后,通过调用getAvailMem来获取到当前可用内存空间,标记为availMem。最后,用availMem除以totalMem就可以计算出剩余内存百分比,即所述当前剩余空间量。
当通过对比所述当前剩余空间量和预设阈值,确定出系统资源比较紧张时,可以调用系统的GC函数,通知系统进行紧急回收,这样系统就会立即释放回收系统内存资源,这样就能够加快后续所述透明界面出现的速度。
可见,由于启动所述引导界面后第一个启动的就是所述透明界面,并且在启动所述透明界面之前就将所述引导界面给销毁掉了。所以所述透明界面会存在系统栈存储的最下面。这也为后面进行销毁操作做好了铺垫。
当然,在具体实施过程中,也可以设置所述透明界面在所述引导界面启动之前启动,这样不需要销毁引导界面,即可保证所述透明界面位于所述系统栈存储的底部。
另外在具体实施过程中,也存在应用开启时没有引导界面的情况,此时,只需在开启所述主界面之前开启所述透明界面,以保证所述透明界面位于所述系统栈存储的底部。
在本申请实施例中,所述透明界面被预先设置为全透明显示状态的界面,一方面,由于为全透明,故其启动不会影响其他界面的显示;另一方面,所述透明界面上面没有任何控件资源,所以对内存的占用几乎可以忽略不计,对系统产生的额外开销非常小。
在具体实施过程中,将所述透明界面标记为单任务SingleTask启动模式,可以是在AndroidManifest.xml文件中进行声明的,具体标记方式是设置android:launchMode=”SingleTask”,这样系统在启动所述透明界面的时候就会按照SingleTask的方式去启动所述透明界面。
然后,执行步骤S102,启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列。
具体来讲,在透明界面执行完oncreate函数,即启动完成后,会立即启动所述主界面,由于所述透明界面最先启动,故会被压入系统栈存储的底部。其中,Oncreate函数是Android系统中界面的生命周期函数,这个函数是系统在启动一个界面的时候进行调用的。由于所述透明界面是没有界面资源的,所以启动速度非常快,并且在一启动之后立即去启动主界面,用户无法感知所述透明界面的存在,给用户的体验是系统直接进入到所述主界面中,根本察觉不到有进入透明界面的过程,以保证用户体验。
在用户使用应用程序的过程中,除了开启主界面,还会开启其他的界面,即所述启动所述应用的主界面之后,还包括:启动第一界面、第二界面和/或第三界面,但由于所述透明界面的启动时间是先于所述主界面及后续启动的第一界面、第二界面和/或第三界面的,故在所述系统栈存储中,所述透明界面始终位于最底部,以为后续将所述应用的全部界面均弹出消除掉作准备。
在本申请实施例中,所述主界面和/或后续开启的其他界面均可以默认或被标记为标准standard启动模式,也可以为其他启动模式,在此不作限制。
再下来,执行步骤S103,当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储。
在具体实施过程中,所述关闭操作可以是点击应用程序界面上预设的退出标识的操作,也可以是触发电子设备的后退键的操作,在此不作限制。
具体来讲,当接收到用于关闭所述应用的关闭操作后,会基于开发人员预设的关联性触发启动所述透明界面,而由于所述透明界面是存放在所述系统栈存储的最下面,并且所述透明界面的启动模式被预先标记为SingleTask模式,故当启动所述透明界面的时候,系统会主动将所述系统栈存储中位于所述透明界面上的所有界面自动弹出栈,再将所述透明界面显示在当前界面中。而由于所述透明界面为透明状,用户会直接观测到电子设备操作系统的主界面。
为了区分在开启应用时启动所述透明界面和退出应用时启动所述透明界面的不同,可以在接收到用于关闭所述应用的关闭操作后,通过Android中的Intent对象将关闭命令传递到所述透明界面去。在Intent中预先封装closeFlag标志,即将该标志存储为true并且封装到Intent中。具体封装方式是通过调用Intent的putExtra(”closeFlag”,true)函数来实现的,这个函数主要功能是将closeFlag的值true存储在Intent对象中。
再下来,执行步骤S104,销毁所述透明界面,以关闭所述应用。
具体来讲,在退出所述应用的过程中,启动所述透明界面时,会解析启动传递过来的Intent对象,具体解析是通过getExtra函数来获取Intent中的值,通过调用Intent中的getExtra(“closeFlag”)来获取启动的Intent对象中的值。如果获取到的值是真,则认为是需要退出应用程序,就会直接调用销毁函数finish,来对所述透明界面进行销毁。由于所述透明界面此时为所述应用的最后一个界面,故销毁所述透明界面后,所述应用实现完全退出。
具体来讲,本申请在启动主界面之前启动标识为单任务启动模式的透明界面,以使所述透明界面始终位于所述应用的系统栈存储的底部,巧妙应用单任务启动模式能弹出位于上方的所有界面的特性,实现不需要预设集合去持有Activity的引用,就可以完全退出应用,达到完全退出的目的,有效避免内存泄漏问题。
在介绍了本申请提供的应用的退出方法的具体实施步骤后,为了便于更形象的理解本申请提供的方法,下面结合图2和图3,以一具体实例来说明本申请提供的方法:
如图2的流程所示,当接收到开启第一应用的开启操作时,首先执行步骤S201启动引导界面,再执行步骤S202销毁所述引导界面;接下来执行步骤S203启动标识为SingleTask模式的透明界面A;然后,执行步骤S204启动主界面B,将透明界面A压到栈底部;
然后,用户在使用所述第一应用的过程中,又先后启动了界面C和界面D,使得所述第一应用的系统栈存储中按图3中301列所示的顺序排布,其中,图3中的箭头303表示栈顶至栈底的方向;
当接收到用于关闭所述应用的关闭操作后,执行步骤S205启动所述透明界面A,以将所述主界面B、界面C和界面D弹出所述系统栈存储,使得所述第一应用的系统栈存储中按图3中302列所示的顺序排布;再执行步骤S206关闭并释放所述透明界面A,实现完全退出所述第一应用。
基于同一发明构思,本发明实施例还提供了实施例一中方法对应的装置,见实施例二。
实施例二
本实施例提供了一种应用的退出装置,请参考图4,所述装置包括:
第一启动模块401,用于在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;
第二启动模块402,用于启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;
第三启动模块403,用于当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;
第一销毁模块404,用于销毁所述透明界面,以关闭所述应用。
在具体实施过程中,所述装置可以为智能手机、平板等,在此不作限制。
在本申请实施例中,所述电子设备还包括:
第四启动模块,用于在接收到用于开启的所述应用的开启操作后,启动用于过渡到所述主界面的引导界面;
第二销毁模块,用于销毁所述引导界面,以为所述透明界面预留所述系统栈存储的底部位置。
在本申请实施例中,所述第二启动模块402还用于:启动第一界面,以将所述主界面压至所述系统栈存储中,位于所述透明界面和所述第一界面之间的位置;
所述第三启动模块403还用于:启动所述透明界面以将所述系统栈存储中,位于所述透明界面之上的界面全部弹出。
由于本发明实施例二所介绍的装置,为实施本发明实施例一的应用的退出方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供的方法及装置,在启动应用的主界面之前,先启动单任务启动模式的透明界面,以使得在主界面启动后,能将所述透明界面压入所述应用的系统栈存储的底部,在需要退出应用时,由于所述透明界面为单任务启动模式,故只需要启动所述透明界面就会将系统栈存储中位于所述透明界面之上的所有界面弹出,再销毁所述透明界面就能实现应用的完全退出,且由于不需要开启单独的集合来持有每个界面Activity的引用,从而避免内存泄漏的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种应用的退出方法,其特征在于,包括:
在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;
启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;
当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;
销毁所述透明界面,以关闭所述应用。
2.如权利要求1所述的方法,其特征在于,所述应用为基于安卓系统的应用。
3.如权利要求1所述的方法,其特征在于,在所述启动透明界面之前,还包括:
在接收到用于开启的所述应用的开启操作后,启动用于过渡到所述主界面的引导界面;
销毁所述引导界面,以为所述透明界面预留所述系统栈存储的底部位置。
4.如权利要求3所述的方法,其特征在于,所述销毁所述引导界面之后,还包括:
获取系统内存的当前剩余空间量;
当所述当前剩余空间量小于预设阈值时,回收所述引导界面消耗的系统资源。
5.如权利要求1所述的方法,其特征在于:
所述启动所述应用的主界面之后,还包括:启动第一界面,以将所述主界面压至所述系统栈存储中位于所述透明界面和所述第一界面之间的位置;
所述启动所述透明界面,包括:启动所述透明界面以将所述系统栈存储中,位于所述透明界面之上的界面全部弹出。
6.如权利要求1所述的方法,其特征在于,所述主界面被标记为标准启动模式。
7.如权利要求1-6任一所述的方法,其特征在于,所述销毁所述透明界面,包括:
调用销毁函数finish来销毁所述透明界面,其中,所述销毁函数finish为安卓系统提供的函数。
8.一种应用的退出装置,其特征在于,包括:
第一启动模块,用于在接收到用于开启所述应用的开启操作后,启动透明界面;其中,所述透明界面显示为透明状态;所述透明界面被标记为单任务启动模式;
第二启动模块,用于启动所述应用的主界面,以将所述透明界面压入系统栈存储的底部,其中,在所述系统栈存储中,界面按启动由先至后的顺序,沿栈底往栈顶排列;
第三启动模块,用于当接收到用于关闭所述应用的关闭操作后,启动所述透明界面,以将所述主界面弹出所述系统栈存储;
第一销毁模块,用于销毁所述透明界面,以关闭所述应用。
9.如权利要求8所述的装置,其特征在于,还包括:
第四启动模块,用于在接收到用于开启的所述应用的开启操作后,启动用于过渡到所述主界面的引导界面;
第二销毁模块,用于销毁所述引导界面,以为所述透明界面预留所述系统栈存储的底部位置。
10.如权利要求8所述的装置,其特征在于:
所述第二启动模块还用于:启动第一界面,以将所述主界面压至所述系统栈存储中,位于所述透明界面和所述第一界面之间的位置;
所述第三启动模块还用于:启动所述透明界面以将所述系统栈存储中,位于所述透明界面之上的界面全部弹出。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611024324.4A CN106598572B (zh) | 2016-11-17 | 2016-11-17 | 一种应用的退出方法及装置 |
PCT/CN2017/075726 WO2018090506A1 (zh) | 2016-11-17 | 2017-03-06 | 一种应用的退出方法及装置 |
US15/750,176 US10565105B2 (en) | 2016-11-17 | 2017-03-06 | Method and apparatus for logging out of application |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611024324.4A CN106598572B (zh) | 2016-11-17 | 2016-11-17 | 一种应用的退出方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106598572A CN106598572A (zh) | 2017-04-26 |
CN106598572B true CN106598572B (zh) | 2018-08-03 |
Family
ID=58592314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611024324.4A Active CN106598572B (zh) | 2016-11-17 | 2016-11-17 | 一种应用的退出方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10565105B2 (zh) |
CN (1) | CN106598572B (zh) |
WO (1) | WO2018090506A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168875B (zh) * | 2017-05-15 | 2020-07-03 | 南京大学 | 一种基于安卓应用多入口特性的Activity构件泄露检测方法 |
CN107566879A (zh) * | 2017-08-08 | 2018-01-09 | 武汉斗鱼网络科技有限公司 | 一种应用视图框的管理方法、装置及电子设备 |
CN108595281B (zh) * | 2018-04-26 | 2021-09-07 | Oppo广东移动通信有限公司 | 活动对象处理方法、装置、存储介质及终端 |
CN108920247B (zh) * | 2018-07-20 | 2022-04-29 | 腾讯科技(深圳)有限公司 | 页面切换的处理方法、装置及终端、存储介质、程序产品 |
CN113448651B (zh) * | 2021-08-31 | 2021-12-14 | 北京鲸鲮信息系统技术有限公司 | 一种应用单例功能的实现方法和装置 |
CN117687707A (zh) * | 2022-09-02 | 2024-03-12 | 华为技术有限公司 | 一种应用热启动方法及电子设备 |
CN116737037A (zh) * | 2022-09-29 | 2023-09-12 | 荣耀终端有限公司 | 界面显示中的栈管理方法及相关装置 |
CN116302291B (zh) * | 2023-05-11 | 2023-10-20 | 荣耀终端有限公司 | 应用显示方法、电子设备以及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260845B2 (en) * | 2001-01-09 | 2007-08-21 | Gabriel Kedma | Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems |
US8884983B2 (en) * | 2008-06-30 | 2014-11-11 | Microsoft Corporation | Time-synchronized graphics composition in a 2.5-dimensional user interface environment |
CN102063302B (zh) * | 2010-12-20 | 2014-07-02 | 北京握奇数据系统有限公司 | 窗口管理方法、系统及终端 |
CN103577753B (zh) * | 2012-08-01 | 2017-07-25 | 联想(北京)有限公司 | 一种提示伪装应用隐患的方法和电子设备 |
CN104484223B (zh) * | 2014-12-16 | 2018-02-16 | 北京奇虎科技有限公司 | 一种安卓系统应用关闭方法和装置 |
CN105760038A (zh) * | 2014-12-16 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种多窗口显示方法及装置 |
CN105363200B (zh) * | 2015-10-28 | 2019-04-23 | 网易(杭州)网络有限公司 | 一种道具添加方法、装置及系统 |
CN105404589B (zh) * | 2015-10-29 | 2019-04-30 | 天脉聚源(北京)教育科技有限公司 | 一种垃圾回收方法及装置 |
CN105808447B (zh) * | 2016-03-29 | 2019-01-29 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
-
2016
- 2016-11-17 CN CN201611024324.4A patent/CN106598572B/zh active Active
-
2017
- 2017-03-06 US US15/750,176 patent/US10565105B2/en not_active Expired - Fee Related
- 2017-03-06 WO PCT/CN2017/075726 patent/WO2018090506A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2018090506A1 (zh) | 2018-05-24 |
CN106598572A (zh) | 2017-04-26 |
US10565105B2 (en) | 2020-02-18 |
US20190004830A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106598572B (zh) | 一种应用的退出方法及装置 | |
CN107193577A (zh) | 一种应用启动方法、装置和智能终端 | |
CN108376094B (zh) | 通知消息显示方法、装置、计算机设备和存储介质 | |
CN108459898A (zh) | 一种资源回收方法及装置 | |
CN103729235A (zh) | Java虚拟机的编译方法和Java虚拟机 | |
WO2017167126A1 (zh) | 一种窗口显示方法、信息交互方法及系统 | |
CN109582385A (zh) | 应用程序启动方法和装置、存储介质及电子设备 | |
CN104298434B (zh) | 一种信息处理方法及电子设备 | |
US20220374219A1 (en) | Deployment of service | |
CN116149797B (zh) | 面向异构场景的ai统一计算方法、装置、设备及介质 | |
CN104239131A (zh) | 一种关闭应用程序的方法及装置 | |
CN116774809A (zh) | 调整频率的方法、装置、电子设备及可读存储介质 | |
CN107102846A (zh) | 一种应用程序界面显示方法及终端 | |
WO2015176422A1 (zh) | 一种基于安卓系统的应用管理方法及其装置 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN107820605A (zh) | 用于动态低延迟优化的系统和方法 | |
CN112604273B (zh) | 数据驱动的游戏系统功能加载方法、设备及存储介质 | |
US20240143350A1 (en) | Rules Based User Interface Generation | |
CN106201490A (zh) | 一种优化应用程序运行的方法及装置 | |
CN106874063A (zh) | 一种资源回收方法及装置 | |
CN105446760B (zh) | 用于应用安装的方法和装置 | |
CN104778087B (zh) | 一种信息处理方法以及信息处理装置 | |
CN109542672A (zh) | 用于回收快照存储空间中的存储块的方法和装置 | |
CN109086099A (zh) | 一种启动虚拟机的方法、装置、设备以及存储介质 | |
CN112650490B (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231108 Address after: Room 606-609, Compound Office Complex Building, No. 757, Dongfeng East Road, Yuexiu District, Guangzhou, Guangdong Province, 510699 Patentee after: China Southern Power Grid Internet Service Co.,Ltd. Address before: 430000, 11th Floor, Building B1, Phase 4.1, Software Industry, No. 1 Software Park East Road, Hu Development Zone, Wuhan City, Hubei Province Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |