安卓 Activity(2) 四大启动方式

极客学院安卓视频
理论部分 : (单词部分)

standard
singleTop
singleTask
singleInstance

代码部分: (配置XML文件)

        <activity
            android:name="com.example.jk_android1.MainActivity"
            android:label="@string/app_name"
            android:launchMode="standard" >`

可以看出来,这行代码就是设置启动方式的一个属性

android:launchMode="standard"

我们继续看下文正题

了解四大启动模式之前首先要明白两个内容
1.Activity栈:
2.Activity实例

理解部分:

正常情况下 : 一个APP只有一个栈,但是有多个实例, (栈是保持先进后出原则)
通俗的理解:一个软件,有一个叫栈的容器,装很多页面
先进后出的实际体验就是: 点击退出,逐个退,直接退,等等
这就是启动方式要管理的启动方式具体作用了

代码部分:

   text1.setText("Activity栈中任务ID:"+   getTaskId()+"\n" +
                 "Activity的实例地址Id:" + toString());

这样就比较直观了

standard (系统默认的)
特点: 只有一个栈,每一次跳转页面 ,都新建一个新的实例
singleTop
特点:只有一个栈,每一次跳转页面,看栈顶是否一致(如果一致不新建)
singleTask
特点: 只有一个栈, 每一次跳转页面,如果栈中有相同的页面,中间的实例直接摧毁
singleInstance
特点: 每次跳转都会创建一个新的栈,一个栈,一个实例,

重点:
“taskaffinity”页面的归属,如果 代码包名为进,这个就是出的意思

 <activity  
            android:name="UserFeedTwo"  
            android:launchMode="singleTask"  
            android:taskAffinity="com.testaffinity" >  
        </activity></span>  

参考官方回答:

参考疯狂讲义
这里写链接内容

Activity启动模式设置:

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

Activity的四种启动模式:

1. standard

    模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

2. singleTop

    如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

3. singleTask

    如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

4. singleInstance

    在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值