Android属性的内容包括:更容易的设计集成、扩充的部署选项、更为丰富多彩的登录和个性化服务以及更好的数据访问和同步,希望大家能够从中得到相关自己想要的信息。
并调用startActivity().这时候,地图组件可以显示地图,当用户点击“后退”按钮,你的activity会重新显示在屏幕上。对用户来说,即使地图程序是定义在另外一个程序中、在另外一个进程中运行,但是它看起来好像你的程序的一部分。
Android属性通过将2个activities放在用一个任务中,使得用户有这样的体验。这一系列的activities,安排在一个堆栈中。堆栈中的根activity是任务的开始,或者说是用户选择的应用程序的第一个activity。堆栈顶部的activity 是当前正在运行的activity— 目前正在吸引用户注意的一个。
当一个activity启动另外一个的时候,新的activity被压栈,变为当前activity. 之前的activity 还在任务中。当用户点击后退(BACK)键,当前的acitivity被弹出栈,之前的activity成为正在运行的。如果堆栈中有多个同样的activity的实例,如有多个地图查看器(如程序设定了多个打开地图查看器的入口),那么堆栈不可以重新排序,只能弹出和压入。
任务是activities的堆栈,而非装箱单中的一个类,因此不能离开activity单独设定一个堆栈的值。例如,下面一章将要谈到‘任务的吸引力’,这个值就是设定在任务的根activity里面的。
任务中的所有activities作为一个整体移动。整个任务可以放在前台(foreground)或者后台(background)运行。想象一下,例如,有个任务有4个activities,用户点击“HOME”键,回到程序开始的地方,选择了一个新的程序(其实是一个新的任务)。
当前的任务移到后台运行,新任务的根activity开始显示。过了一会,用户又回到HOME界面,选择了刚才的程序(刚才的任务)。则这个含有4个activities的任务回到前台运行。当用户点击BACK按钮,屏幕不会显示用户刚刚离开时候的activity,而是在堆栈顶部的activity被弹出,显示前一个activity。
默认的情况下,上面这些描述是没有问题的。当然,也有很多办法来改变以下:任务和activity的关系、任务中一个activity的动作。这些是被Intent对象(启动此acivity的)的标志集(flag set)和activity在装箱单中的<activity>节点控制的。
Intent的标志集包括:
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_CLEAR_TOP
- FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
- FLAG_ACTIVITY_SINGLE_TOP
典型的<activity> 的节点属性如下:
- taskAffinity
- launchMode
- allowTaskReparenting
- clearTaskOnLaunch
- alwaysRetainTaskState
- finishOnTaskLaunch
本文进行详细说明了这些标记和Android属性的意义和互动。
【编辑推荐】