Android--Activity篇之启动模式

本文详细介绍了Android中Activity的四种启动模式:standard、singleTop、singleTask和singleInstance,并通过实例展示了不同启动模式下Activity的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android--Activity篇之启动模式

Activity的启动模式:

定义在AndroidManifest.xml 中,

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
            >
        <activity
           <span style="color:#cccccc;"> </span><span style="background-color: rgb(255, 153, 0);">android:launchMode="standard"</span>
            android:name="com.example.androidstudy.MainActivity"
            android:label="@string/app_name"
                >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

共分为四种启动模式:standard、singleTop、singleTask、singleInstance。

默认的启动模式为 standard。表示如果每次如果有一个Intent指向 standard 的启动模式的activity,就会被创建实例化,进入栈顶。

如图,Activity 的 由A -》 B 后,再去启动B,得到的Log是

INFO/LanchModel(2281): ActivityA

INFO/LanchModel(2281): ActivityB

INFO/LanchModel(2281): ActivityB


启动模式设置为 singleTop :表示如果栈顶是该Activity,则直接使用该实例。

本例将ActivityB 的LanchModel 设置为 android:launchMode="singleTop" 则启动的Log为 

INFO/LanchModel(2415): ActivityA

INFO/LanchModel(2415): to ActivityB

INFO/LanchModel(2415): ActivityB

INFO/LanchModel(2415): to ActivityB

由此当ActivtiyB 调用ActivityB的时候,由于B是出于栈顶的位置,所以没有重新创建实例,而是直接使用该栈顶的实例。


启动模式设置为 singleTask:表示如果在栈中存在该实例,则将其返回到栈顶,将其上面其他的活动销毁、出栈,执行ondestroy。

调用顺序 A-》B-》C-》-》A-》B

此时栈的顺序为


执行的Log顺序为

 


启动模式设置为 singleInstance:表示独立启动一个任务栈。

启动顺序为 A-》B-》C 然后 点返回 再点返回

结果为

当A启动B时,由于B的启动模式为singleInstance,将会启动一个新的栈,当从栈b启动C时,C位于栈a的顶,所以当C返回时,会先返回到A,再点击返回时,才会返回到栈b中的B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值