Android中使用返回栈管理activity,显示位于栈顶的activity,对于不同的activity可能会指定不同的启动模式。
activity有四种启动模式:standard、singleTop、singleTask、singleInstance。
standard
activity在未显式指定的情况下都是默认使用这种模式。在此模式中,每当启动一个新的activity时就会把它放入返回栈,不会在乎栈中是否已经存在此activity,每次都会生成新的实例。
singleTop
当发现启动的activity已经位于栈顶的时候就不再创建新实例,而是直接使用它。(如果不是位于栈顶,还是会新建一个实例)
singleTask
每次启动该activity时都会检查返回栈中是否存在该实例。如果存在就将此activity上的所有活动出栈。如果没有就创建该activity的新实例。
singleInstance
在此模式下会创建新的单独的返回栈,可以把该activity的实例共享给其他程序,不管哪个程序想要访问这个活动都共用一个返回栈。如图,activity1启动指定为singleInstance模式的activity2,activity2启动activity3,当返回时,activity3直接返回activity1然后才到activity2.
一键退出应用实现
一、设置一个专门的集合类管理所有activity
如设置一个ActivityCollector类:
|
|
二、设置一个父类嵌在原生父类和项目activity之间。
如设置一个BaseActivity类:
所有activity继承于这个BaseActivity,每次新建activity时都会向集合类内增加该activity。
退出
之后在无论什么地方只要调用
ActivityCollector.finishAll()
就可以直接退出了