WEB开发网
开发学院手机开发Android 开发 Android开发之活动与任务 阅读

Android开发之活动与任务

 2010-05-10 16:00:00 来源:WEB开发网   
核心提示:任务是一栈的活动,而不是清单文件中声明的某个类或元素,Android开发之活动与任务(2),因此无法独立于它的活动为任务赋值,整个任务的值是在栈底活动(根活动)设置的,该活动将启动到该任务,如果不是,例如,下节将讨论的“任务亲和度”

任务是一栈的活动,而不是清单文件中声明的某个类或元素,因此无法独立于它的活动为任务赋值。整个任务的值是在栈底活动(根活动)设置的。例如,下节将讨论的“任务亲和度”,亲和度信息就是从任务的根活动中获取的。

一个任务的所有活动作为一个整体运行。整个任务(整个活动栈)可置于前台或发送到后台。例如,假设当前任务有四个活动在栈中——三个活动在当前活动下面。用户按下HOME键,切换到程序启动器,并选择一个新的应用程序(实际上是一个新的任务)。当前任务进入后台,新任务的根活动将显示。接着,过了一会,用户回到主屏幕并再次选择之前的应用程序(之前的任务)。那个任务栈中的所有四个活动都变为前台运行。当用户按下返回键时,不是离开当前任务回到之前任务的根活动。相反,栈顶的活动被移除且栈中的下一个活动将显示。

上面所描述的是活动和任务的默认行为,但是有方法来改变所有这些行为。活动与任务之间的联系及任务中活动的行为,是由启动活动的Intent对象的标志(flags)和清单文件中活动元素的属性共同决定的。

在这方面,主要的Intent标志有:

FLAG_ACTIVITY_NEW_TASK

FLAG_ACTIVITY_CLEAR_TOP

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

FLAG_ACTIVITY_SINGLE_TOP

主要的属性有:

taskAffinity

launchMode

allowTaskReparenting

clearTaskOnLaunch

alwaysRetainTaskState

finishOnTaskLaunch

接下来的小节将讨论这些标志和属性的作用,他们怎么交互,及使用的注意事项。

2、亲和度和新任务(Affinities and new tasks)

默认情况下,一个应用程序的所有活动互相之间都有一个亲和度(affinity)——也就是说,他们属于同一个任务的偏好(preference)。然而,也可以通过元素的taskAffinity属性为每个活动设置个体亲和度。定义在不同应用程序中的活动能够共享亲和度,同一个应用程序中的活动可以分配不一样的亲和度。亲和度发挥作用的两种情况:1)启动活动的Intent对象包含 FLAG_ACTIVITY_NEW_TASK标志时;2)一个活动的allowTaskReparenting属性为”true”时。

FLAG_ACTIVITY_NEW_TASK标志

如前所述,默认情况下,一个新的活动被启动到调用startActivity()方法的活动所在的任务。它被压入调用它的活动的栈中。但是,如果传递给方法的Intent对象包含FLAG_ACTIVITY_NEW_TASK标志,系统找一个不同的任务容纳活动。通常,顾名思义它表示一个新任务。但是,他并非一定如此。如果已经存在一个任务与新活动亲和度一样,该活动将启动到该任务。如果不是,则启动一个新任务。

上一页  1 2 3 4 5  下一页

Tags:Android 开发 活动

编辑录入:coldstar [复制链接] [打 印]
赞助商链接