Activity加载模式

Activity的加载模式:android:launchMode

          1 standard( 默认处理 ) ,不会使用全新的 Task ,在同一个 Task ,每次都新建 Activity

         2singleTop,如果目标activity已经位于Task栈顶,系统不会创建新的目标activity实例;如果没有目标activity位于Task栈顶,新建一个目标activity放入Task的栈顶

    例;如果没有目标activity位于Task栈顶,新建一个目标activity放入Task的栈顶

    3singleTask,在同一个Task内只有一个实例activity

     1) 如果启动的activity不存在,系统会创建目标activity的实例,加入Task栈顶

     2) 如果启动的activity已经位于Task栈顶,不会重新创建目标activity的实例

     3) 如果启动的activity已经存在,不在Task栈顶,系统将会把位于该activity上面的所有activity移出Task栈,使目标activity变为栈顶元素

    4singleInstance,无论从哪个Task中启动目标activity,只会创建一个目标activity的实例,并会使用一个全新的Task栈来装载该activity实例。这种模式activity总位于           Task栈顶,Task只包含该activity

     1) 启动的目标activity不存在,会创建一个新Task,创建新目标activity的实例,并将它加入新Task栈顶

     2) 启动的目标activity存在,无论位于哪个应用程序中,无论位于哪个Task中,系统将会把activity所在的Task转到前台,显示目标activity

     3) Android:exported=”true”表明该activity可以被其他应用启动

示例:

1. 首先说standard模式,也就是默认模式,不需要配置launchMode

创建一个ActivityA,通过按钮启动ActivityATask中会有若干个ActivityA的实例,按后退键让若干个ActivityA的实例出栈,最后退出应用。

2. singleTop和standard模式,都会将intent发送新的实例(后两种模式不发送到新的实例,如果已经有了的话)不过,singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。上面的示例,如果将Activity的加载模式launchMode=singleTop,每次点击按钮启动ActivityA,不会创建ActivityA的实例,后退一次退出应用。

3. 上面两种模式,对应于ActivityA通过按钮启动ActivityB,两种模式的效果一样。

4. singleTask模式:singleTask模式和后面的singleInstance模式都是只创建一个实例的。intent到来,需要创建singleTask模式Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。上面的示例,如果将ActivityA的加载模式launchMode=singleTask,ActivityB的加载模式launchMode=standard,ActivityA通过按钮启动ActivityB,创建ActivityB的实例,ActivityB通过按钮启动ActivityA,不会创建ActivityA的实例,会使用原来的ActivityA的实例。

5. singleInstance模式:这个模式下的Activity单独在一个task栈中。这个栈只有一个Activity

上面的示例:ActivityA通过按钮启动ActivityB,创建ActivityB的实例,而ActivityA在一个栈中,ActivityB在一个栈中,ActivityB通过按钮启动ActivityA,又创建ActivityA的实例,这个实例会放入上一个ActivityA的栈中,按后退键的时候,又回到ActivityA的栈中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值