android_activity启动模式

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方法)

猜你喜欢

转载自blog.csdn.net/iamchan/article/details/84541117
今日推荐