您的位置:首页 > 其它

Activity的四种加载模式

2015-05-23 19:40 141 查看
什么是Task?

Activity在堆栈中以Task的形式聚集在一起
1.)Task由一系列相关的Activity组成,描述用户完成某一个操作所需要的Activity

2.)当我们从Launcher上点击一个应用图标的时候,就启动一个Task
3.)Task是用Android多任务的一种体现

Activity堆栈由ActivityManagerService维护
Android采用Task来管理多个Activity。





图1.Task

Android采用Task来管理多个Activity。如上图,

当我们启动App的时候,Android就会为我们创建一个Task,并且第一个加入的就是我们在Androidmanfiest.xml文件中配置MAIN和LAUNCHER的Activity 1,Activity
1跳转到Activity 2

Activity 2跳转到Activity 3,Activity
2、[b]Activity 3依次加入栈中,按返回键回退后后,
[/b]

[b]Activity
3移除出栈。基本的流程就是这样的。
[/b]

并且我们无法真正的访问Task,只能通过getTaskId()方法获取Task的ID。

Activity有4种加载模式

我们只需在Androidmanfiest.xml文件中给Activity配置android:LaunchMode=""属性。

一、standard模式

通过这种模式启动的activity,都会创建一个新的Activity,即使一个该Activity类实例在栈顶,它还是会创建一个新的Activity压入栈中。
二、singleTop模式

如果有该Activity类的实例在栈顶,就会直接复用已有的Activity实例,不会创建新的实例,反之则调用Activity的newInstance()方法产生一个新实例。
singleTop模式,可用来解决栈顶多个重复相同的Activity的问题

三、singleTask模式

在一个新的Task中产生这个实例,以后每次调用都会使用此实例,而避免产生新的实例。
即这种方式加载的Activity在同一Task仅有一个实例。
1.)如果启动的Activity不存在,则会创建一个Activity实例并压入栈顶。
2.)如果该Activity已经位于栈顶,则会直接复用,不会创建。
3.)该Activity存在,但不在栈顶,会移除该Activity上其他的Activity,让其位于栈顶。

四、singleInstance模式

采用singleInstance创建的Activity总是位于栈顶,因为它所在的Task仅有它一个实例。
保证系统无论从哪个Task启动Activity都只会创建一个实例,并将它压入Task栈顶。

1.)如果启动的Activity不存,会创建一个该Activity的实例,并将它压入Task栈顶。
2.)已经存在,无论位于那个Task,都会将它移到前台,让该Activity显示出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: