理解Activity的启动模式

2018-07-24  本文已影响0人  Leon_w

1、Activity的启动模式有哪几种,分别用于什么场景?

activity的启动模式分为4种 standard 标准模式, singleTop 栈顶复用模式,singleTask栈内复用模式,SingleInstance 单实例模式
使用方式:在AndroidManifest 配置文件中配置

      <activity android:name=".MainActivity"
            android:launchMode="standard">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

standard 标准模式:

说明: standard 是Activity 的标准模式,如果在AndroidManifests 没有写启动模式,则默认为standard 模式.每次启动一个Activity都会又一次创建一个新的实例入栈,无论这个实例是否存在
生命周期: standard 启动的Activity,生命周期为正常的生命周期 :onCreate, onStart,onpash,onStop,onDestory
举例: 目前有ABC三个Activity A在栈顶,则此时需求启动A 会按照正常的生命周期 不会复用栈顶,而是会重新启动一个A

singleTop 栈顶复用模式:

说明: singletop 的意思是复用栈顶的Activity,如果启动栈顶的Activity 不用重复创建Activity,如果该Activity已经存在但不是在栈顶,则该Activity会被重新创建
生命周期: singletop 的生命周期,如果Activity在栈顶则不用调用onCreate ,onStart .其余非在栈顶的是正常的生命周期
举例: 目前有ABC三个Activity A在栈顶,则此时的需求是启动A ,不会走onCreate,onstart.如果A不在栈顶,b在栈顶,b启动A则A是正常的生命周期

singleTask 栈内复用模式

说明:Activity在该模式下启动,实际启动的是一种单例的模式.singleTask模式下启动分为两种状态.1.启动singleTask下的Activity如果他找的任务栈存在,则activity 会像singletop一样复用这个Activity 不会调用它的onCreate,onStart .并拿到栈顶.2.如果他找的任务栈不存在的话,它会重新创建一个Activity 这时候的Activity是正常的生命周期
生命周期: 启动singleTask下的Activity如果他找的任务栈存在,则activity 会像singletop一样复用这个Activity 不会调用它的onCreate,onStart .并拿到栈顶.如果他找的任务栈不存在的话,它会重新创建一个Activity 这时候的Activity是正常的生命周期
举例: 下面有一个s1的任务栈.该任务栈里面有ABC三个Activity

上一篇 下一篇

猜你喜欢

热点阅读