几个常用的Activity属性

内容编辑整理至:https://developer.android.com/guide/topics/manifest/activity-element.html

目录

  • 目录
    • androidnoHistory
    • androidallowEmbedded
    • androidalwaysRetainTaskState
    • androidclearTaskOnLaunch
    • androidautoRemoveFromRecents
    • androidexcludeFromRecents
    • androidexported
    • androidfinishOnTaskLaunch
    • androidscreenOrientation
    • androidtheme
    • androidwindowSoftInputMode

android:noHistory

用户离开视图,系统就会销毁这个视图
官方定义
当用户离开 Activity 并且其在屏幕上不再可见时,是否应从 Activity 堆栈中将其移除并完成(调用其 finish() 方法)—“true”表示应将其完成,“false”表示不应将其完成。 默认值为“false”。
“true”一值表示 Activity 不会留下历史轨迹。 它不会留在任务的 Activity 堆栈内,因此用户将无法返回 Activity。 在此情况下,如果您启动另一个 Activity 来获取该 Activity 的结果,系统永远不会调用 onActivityResult()。

该属性是在 API 级别 3 引入的。

android:allowEmbedded

官方定义
表示该 Activity 可作为另一 Activity 的嵌入式子项启动。 它尤其适用于子项所在的容器(如 Display)为另一 Activity 所拥有的情况。 例如,用于 Wear 自定义通知的 Activity 必须声明此项,以便 Wear 在其上下文流中显示 Activity,后者位于另一进程中。
该属性的默认值为 false。

android:alwaysRetainTaskState

可以一直保留视图内容不被系统清除
官方定义
系统是否始终保持 Activity 所在任务的状态 —“true”表示保持,“false”表示允许系统在特定情况下将任务重置到其初始状态。 默认值为“false”。该属性只对任务的根 Activity 有意义;对于所有其他 Activity,均忽略该属性。
正常情况下,当用户从主屏幕重新选择某个任务时,系统会在特定情况下清除该任务(从根 Activity 之上的堆栈中移除所有 Activity)。 系统通常会在用户一段时间(如 30 分钟)内未访问任务时执行此操作。
不过,如果该属性的值是“true”,则无论用户如何到达任务,将始终返回到最后状态的任务。 例如,在网络浏览器这类存在大量用户不愿失去的状态(如多个打开的标签)的应用中,该属性会很有用。

android:clearTaskOnLaunch

例如,假定有人从主屏幕启动了 Activity P,然后从那里转到 Activity Q。该用户接着按了主屏幕按钮,然后返回到 Activity P。正常情况下,用户将看到 Activity Q,因为那是其最后在 P 的任务中执行的 Activity。 不过,如果 P 将此标志设置为“true”,则当用户按下主屏幕将任务转入后台时,其上的所有 Activity(在本例中为 Q)都会被移除。 因此用户返回任务时只会看到 P。

官方定义
是否每当从主屏幕重新启动任务时都从中移除根 Activity 之外的所有 Activity —“true”表示始终将任务清除到只剩其根 Activity;“false”表示不做清除。 默认值为“false”。该属性只对启动新任务的 Activity(根 Activity)有意义;对于任务中的所有其他 Activity,均忽略该属性。

当值为“true”时,每次用户再次启动任务时,无论用户最后在任务中正在执行哪个 Activity,也无论用户是使用返回还是主屏幕按钮离开,都会将用户转至任务的根 Activity。 当值为“false”时,可在某些情况下清除任务中的 Activity(请参阅 alwaysRetainTaskState 属性),但并非一律可以。

例如,假定有人从主屏幕启动了 Activity P,然后从那里转到 Activity Q。该用户接着按了主屏幕按钮,然后返回到 Activity P。正常情况下,用户将看到 Activity Q,因为那是其最后在 P 的任务中执行的 Activity。 不过,如果 P 将此标志设置为“true”,则当用户按下主屏幕将任务转入后台时,其上的所有 Activity(在本例中为 Q)都会被移除。 因此用户返回任务时只会看到 P。

如果该属性和 allowTaskReparenting 的值均为“true”,则如上所述,任何可以更改父项的 Activity 都将转移到与其有亲和关系的任务;其余 Activity 随即被移除。

android:autoRemoveFromRecents

