0
点赞
收藏
分享

微信扫一扫

Activity四种启动模式-android


Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);

1,默认 standard

​<activity android:name=".MainActivity" android:launchMode="standard">​

Activity四种启动模式-android_任务栈


会生成新的activity在栈中

2,singleTop

​<activity android:name=".MainActivity" android:launchMode="singleTop">​

​<activity android:name=".SecondActivity" />​

Activity四种启动模式-android_切换动画_02


当activity在栈顶的时候不会生成新的实例, 不在栈顶时会生成

3, singleTask

​<activity android:name=".MainActivity" android:launchMode="singleTask">​

​<activity android:name=".SecondActivity" />​

Activity四种启动模式-android_切换动画_03


从下面的日志可以看到,当activity在栈顶的时候不会生成新的activity实例,当不在栈顶时栈顶的activity向其跳转会将其上方的activity弹出,使其重回栈顶,所以上图点返回的时候退出了app,因为当前栈中只有这一个activity

4, singleInstance

​<activity android:name=".MainActivity" android:launchMode="singleTask"> <activity android:name=".SecondActivity" />​

​<activity android:name=".ThirdActivity" android:launchMode="singleInstance" />​

Activity四种启动模式-android_切换动画_04


该模式会在一个新栈中生成,不同栈切换动画与同栈内切换动画不同,

不同的Activity 处于不同栈中

① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。

② 如果此时Aty2的实例还未被创建,则创建的Aty2的实例时会存放到一个新的任务栈中。

③ 如果此时Aty1的实例已存在且我们在Aty2的页面中创建新的Aty1实例时,则不会创建新的Aty1实例,而是页面跳转到原来任务栈中存在的Aty1的实例,但存放Aty2实例的任务栈仍然存在

当点返回键的时候,便会依次销毁相应的任务栈,直至任务栈数为空则退回到系统桌面。

​​参考​​


举报

相关推荐

0 条评论