Activity的启动模式有4种,分别是standard,singleTop,SingleTask.,singleInstance,可以在AndroidMainifest.xml文件中指定每一个Activity的启动模式。
android:launchMode="standard",android:launchMode="singleTop",
android:launchMode="SingleTask",android:launchMode="singleInstance"
一个Android应用一般都会有多个Activity,系统会通过任务栈来管理这些Activity,栈是一种后进先出的集合,当前的Activity就在栈顶,按返回键,栈顶Activity就会退出。Activity启动模式不同,系统通过任务栈管理Activity的方式也会不同。
1,standard常用的启动方式,只要启动此activity就会新创建一个activity,无论栈中是否存在,都会创建一个activity
2,singleTop,当一个singleTop模式的Activity已经位于任务栈的栈顶,再去启动它时,不会再创建新的实例,如果不位于栈顶,就会创建新的实例。我们创建3个activity。1启动2,2在启动3。
此时,1在最栈底,2其次,3在栈顶。此时3启动3时,由于3在栈顶,则复用3,如图:
如果3启动1时,此时会出现4个activity,栈顶的是1,一次是3,2,1,按返回键的时候,可以看见1销毁了2次,证明了确实没有复用1,而是创建了新的1.如图:
3,SingleTask:,如果Activity已经位于栈顶,系统不会创建新的Activity实例,和singleTop模式一样,如果不位于栈顶时,系统就会把该Activity移到栈顶,并把它上面的activity出栈。
我们依次创建3个activity,1在最栈底,2其次,3在栈顶。此时3启动3时,由于3在栈顶,则复用3
如果3启动1时,1不在栈顶,但是存在,则复用1,但是2和3就会被销毁。
4,singleInstance:是单例的,但和singleTask不同,singleTask只是任务栈内单例,系统里是可以有多个singleTask Activity实例的,而singleInstance Activity在整个系统里只有一个实例,启动一singleInstanceActivity时,系统会创建一个新的任务栈,并且这个任务栈只有他一个Activity。但是此方式不常用。