应该就是从浏览记录中剔除,让用户不能从浏览记录中切换到本程序(不会KILL掉进程)
用这个应该就能实现强制让用户不能离开本程序,如果离开本程序就回来的操作
官方定义
由具有该属性的 Activity 启动的任务是否一直保留在概览屏幕中,直至任务中的最后一个 Activity 完成为止。 若为 true,则自动从概览屏幕中移除任务。 它会替换调用方使用的 FLAG_ACTIVITY_RETAIN_IN_RECENTS。 它必须是布尔值“true”或“false”。

android:excludeFromRecents

>这个类似上面那个属性,只不过这个属性是对于整个任务而言
>官方定义
是否应将该 Activity 启动的任务排除在最近使用的应用列表(即概览屏幕)之外。 也就是说,当该 Activity 是新任务的根 Activity 时,此属性确定任务是否应出现在最近使用的应用列表中。 如果应将任务排除在列表之外,请设置“true”;如果应将其包括在内,则设置“false”。 默认值为“false”。 

android:exported

>是否允许别人的程序调用本程序的Activity
>官方定义
Activity 是否可由其他应用的组件启动 —“true”表示可以,“false”表示不可以。若为“false”,则 Activity 只能由同一应用的组件或使用同一用户 ID 的不同应用启动。
默认值取决于 Activity 是否包含 Intent 过滤器。没有任何过滤器意味着 Activity 只能通过指定其确切的类名称进行调用。 这意味着 Activity 专供应用内部使用(因为其他应用不知晓其类名称)。 因此,在这种情况下,默认值为“false”。另一方面,至少存在一个过滤器意味着 Activity 专供外部使用,因此默认值为“true”。
该属性并非限制 Activity 对其他应用开放度的唯一手段。 您还可以利用权限来限制哪些外部实体可以调用 Activity(请参阅 permission 属性)。 

android:finishOnTaskLaunch

官方定义
每当用户再次启动其任务(在主屏幕上选择任务)时,是否应关闭(完成)现有 Activity 实例 —“true”表示应关闭,“false”表示不应关闭。 默认值为“false”。
如果该属性和 allowTaskReparenting 均为“true”,则优先使用该属性。 Activity 的亲和关系会被忽略。 系统不是更改 Activity 的父项,而是将其销毁。

android:screenOrientation

>Activity 在设备上的显示方向。如果 Activity 是在多窗口模式下运行,系统会忽略该属性。

其值可以是下列任一字符串:
“unspecified” 默认值。由系统选择方向。在不同设备上,系统使用的政策以及基于政策在特定上下文所做的选择可能有所差异。
“behind” 与 Activity 栈中紧接着它的 Activity 的方向相同。
“landscape” 横向方向(显示的宽度大于高度)。
“portrait” 纵向方向(显示的高度大于宽度)。
“reverseLandscape” 与正常横向方向相反的横向方向。API 级别 9 中的新增配置。
“reversePortrait” 与正常纵向方向相反的纵向方向。API 级别 9 中的新增配置。
“sensorLandscape” 横向方向,但根据设备传感器,可以是正常或反向的横向方向。API 级别 9 中的新增配置。
“sensorPortrait” 纵向方向,但根据设备传感器,可以是正常或反向的纵向方向。API 级别 9 中的新增配置。
“userLandscape” 横向方向,但根据设备传感器和用户的传感器首选项,可以是正常或反向的横向方向。 如果用户锁定了基于传感器的旋转,其行为与 landscape 相同,否则,其行为与 sensorLandscape 相同。API 级别 18 中的新增配置。
“userPortrait” 纵向方向,但根据设备传感器和用户的传感器首选项,可以是正常或反向的纵向方向。 如果用户锁定了基于传感器的旋转,其行为与 portrait 相同,否则,其行为与 sensorPortrait 相同。API 级别 18 中的新增配置。
“sensor” 方向由设备方向传感器决定。显示方向取决于用户如何手持设备,它会在用户旋转设备时发生变化。 但一些设备默认情况下不会旋转到所有四种可能的方向。要允许全部四种方向,请使用 “fullSensor”。
“fullSensor” 方向由 4 种方向中任一方向的设备方向传感器决定。这与 “sensor” 类似,不同的是它允许所有 4 种可能的屏幕方向,无论设备正常情况下采用什么方向(例如,一些设备正常情况下不使用反向纵向或反向横向,但它支持这些方向)。 API 级别 9 中的新增配置。
“nosensor” 决定方向时不考虑物理方向传感器。传感器会被忽略,因此显示不会随用户对设备的移动而旋转。 除了这个区别,系统在选择方向时使用的政策与“unspecified”设置相同。
“user” 用户当前的首选方向。
“fullUser” 如果用户锁定了基于传感器的旋转,其行为与 user 相同,否则,其行为与 fullSensor 相同,允许所有 4 种可能的屏幕方向。 API 级别 18 中的新增配置。
“locked” 将方向锁定在其当前的任意旋转方向。API 级别 18 中的新增配置。

