1 <activity 2 android:allowTaskReparenting=["true" | "false"] 3 android:alwaysRetainTaskState=["true" | "false"] 4 android:clearTaskOnLaunch=["true" | "false"] 5 android:configChanges=["mcc", "mnc", "locale", 6 "touchscreen", "keyboard", "keyboardHidden", 7 "navigation", "screenLayout", "fontScale", "uiMode", 8 "orientation", "screenSize", "smallestScreenSize"] 9 android:enabled=["true" | "false"] 10 android:excludeFromRecents=["true" | "false"] 11 android:exported=["true" | "false"] 12 android:finishOnTaskLaunch=["true" | "false"] 13 android:hardwareAccelerated=["true" | "false"] 14 android:icon="drawable resource" 15 android:label="string resource" 16 android:launchMode=["multiple" | "singleTop" | 17 "singleTask" | "singleInstance"] 18 android:multiprocess=["true" | "false"] 19 android:name="string" 20 android:noHistory=["true" | "false"] 21 android:permission="string" 22 android:process="string" 23 android:screenOrientation=["unspecified" | "user" | "behind" | 24 "landscape" | "portrait" | 25 "reverseLandscape" | "reversePortrait" | 26 "sensorLandscape" | "sensorPortrait" | 27 "sensor" | "fullSensor" | "nosensor"] 28 android:stateNotNeeded=["true" | "false"] 29 android:taskAffinity="string" 30 android:theme="resource or theme" 31 android:uiOptions=["none" | "splitActionBarWhenNarrow"] 32 android:windowSoftInputMode=["stateUnspecified", 33 "stateUnchanged", "stateHidden", 34 "stateAlwaysHidden", "stateVisible", 35 "stateAlwaysVisible", "adjustUnspecified", 36 "adjustResize", "adjustPan"] > 37 . . . 38 </activity>
包含于(CONTAINED IN):
<application>
能够包含的元素(CAN CONTAIN):
<intent-filter>
<meta-data>
说明(DESCRIPTION):
这个元素声明了一个Activity(或Activity的子类),Activity实现了应用程序的可视化用户界面部分。应用程序中所有的Activity都必须在清单文件中用<activity>元素来声明,没有在清单文件中声明的Activity,系统不会看到,也不会运行它。
属性(ATTRIBUTES):
android:allowTaskReparenting
这个属性用于设定Activity能够从启动它的任务中转移到另一个与启动它的任务有亲缘关系的任务中,转移时机是在这个有亲缘关系的任务被带到前台的时候。如果设置了true,则能够转移,如果设置了false,则这个Activity必须要保留在启动它的那个任务中。
如果这个属性没有设置,那么其对应的<application>元素的allowTaskReparenting属性值就会应用到这个Activity上。它的默认值是false。
通常,当Activity被启动时,它会跟启动它的任务关联,并它的整个生命周期都会保持在那个任务中。但是当Activity的当前任务不在显示时,可以使用这个属性来强制Activity转移到与当前任务有亲缘关系的任务中。这种情况的典型应用是把应用程序的Activity转移到与这个应用程序相关联的主任务中。
例如,如果一个电子邮件消息中包含了一个网页的链接,点击这个链接会启动一个显示这个网页的Activity。但是,由e-mail任务部分启动的这个Activity是由浏览器应用程序定义的。如果把它放到浏览器的任务中,那么在浏览器下次启动到前台时,这个网页会被显示,并且在e-mail任务再次显示时,这个Activity有会消失。
Activity的亲缘关系是由taskAffinity属性定义的。通过读取任务的根Activity的亲缘关系来判断任务的亲缘关系。因此,通过定义,任务中的根Activity与任务有着相同的亲缘关系。因此带有singleTask或singleInstance启动模式的Activity只能是任务的根节点,Activity的任务归属受限于standard和singleTop模式。
android:alwaysRetainTaskState
这个属性用于设置Activity所属的任务状态是否始终由系统来维护。如果设置为true,则由系统来维护状态,设置为false,那么在某些情况下,系统会允许重设任务的初始状态。默认值是false。这个属性只对任务根节点的Activity有意义,其他所有的Activity都会被忽略。
通常,在某些情况中,当用户从主屏中重新启动一个任务时,系统会先清除任务(从堆栈中删除根节点Activity之上的所有Activity)。
但是,当这个属性被设置为true时,用户会始终返回到这个任务的最后状态,而不管中间经历了哪些操作。这样做是有好处的,例如,Web浏览器的应用就会保留很多用户不想丢失的状态,如多个被打开的标签页。
android:clearTaskOnLaunch
这个属性用于设定在从主屏中重启任务时,处理根节点的Activity以外,任务中的其他所有的Activity是否要被删除。如果设置为true,那么任务根节点的Activity之上的所有Activity都要被清除,如果设置了false,就不会被清除。默认设置时false。这个属性只对启动新任务(或根Activity)的那些Activity有意义,任务中其他所有的Activity都会被忽略。
当这个属性值被设置为true,用户再次启动任务时,任务根节点的Activity就会被显示,而不管在任务的最后做了什么,也不管任务使用Back按钮,还是使用Home离开的。当这个属性被设置为false时,在某些情况中这个任务的Activity可以被清除,但不总是这样的。
例如,假设某人从主屏中启动了Activity P,并且又从P中启动了Activity Q。接下来用户按下了Home按钮,然后由返回到Activity P。通常用户会看到Activity Q,因为这是在P的任务中所做的最后的事情。但是,如果P把这个属性设置为true,那么在用户按下Home按钮,任务被挂起时,Activity P之上的所有Activity(本例中是Activity Q)都会被删除。因此当用户再次返回到本任务时,用户只能看到Activity P。
如果这个属性和allowTaskReparenting属性都被设置为true,那些被设置了亲缘关系的Activity会被转移到它们共享的亲缘任务中,然后把剩下的Activity都给删除。