Android 配置文件(activity)元素
语法:
. . .
被包含在:
可以包含:
描述:
声明实现了应用程序可视化用户界面一部分的一个activity(activity子类),在清单文件中的必须以元素表示。任何未声明的,将不会被系统看到而且永远不会被运行。
属性:
android:allowEmbedded
表明这个activity可以作为其它activity嵌入的子activity被启动,特别地在一些子activity存活在一个容器的案例中,如一个显示器被另一个activity所拥有。例如:被用于Wear自定义notification的activity必须声明了这个,Wear才能在上下文流中展示这个驻留在其它进程中的activity。
该属性默认的值是false
android:allowTaskReparenting
该属性表示activity是否可以从它启动的任务栈移动到它具有亲和力(affinity)的任务栈,且这个任务栈是下一个被置为前台的任务栈。"true"表示可以移动,“false”表示必须停留在它启动的任务栈中。
如果这个属性没有被设置,那么activity的这个属性值为false。
通常地,当activity被启动了,它会关联到启动它的那个 activity 所在的任务栈中,而且在它的整个生命周期过程中都会停留在那个任务栈中。当它的当前任务栈不在被显示的时候,你可以使用这个属性将它重新定位到它具有亲和力(affinity)的任务栈中。一般来说,它会造成该应用程序的所有activity移动到另一个应用程序的主要任务栈中。
activity的亲和性(affinity)是通过属性taskAffinity 定义的,任务栈的亲和性(affinity)取决于通过读取到的根activity的亲和性(affinity)。因此,通过定义,根activity总是在任务栈中具有相同亲和性(affinity)。因为有"singleInstance"和"singleTask"启动模式的 activity 只能在任务栈的根部,那么重新定位就不能用于"singleTop"和"standard"启动模式的activity。
android:alwaysRetainTaskState
该属性表示activity所存在的任务栈的状态是否总是被系统所保持,''true"表示是,"false"表示在某些情况下,系统允许将任务栈重置为它的初始状态。属性默认值是"false",这个属性仅对任务栈的根activity有用,对于其它的activity将被忽略。
通常,在某些情况,当用户从主屏幕重新选择任务栈时,系统会清除掉这个任务栈。一般地,如果用户在很长时间(比如30分钟)没有访问这个任务栈,它就会被清除。
然而,当该属性设置为"true"时,用户返回到这个任务栈总是为它的最后一个状态,不管他是怎么到达这个任务栈的。这是非常有用的,例如在应用程序中用户喜欢浏览网页,并且想保留打开的每一个网页的状态。
android:clearTaskOnLaunch
该属性表示是否无论何时从主屏幕启动应用程序,都从任务栈中移除除根activity以外的其它activity。默认值是"false",这个属性仅仅对activity启动一个新的任务栈有意义,对启动任务中的其它activity没有作用。
当这个属性是"true"的时候,每次用户再次启动这个任务栈,都会显示任务栈的根activity,不管它们在任务栈中最后一次在做什么,或者是否是按返回按钮离开的。当是"false"的时候,在某些情况下任务栈会清除掉activity,但不是总是这样。
如果这个属性和alwaysRetainTaskState都是"true",任何可被重新定位的activity都会移动到它们同享一个亲和力"affinity"的任务栈中。其它的activity除外。
android:configChanges
配置改变之后,activity它会自己处理。当在运行的时候配置改变了,activity会关闭然后默认重启,但是声明了configChanges属性,将会阻止activity被重启,反而,activity会依然运行,它的onConfigurationChanged()方法会被回调。
注意:应该避免使用该属性,要使用也是最后的手段。请仔细阅读 关于如何合适的处理(Handing Runtime Changes)由于配置改变引起的activity重启。
任何一个下面的字符串都是这个属性的有效值,多个值通过 "|" 分开,例如:"locale|navigation|orientation"。
所有这些配置的更改都会影响应用程序所看到的资源值。因此,当 onConfigurationChanged() 方法被回调时,通常它将需要再次恢复所有资源(包括视图的布局,图片等等)来正确地处理变化。
android:enabled
该属性表示activity是否可以被系统初始化。"true" 表示是,"false"表示不是,默认值是"true"。
元素有它自己的可适用于所有应用程序组件(包括activity)的 enabled 属性,为了使系统能够实例化activity,和元素的 enabled 属性必须设置为"true"(默认值也是"true"),如果其中一个为"false",则它不能够实例化。
android:excludeFromRecents
该属性表示这个activity所启动的任务栈是否应该被排除在最近使用的应用程序列表中。也就是说,当这个activity是一个新任务栈的根actvity,这个属性决定这个任务栈不会出现在最近应用程序的列表中。"true"表示这个任务栈会被排除在外,"false"表示会被包含到列表中。
android:exported
该属性表示这个activity是否可以被其它应用程序的组件启动,"true"可以,"false"不可以。如果是"false",则这个activity只能被同一个应用程序的组件或者具有相同 user ID 的组件启动。
该属性的默认值取决于activity是否包含 intent filters。缺少filters意味着activity只能通过指定它确切的类名称来启动,这暗示着该activity只能在应用程序内容使用,因此在这种情况下,默认值是"false'。另一方面,至少有一个filters暗示着这个activity可以被其它应用程序启动,因此默认值是"true"。
这个属性不是唯一限制activity暴露在其它应用程序面前的方式。你也可以使用 权限(permission )来限制外部可以启动这个activity的对象。
android:finishOnTaskLaunch
这个属性表示当用户再次启动activity所在的任务栈时(从主屏幕选择任务栈)这个已经存在的activity实例是否应该被关闭(finish),"true"应该被关闭,"false"不应该,默认值是"false"。
如果这个属性和alwaysRetainTaskState 都是"true",那么这个属性优先于其它的属性。并且这个activity的亲和性(affinity)将会被忽略,不能被重新定位到其它的任务栈。
android:hardwareAccelerated
这个属性表示activity是否可以被硬件加速渲染,"true"是,"false"不是,默认值是"false"。
从Android 3.0开始,为了增加常见2D图形操作的性能,新增适合于应用程序的硬件加速OpenGL渲染。当硬件加速渲染是可用的时候,大多数在Canvas, Paint, Xfermode, ColorFilter, Shader, Camera上的操作都会加速。这个结果在平滑的动画,平滑的滚动中,甚至在没有明确地使用框架OpenGL库的应用程序中都会提高整体响应。由于增加资源是硬件加速,你的应用程序会消耗更多的内存。
注意:并不是所有的OpenGL 2D 操作都是能够加速的。如果你使硬件加速渲染是可用的,请测试你的应用程序以确保渲染不会出错。
android:icon
icon代表着activity。图标展示给用户是activity显示在屏幕上的表示。例如,启动任务栈的activity图标在窗口中显示。icon通常伴随着一个label。
设置这个属性必须关联到一个drawable资源。如果没有设置,会用application的icon代替。
activity的icon,无论是在这里设置,还是通过元素设置,都是activity的 intent filters的默认icon。
android:label
对于activity的可读用户标签。当activity必须向用户表示时,该标签将显示在屏幕上。通常伴随着icon一起显示。
如果这个属性不设置,会用application的label代替。
activity的label,无论是在这里设置,还是通过元素设置,都是activity的 intent filters的默认label。
该label应该被关联到一个string资源,以便它可以像用户界面中的其它字符串进行本地化。然而,当你开发应用程序时,它也可以被设置为一个字符串。
android:launchMode
该属性表示activity应该如何被启动的一个指令。这里有四种模式联系着 intent 对象中的 activity flag(Intent.FLAG_ACTIVITY_),来决定当 activity 被调用的时候应该怎样处理这个 intent。它们是:
"standard"
"singleTop"
"singleTask"
"singleInstance"
默认模式是"strandard"。
正如下面表中展示的一样,模式分为两种群体,一种是"standard" 和