Activities and Tasks

   我们前面提到,一个Activity可以启动另外一个activity(可以是其他程序提供的activity模块).举个例子,假如你的程序需要显示一幅某个街区的地图,而恰好有另外一个程序已经提供了这样的activity模块,我们只要定义一个intent对象,然后调用 startActivity 就可以了。第二个应用程序提供的activity将会显示相应的地图,当用户点击"back"按钮的时候,我们的activity会再次显示出来。

  从用户的角度来讲,显示地图的activity看起来就像是我们程序提供的(事实上,它是另外一个程序提供的,并且该activity是运行在另外一个进程中的)。Android提供了一个叫做activity的东西。简单的来说, 一个task就是用户感觉上的"应用程序",task 是一组相互关联的activity集合组成的栈(这些activity可能属于多个应用程序). 栈底就是应用程序启动时显示的第一个activity。栈顶activity就是用户在屏幕上看到的activity。当一个activity启动一个新的activity时,新的activity就会被压入栈中。当用户点击"back " 按钮时,位于栈顶的activity将会被弹出栈。我们举个例子,假设task中有两个activity,分别是 A 和 B,其中A是位于栈顶的activity,用户点击"back"后, A就被弹出栈, B 就成为了新的栈顶activity,然后 activity B 会显示在屏幕上。

 通常来讲,task栈中的activity不会被改变排列顺序,只有出栈和入栈操作。

A task is a stack of activities, not a class or an element in the manifest file. So there's no way to set values for a task independently of its activities. Values for the task as a whole are set in the root activity. For example, the next section will talk about the "affinity of a task"; that value is read from the affinity set for the task's root activity.

 一个task中的所有activity是作为一个整体来移动的--移到前台后者后台。就个例子,假设当前 task 栈中有ABCD4个activity,A是栈顶activity,也就是在屏幕上显示的activity,用户点击了"home"键,启动了一个新的应用程序,则 ABCD 4个activity都会被移动到后台。过了一会,用户又点击了"home"键,并重新选择了先前的程序,则 ABCD 都被移动到前台,A 仍然作为栈顶activity 被显示在屏幕上,然后用户点击了"back",A被弹出栈,B作为新的栈顶activity被显示在屏幕上。

  前面所讲的都是task的默认行为,我们可以通过某些方法改变task 的默认行为,详情请见后面的章节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值