Android中的四种Activity

来源:互联网 发布:php图片验证码不显示 编辑:程序博客网 时间:2024/05/29 08:40

Application、Activity Stack 和 Task的区别

学习Android,了解一些基本概念将有助更深入的去学习和理解Android。在这里,所要讲诉的是Android里三个比较基础的概念:Android  Application、Activity Stack 和 Task。

  1. 什么是Android Application?

  Android Application就是一个android应用程序。 简单的理解就是一个apk就是一个Android Application。例如Android平台下自带的应用程序:Browser、Contacts、camera等。

  每一个Application都是由Activity、Service、content Provider和Broadcast Receiver等Android的基本组件所组成,其中Activity是实现应用程序的主体,它承担了大量的显示和交互工作,甚至可以理解为一个界面 就是一个Activity。

  2. 什么是Activity Stack?

  如上所诉,Activity承担了大量的显示和交互工作,从某种角度上将,我们看见的应用程序就是许多个Activity的组合。为了让这许多 Activity协同工作而不至于产生混乱,Android平台设计了一种堆栈机制用于管理Activity,其遵循先进后出的原则,系统总是显示位于栈 顶的Activity,从逻辑上将,位于栈顶的Activity也就是最后打开的Activity,这也是符合逻辑的。

  在操作应用程序时,每次启动新的Activity,都会将此压入Activity Stack,当用户执行返回操作时,移除Activity Stack顶上的Activity,这样就实现了返回上一个Activty的功能。直到用户一直返回到Home Screen,这时候可以理解为移除了Activity Stack所有的Activity,这个Activity Stack不再存在,应用程序也结束了运行。

  3. 什么是Task?

  Task是指将相关的Activity组合到一起,以Activity Stack的方式进行管理。从用户体验上讲,一个“应用程序”就是一个Task,但是从根本上讲,一个Task是可以有一个或多个Android Application组成的。例如:你想在发送短信时,拍一张照并作为彩信发出去,这时你首先停留在短信应用程序的的Acitivity上,然后跳转到 Camera应用程序的Activity上,当完成拍照功能后,再返回到短信应用程序的Activity。这实际上是两个Android Application协同合作后完成的工作,但为了更好的用户体验,Android平台加入了Task这么一种机制,让用户没有感觉到应用的中断,让用 户感觉在一“应用程序”里就完成了想完成的工作。




消息讲解  Android  标准模式的Activity和SingleInstance模式的Acitivity的运行流程

Android采用Task来管理多个Activity,当我们启动一个应用程序时,Android为程序创建了一个Task;
Activity的加载模式,就负责管理实例化、加载Activity的方式、并可以控制Activity与Task之间的加载关系;
四种模式:
1, Standard模式  这是默认的模式, Activity_standard 工程主要介绍着这种模式的特点 :
不会启动新的Task,Android为目标Activity创建一个新的实例,并加入当前的Task中;
现象:
每次重复启动MainActivity时,MainActivity都有新的哈希值,说明每次的MainActivity实例都是重新创建的,
并且TaskId都是一样的,说明所有MainActivity实例会添加到原来的Task中
问题:不能使用XML中的布局要用java代码写自己的布局
2,singleTop模式, 
特点:当将要被启动的Activity位于栈顶时,系统不会创建新的目标Activity的实例;
如果目标Activity没有位于栈顶,此时系统会重新创建目标Activity实例,加载到Task的栈顶;
3, singleTask模式,
特点:采用这种加载模式的Activity在同一个栈中只有一个实例;
当系统采用singleTask模式启动目标Actiivty时的现象:
1,目标:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动;

对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动;


图片过大 无法上传,需要请留言

******************************************************  思 维 误 区  ******************************************************

 小编 在一次做项目时, 误以为Activity栈和Task是一会事,导致问题无法解决,在此记录他们的概念。







0 0