Android Activity启动模式详解

原创 2015年11月19日 14:43:25

在说Activity启动模式之前,先说下Activity Task栈:

Task任务栈是用来管理应用程序Activity的一个容器,可简单理解为,一个应用程序就是一个Task.

但是并不是说一个应用程序就只有一个Task,可以有多个Task,

而Activity启动模式就是基于栈的。

Activity启动模式有以下4种 :

1,Standard

2,SingleTask;

3,SingleTop

4,SingleInstance


Standard:

   activity默认启动模式,即在Androidmanifest.xml中没有对<activity>标签进行设置launchMode时,

这种模式就是每次启动都会在Activity Task栈中压入一个Activity.即使它已经存在这个栈里面,也不会复用。

onCreate()-->onStart()--onResume()-->onPostResume()


SingleTask:

  即将被激活的Activity将只存在一个Task中,不能指定其运行在另外一个Task,而这个Task的创立一般由

RootActivity即栈底的Activity来实现,比如我们应用的MainActivity,当我们把MainActivity的launchMode置为"SingleTask"

时,整个应用的Task即已被确定。且SingleTask启动模式的Activity,会在它被激活时,把位于它上面的Activity都Push出栈

这个对于返回退出应用处理很方便。

第一次创建时:onCreate()--->onStart()-->onResume()-->-->onPostResume()

第二次被激活,如果存在栈里面:

 onNewIntent()-->onResume()--->onPostResume()


SingleTop:

当启动或激活这个模式的Activity时,系统首先会从Task栈顶去找这个Activity 是否已经存在,如果栈顶存在则直接用,

onNewIntent()-->onResume()-->onPostResume()

如果栈顶不存在,即使栈里面存在这个Activity,其也会重新创建。onCreate()-->onStart()-->onResume()-->onPostResume()


SingleInstance:

 这个启动模式可以理解成与SingleTask相反,SingleTask是确保同一Task,是可以允许别的Activity存在的,

而SingleInstance是单例,单独的一个Task,单独的Activity,

如:MainActivity启动,创建的TaskId为276,点击btn跳转至A界面,A的launchMode="SingleInstance"

在A界面,getTaskId(),打印值为277

返回再点击跳转至A界面,getTaskId()=288;

当启动或激活这个模式的Activity时,系统也是首先从Task里面找,有没有存在,如果存在,则直接复用,

当点击返回时,Activity随即销毁。

onNewIntent()-->onResume()-->onPostResume()

界面跳转如下:

A-->B(singleInstance)-->C--->B

返回:

B-->C-->A

备注:当程序退出,再进入时,MainActivity中getTaskId()=289,在整个系统栈中,它是累加的,



版权声明:本文为博主原创文章,未经博主允许不得转载。

android activity启动模式详解

  • 2017年10月21日 14:31
  • 1.24MB
  • 下载

Android 彻底弄懂Activity四大启动模式 和taskAffinity属性详解 intentFlag 图文解析

task是在程序运行时,只针对activity的概念。说白了,task是一组相互关联的activity的集合,它是存在于framework层的一个概念,控制界面的跳转和返回。这个task存在于一个称为...

android的Activity启动模式

  • 2016年03月16日 17:59
  • 516KB
  • 下载

# Android中Activity四种启动模式和taskAffinity属性详解 #(2原创分享)

activity有四种启动模式,分别为standard,singleTop,singleTask,singleInstance。如果要使用这四种启动模式,必须在manifest文件中标签中的launc...
  • Blumamy
  • Blumamy
  • 2015年02月04日 14:22
  • 559

Android之Activity启动模式Demo

  • 2013年07月07日 08:32
  • 929KB
  • 下载

android Activity 四种启动模式例子

  • 2015年11月07日 14:25
  • 996KB
  • 下载

Android Activity的属性及启动模式相关详解

1、Activity和Task task就好像是能包含很多activity的栈。 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Activity启动模式详解
举报原因:
原因补充:

(最多只允许输入30个字)