Activity的四种加载模式

来源:互联网 发布:淘宝网店运营培训 编辑:程序博客网 时间:2024/06/01 08:48

什么是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、Activity 3依次加入栈中,按返回键回退后后,

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

并且我们无法真正的访问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显示出来。
0 0
原创粉丝点击