注:如果您声明其中一个横向或纵向值,系统将其视为对 Activity 运行方向的硬性要求。 因此,您声明的值支持通过 Google Play 之类的服务进行过滤,这样就能将您的应用只提供给支持 Activity 所要求方向的设备。 例如,如果您声明了 “landscape”、”reverseLandscape” 或 “sensorLandscape”,则您的应用将只提供给支持横向方向的设备。 不过,您还应通过 元素明确声明,您的应用要求采用纵向或横向方向。 例如,。这纯粹是 Google Play(以及其他支持它的服务)提供的一种过滤行为,平台本身并不能控制当设备仅支持特定方向时您的应用能否安装。

android:theme

>对定义 Activity 总体主题的样式资源的引用。它会自动将 Activity 的上下文设置为使用该主题(请参阅 setTheme()),它还可以引发 Activity 启动前的“启动”动画(以更加符合 Activity 的实际外观)。

如果未设置该属性,则 Activity 继承通过 元素的 theme 属性为应用整体设置的主题。 如果该属性也未设置,则使用默认系统主题。如需了解详细信息,请参阅样式和主题开发者指南。

android:windowSoftInputMode

>Activity 的主窗口与包含屏幕软键盘的窗口的交互方式。 该属性的设置影响两个方面:
 当 Activity 成为用户注意的焦点时软键盘的状态 — 隐藏还是可见。
 对 Activity 主窗口所做的调整 — 是否将其尺寸调小以为软键盘腾出空间,或者当窗口部分被软键盘遮挡时是否平移其内容以使当前焦点可见。

该设置必须是下表所列的值之一,或者是一个“state…”值加上一个“adjust…”值的组合。 在任一组中设置多个值(例如,多个“state…”值)都会产生未定义结果。各值之间使用垂直条 (|) 分隔。 例如:

此处设置的值(“stateUnspecified”和“adjustUnspecified”除外)替换主题中设置的值。
值 说明
“stateUnspecified” 不指定软键盘的状态(隐藏还是可见)。 将由系统选择合适的状态,或依赖主题中的设置。

这是对软键盘行为的默认设置。
“stateUnchanged” 当 Activity 转至前台时保留软键盘最后所处的任何状态,无论是可见还是隐藏。
“stateHidden” 当用户选择 Activity 时 — 也就是说,当用户确实是向前导航到 Activity,而不是因离开另一 Activity 而返回时 — 隐藏软键盘。
“stateAlwaysHidden” 当 Activity 的主窗口有输入焦点时始终隐藏软键盘。
“stateVisible” 在正常的适宜情况下(当用户向前导航到 Activity 的主窗口时)显示软键盘。
“stateAlwaysVisible” 当用户选择 Activity 时 — 也就是说,当用户确实是向前导航到 Activity,而不是因离开另一 Activity 而返回时 — 显示软键盘。
“adjustUnspecified” 不指定 Activity 的主窗口是否调整尺寸以为软键盘腾出空间,或者窗口内容是否进行平移以在屏幕上显露当前焦点。 系统会根据窗口的内容是否存在任何可滚动其内容的布局视图来自动选择其中一种模式。 如果存在这样的视图,窗口将进行尺寸调整,前提是可通过滚动在较小区域内看到窗口的所有内容。

这是对主窗口行为的默认设置。
“adjustResize” 始终调整 Activity 主窗口的尺寸来为屏幕上的软键盘腾出空间。
“adjustPan” 不调整 Activity 主窗口的尺寸来为软键盘腾出空间, 而是自动平移窗口的内容,使当前焦点永远不被键盘遮盖,让用户始终都能看到其输入的内容。 这通常不如尺寸调正可取,因为用户可能需要关闭软键盘以到达被遮盖的窗口部分或与这些部分进行交互。

该属性是在 API 级别 3 引入的。

你可能感兴趣的:(安卓开发)