8.活动的启动模式

来源:互联网 发布:银行核心业务系统数据 编辑:程序博客网 时间:2024/06/03 22:05

这个知识点,可以先不了解,但是了解了后,可以加深对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();