1.standard标准模式
这个就是咱们正常新建页面时候默认的
只要跳转新页面就新建一个activity
<activity
android:name=".ui.widget.IntentActivity"
android:theme="@style/OtherPage" />
A跳B B跳C C跳C C跳A
栈内顺序 ABCCA
2.singleTop 栈顶复用模式(一般都用这种)
比如一个activity(a)跳转到activity(a)就不会新建activity(a)
onCreate() onStart()方法都不会执行
但会执行onNewIntent()方法
如果跳转到一个新页面 就和 standard模式一样了 会新建activity
<activity android:name=".ui.widget.QiDongMoShiActivity"
android:theme="@style/OtherPage"
android:launchMode="singleTop"></activity>
(这个测试方法很简单 一个页面画两个按钮 一个跳本页 一个跳新的页面
重写两个方法onStart onNewIntent 看看回退页面是什么)
A跳B B跳C C跳C
栈内顺序 ABC(C会执行onNewIntent()方法)
A跳B B跳C C跳C C跳A
栈内顺序 ABCA(C会执行onNewIntent()方法)
3.SingleTask 栈内复用模式
这个模式挺凶的:
比如ABC三个activity a跳到b b跳c 栈底到栈顶abc 但是现在都是栈内复用模式 c再跳到a(a不会再创建复用) 但b c都会消失 因为他们在c的上面
如果c跳c跟singleTop一样 调用onNewIntent
A跳B B跳C C跳C
栈内顺序 ABC(C会执行onNewIntent()方法)
A跳B B跳C C跳C C跳A
栈内顺序 A(C会执行onNewIntent()方法)
一般栈底页面用这种模式 其余页面用栈顶复用模式
(1)跳转页面(没有创建过的):standard singleTop singleTask
(2)跳转页面(创建过的 不是本页):
需要创建:standard singleTop
不需要创建:singleTask(但是 在栈内 跳转页面 上面的页面都会被清除)
(3)跳转到本页面:
需要创建:standard
不需要创建:singleTop singleTask(create和start方法不会执行 会调用onNewIntent方法)