8.活动的启动模式

这个知识点,可以先不了解,但是了解了后,可以加深对Activity的理解,以前觉得理论太多,就草草看了一遍,并没有影响后面的学习,但是,倒回来看的时候,才发现真的很有意思,比如在这个系列的笔记中的第4篇中数据的传输就说到一些问题。

开始学习前要先知道:
1.安卓中的返回栈,先进后出,都知道吧,活动就是放在返回栈中管理的。
2.在哪里设置Activity的启动模式,在AndroidManifest.xml中,给
<activity>标签指定:android:luanchMode="xxx"来设置启动模式
3.指定了启动模式的Acitivity,才会以你指定的模式启动,不然就是默认模式启动
4.这里强调的是用Intent启动Acitvity,不是指重新唤醒Activity

一共四种:

1.standard
    默认启动模式,你不设置时的默认启动模式。
    该模式不管返回栈有没有一个活动的实例。
    在不在栈顶,都会创建一个新的活动。
    不信是吧?你在onCreate()方法中打印当前Activity的地址,然后用
    Intent再启动一次这个当前活动,你看看两次打印的一不一样

2.singleTop
    什么意思???当该活动在栈顶时就不会创建新的活动,不信??你继续试试。

3.singleTask
    这个就是真正的单一模式了,一个很强硬的模式。为什么?
    这个模式保证返回栈中不会有相同的活动实例,比如,MainAcitvity
    在该模式中时,返回栈中只会有一个。怎么强硬??处于栈顶还好说
    当不处于栈顶时,就会把返回栈中MainActivity之上的所有活动清掉
    想见识一下吗???我们知道,标准的模式中从活动A启动一个
    活动B,再从活动B启动一个活动A,如果这个过程你没有调用finish()
    方法,那么你就要按3次返回键才能退出程序,但是在singleTask就按一次

4.singleInstance
    这就厉害了,我们知道,每一个程序都有自己的返回栈来管理自己的Activity
    但是这个模式就会创建一个新的返回栈,来管理你用该模式的Activity
    使用的场景:假设我们的程序有一个活动要给其他程序使用,实现这个Activity
    和其他程序共同使用一个返回栈来管理这个活动,就可以这样写,这样就不用在两个程序
    的返回栈中又创建一个该活动。你可以打印当前返回栈的Id
    获取返回栈Id的方法:getTaskId();     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值