AndroidManifest中Application、Activity、Service属性介绍(转 )

来源:互联网 发布:不亦说乎和不亦乐乎 编辑:程序博客网 时间:2024/04/29 16:43

一. application 标签属性

<application/> 应用的声明。该节点必须包含在android  <manifest/>节点中。而<application/>节点包含了<activity/>,<activity-alias/>,<receiver/>,<provider/><uses-library/>这几个节点。
<application    android:allowClearUserDate = ["true"|"false"]    android:allowTaskReparenting =["true"|"false"]    android:backupAgent = "string"    android:debuggable = ["true"|"false"]    android:description = "string resource"    android:enabled = ["true"|"false"]    android:hasCode = ["true"|"false"]    android:icon = "drawable resource"    android:killAfterRestore = ["true"|"false"]    android:label = "string resource"    android:manageSpaceActivity = "string"    android:name = "string"    android:permission = "string"    android:persistent = ["true"|"false"]    android:process = "string"    android:restoreAnyVersion = ["true"|"false"]    android:taskAffinity = "string"    android:theme = "resource or theme"
  1. android:allowClearUserData
    是否给用户删除用户数据的权限。默认为true。
  2. android:allowTaskReparenting
    该应用定义的activities是否可以从启动的任务back stack中转移到其他前台的任务中,默认为false。
  3. android:backupAgent
    实现应用备份代理 的类名 ,BackupAgent的子类
  4. android:debuggable
    该应用是否可以在用户模式下debug
  5. android:description
    用户可读的,更多的应用描述
  6. android:enable
    android系统是否可以实例化应用的组件,默认为true。如果为true,则该节点下的子节点的enable属性决定是否可以实例化,如果为false,则即使子节点下的组件 的enable属性为true,则组件仍不可 实例 化。
  7. android:hasCode
    应用是否包含代码,默认为true。当为false时,在启动组价时,系统不会尝试加载任何该应用的代码。
  8. android:icon
    整个应用的图标 ,还是每个组件的默认图标。
  9. android:killAfterRestore
    默认为true,当整个系统被恢复时,应用处理完数据后,将会终止。
  10. android:label
    应用标签。
  11. android:managerSpaceActivity
    一个activity子类的全限定名称 ,这个activity可以被系统启动,并让用户管理此应用占有的存储空间。这个activity也必须用activity节点声明。
  12. android:name
    此应用的appplication组件的全限定名称 。当 启动该应用时,这个application身份的组件将再该应用的其他组件之前被初始化,即application组件。
  13. android:permission
    这个属性可以被 组件的permission重写。
  14. android:persistent
    该应用是否在所有时间下都保持运行。通常 情况下不应该设置此标识,持久模式仅仅被个系统应用指定。
  15. android:process
    为应用下的组件指定一个进程的名称。但每个组件可以设置自己的process属性。
    默认情况下,android为应用创建一个进程,这个进程的名称和manifest的package属性名相同。
    通过设置这个属性可以在其他应用中共享一个进程,这样两个应用可以共享用户的ID和证书。
    如果这个属性的名称为“:”开始,则一个新的私有的进程将被创建。如果已小写字母开始,则一个公共的进程将被创建。公共的进程可以被其他应用共享,来减少资源的使用。
  16. android:restoreAnyVersion
    表明这个应用准备尝试恢复所有备份数据的集合,即使版本不匹配,所以要小心使用,默认为false。
  17. android:taskAffinity
    taskAffinity默认和manifest元素中的包名相同。
  18. android:theme
    设置主题,每个组件可以设置自己的theme
  19. android:allowBackup
    是否容许备份,当为false时,代开adb调试,就会没有log输出。
  20. android:largeHeap
    应用程序是否使用一个比较大的堆创建,默认为false。

二、activity 标签属性

  1. android:allowTaskReparenting
    android:allowTaskReparenting是一个任务调整属性。
    如果< application />的 android:allowTaskReparenting 属性已配置,因此当为正在配置的Activity提供该属性的时候,它的默认值首先来自< application />节点。如果< application/>节点上没有配置该属性的时候,则false就是它的默认值。Activity中的android:allowTaskReparenting会覆盖application中此属性
    通常,当一个Activity启动的时候,Activity管理服务就会为这个Activity生成一个back stack并将此Activity与之相关联。在一个任务back stack中可能存在多个Activity,它按照一定顺序排列在这个任务中,我们可以使用这个属性来强制它重新成为此任务的顶层Activity。在当前的任务不再显示时,也就是说,与此Activity相关联任务不在前台显示的时候,可以使用这个特性来强制Activity转移到与之有相同亲和力的任务(taskAffinity属性定义的任务)中。典型的用法是把一个应用程序的Activity移到另一个应用程序的主任务中。
    如果我们收到的一条短信(MMS应用程序)中包含一个电话号码文本,此时可以单击电话号码来启动拨号的快捷界面。但是,这个拨号界面是联系人应用程序的一个Activity,在这个场景下,它可能成为MMS应用程序启动的任务中的一个Activity,并位于该任务的顶层。如果它重新定位到联系人的任务中,则我们重新启动短信任务的时候就看不到这个拨号界面了。
    Activity的亲和力是由taskAffinity属性定义的,Task的亲和力是通过读取当前任务根Activity的亲和力决定的。因此,根据定义,根Activity总是位于相同亲和力的任务里。由于在某些需求的要求下,一些Activity的启动模式(由launchModel属性定义)为singleTask和singleInstance,此类Activity只能位于任务的底部,因此,想要使用allowTaskReparenting属性来调整Activity所属任务,则启动默认只能限于”standard”和”singleTop”这两个模式。

  2. android:alwaysRetainTaskState
    该属性表明该Activity所在任务的状态是否由系统保存。
    如果是,则其值为true,如果配置为false,则表示在一定情况下Android将以初始状态启动该任务。 默认值是false。
    注意,该属性仅对任务的根Activity起作用,其他的所有Activity都会被忽略。
    当用户重新选择显示该任务的时候,系统在通常情况下将会清理掉任务中除了根Activity外的其他Activity。这种情况通常是指用户在一定时间限制内未对该任务进行操作,例如30分钟内。反之如果该属性配置为true时,系统总会以任务的最后状态来显示该任务,而不管用户是如何返回的。

  3. android:clearTaskOnLaunch
    该属性表明,除了任务中的根Activity,其他所有Activity是否都将从任务back stack中移出。
    如果想要在启动时只保留根Activity,则设置这个属性的值为true,否则为false。 默认值是false。
    该属性仅对启动一个新任务的根Activity有意义。
    当配置为true时,每当用户再次启动任务时,则总是由任务的根Activity来处理请求。
    如果该属性和allowTaskReparenting都是true,则可重新成为父任务的任何Activity就要被移动到具有相同亲和力的任务上,接着保留的Activity就被销毁。
  4. android:configChanges
    在某些设备配置(比如屏幕方向,字体大小,网络类型等)发生变化的时候,Activity将会被 重新启动以适配新的配置,这是系统行为。而Android同样为应用程序提供了一个阻止这种行为发生的手段,如果你不想因为某种配置变化而发生Activity重启,则可以通过配置这个属性并选择你想要阻止的配置。如果你配置完毕并选择了你关注的配置,则当这些配置发生改变的时候Activity不会重启,而是通过onConfigurationChanged()回调方法通知应用程序这些配置发生了变化。
    注意:如非必要,应该避免使用该属性
    所有这些配置的改变都能影响到应用程序对资源文件的选择。所以,当onConfigurationChanged()被调用时,通常需要重新获取所有的资源(包括视图布局和图片等),以便正确地处理这些改变。
    注意,如果我们没有实现onConfigurationChanged()回调,那么该Activity就会被销毁并重新创建。
  5. android:enabled
    该属性表示Activity是否能被实例化。
    一般来说,每个Activity由Activity框架负责实例化,但你可以通过配置该属性来限制系统的这种行为。
    为true表示由系统实例化,否则为false。
    默认值是true。
    对于每一个Activity的子类,在它首次运行之前总要进行实例化,这个步骤是必须的。
    我们可以使用这个属性来控制Android框架实例化Activity的行为,~但这样做是有风险的,所以不建议你这样做~。

  6. android:excludeFromRecents
    Android框架为我们维护了一个名叫“最近运行”的应用程序列表,以方便进行应用程序切换。
    该属性表示应用程序是否应该将Activity从最近运行的应用程序列表排除。
    如果排除,则为true,否则为false。
    默认值为false。
    这个属性的前提是该Activity是某个任务的根Activity。

  7. android:exported
    该属性表示Activity是否可以由其他应用程序中的组件来启动。
    如果可以,则为true,否则为false。
    如果为false,则该Activity只能由同一应用程序的组件或者有同样用户ID的应用程序来启动。
    注意,如果你试图从你的应用程序中启动其他应用程序组件,在没有使用该属性的情况下,你必须以新任务(newTask)的方式启动。

  8. android:finishOnTaskLaunch
    该属性是指不管何时,当用户再次启动Activity的任务时(在主页屏幕上选择该任务),
    是否应销毁(或者终止)这个Activity的实例,
    如果应销毁,则为true,否则为false.
    默认值是false。

  9. android:hardwareAccelerated
    该属性是指是否应为该Activity启动硬件加速。
    如果应启动,则为true,否则为false。
    默认值是false。

注意:不是所有的OpenGL 2D操作都会被加速。
如果启用硬件加速渲染器,则要测试你的应用程序以便确保它能使用渲染器而不会产生错误。
10. android:icon
它代表Activity和图标。
在Activity被显示的时候,就用该图标显示给用户。
例如,用于示例任务的Activity的图标,或者桌面上的图标。
该属性 必须 设置为图片资源引用,如果没有设置,就使用 application 节点上的icon属性。
11. android:label
该属性用于描述该Activity的一个标签,通常是随着Activity图标一起显示出来的。
如果没有设置该属性,则使用< application />节点上的label属性设置的值。
12. android:launchMode
这个属性描述了该Activity应该如何被启动。
在Intent对象中,与Activity标志一起工作的模式有4种,
分别是:standard , singleTop , singleTask 和 singleInstance。
默认模式是standard。

模式有两类,
一类是 standard 和 singleTop ,另一类是 singleTask 和 singleInstance 。
有 standard 和 singleTop 启动模式的Activity可多次被实例化。
standard 是默认。系统总是在目标任务中创建Activity的一个新实例并且将intent按顺序放入到实例中。
singleTop 有条件的 。如果Activity的实例已经存在于目标任务的顶部,
则系统通过调用onNewIntent()方法将intent发送到该实例上,而不是创建Activity的一个新实例。
singleTask 系统在新任务的根上创建该Activity。
如果已经存在实例,则系统通过调用onNewIntent()方法来将intent发送到该Activity上,它允许在这个Activity为根的任务中创建新的Activity。
singleInstance 和 singleTask 一样,除了系统不启动任何其他Activity到持有实例的任务上,Activity总是单个的,而且是其任务的唯一成员。
相反,singleTask和singleInstance这两种模式下的Activity只能启动一个任务它们一直待在Activity栈的根上。此外,设备一次只保存Activity的一个实例。
standard和singleTop模式只在一个方面上是不同的。在satndard模式下,每次都会实例化一个Activity新实例来响应这个Intent,每个实例处理一个intent。与此相似的是,singleTop模式下的Activity的新实例也可被创建来处理新的intent。但是,如果目标任务在其栈的顶部已经有Activity的一个实例,则会使用这个已经存在的Activity的实例来处理这个intent(回调onNewintent()方法),而不会创建一个新实例。在其他情况下,如果singleTop模式下的Activity的一个已存在实例在目标任务中而非栈的顶部,或者如果它在栈的顶部而非目标任务中,就会创建一个新实例并将它压倒Activity栈顶上。
singleTask和singleInstance模式也同样存在不同的启动特性。singleTask模式下的Activity允许其他Activity成为它的任务的一部分,它总是在自身任务的根上,但是其他Activity可以被启动到该任务中。另一方面,singleInstance模式下的Activity不允许其他Activity成为其任务的一部分,它是任务中唯一的Activity。如果它启动了另一个Activity,则该Activity就被分配到不同的任务上,好比FLAG_ACTIVITY_NEW_TASK在intent中一样。
android:multiprocess
该属性表示Activity的实例是否可以运行在启动它的组件所在的应用程序进程中。
如果可以,则为true,否则为false。
默认值是false。
13. android:name
该属性表示Activity的类名,它是Activity的子类。
其属性值应该是一个标准的Java类名(如com.example.liyuanjing.ManiActivity)。
我们也可以将其标识为类的缩写,比如名称的首字母是一个点(例如.ManiActivity),
那么它就被追加< manifest />元素指定的包名,
从而变成com.example.liyuanjing.ManiActivity(假设包名为com.example.liyuanjing)。
这点完全由系统完成,我们不需要关心这个过程的细节,但这个属性是必须配置的,并且不提供默认值。
14. android:noHistory
这个属性用于设置在用户离开该Activity,并且它在屏幕上不再可见的时候,是否应该从Activity的堆栈中删除。
如果应该删除,则为true,否则为false,默认值是false。
true意味着Activity将不会留下历史痕迹,它将不会为任务而在Activity栈中保留数据,
所以用户将不能返回到Activity上。
15. android:permission
表示的是权限名称。
如果startActivity()或者startActivityForResult()的调用者还没有被授予指定的权限,则启动失败。
如果该属性没有设置,则< application />元素的 permission 属性设置的权限就应该应用到Activity中。
如果这两个属性都没有设置,则Activity就不会被权限保护。
16. android:process
该属性表示该Activity运行的进程名称。
通常,应用程序的所有组件在为应用程序而创建的默认进程中运行。
< application />元素的process属性可以为所有组件设置一个不同的进程,
但是每个组件可以覆盖这个属性的值,这样就实现了将应用程序部署在多个进程间。
如果分配该属性的名称是以冒号(:)开头,则在需要新进程并且Activity在该进程中运行的时候, 就会创建一个对于应用程序私有的新进程。
17. android:screenOrientation
该属性表示Activity显示的方向(比如纵向,横向),它是值可以是下表中的任意一个字符。
取值 说明
unspecified 默认值,根据重力感应选择方向
user 用户当前偏好的方向
behind 和Activity相同的方向
landscape 横向
portrait 纵向
reverseLandscape 与正常横向相反方向 的横向
reversePortrait 与正常纵向相反方向的纵向
sensorLandscape 只能是横向,但是可以根据重力感应来决定是正常的还是反转的横向
sensorPortrait 中能是纵向,但是可以根据重力感应来决定是正常的或者反转的纵向
sensor 方向由设备方向感应器来决定。显示的方向取决于用户是如何持有设备的;在用户翻转设备时,方向发生改变。有些设备在默认情况下不会翻转到所有4个可能的方向。要允许可翻转到所有4个方向,可以使用fullSensor。
fullSensor 方向由设备方向感应为4个方向中的任意一个而确定
nosensor 无感应模式
18. android:stateNotNeeded
该属性表明Activity是否能被终止以及是否能在还没有保存其状态的情况下成功重启。
如果Activity可以在不需要引用到之前状态的情况下就能被重启,则该属性为true;
如果需要引用到之前的状态才能被重启,则为false。默认值是false。

通常,在暂时关闭Activity之前,我们要调用onSaveInstanceState()方法来保存当前的Activity的状态。该方法在Bundle对象中存储Activity的当前状态,该对象在重启Activity时将会以参数的方式传给onCreate()方法。
如果该属性被设置为true,则onSaveInstanceState()就不会被调用,并且onCreate()会被传递null,这和Activity首次启动时所做的一样。
19. android:taskAffinity
该属性指明对该Activity有亲和力的任务。
有同样亲和力的Activity在概念上属于同一任务(默认情况下是应用程序所定义的任务)。
任务的亲和力是由其根Activity的亲和力所决定的。

  1. android:theme
    该属性是指为Activity定义一个整体主题风格资源的引用。
    所谓的风格包括字体种类,整体样式等。使用该属性可以使得我们的Activity在整体上更为统一,美观。
    如果没有设置该属性,则Activity继承将应用程序作为一个整体而设置的主题,具体可见元素的theme属性。如果theme属性也没有设置,则使用默认系统主题。
  2. android:windowSoftInputMode
    该属性表示Activity的主窗口如何与包含屏幕软键盘的窗口交互。
    设置该属性将影响两件事。
    软键盘的状态。当Activity获取输入焦点时,是否隐藏软键盘。
    对Activity主窗口的调整。
    该窗口是否被调整得更小一些来为软键盘腾出空间,或者它的内容是否被移动以便在部分窗口被软键盘覆盖时,使得当前焦点可见。该属性或者是下表的一个值,或者是state…值和adjust…值的组合。如果是多个值的组合,则使用(|)将其隔开。
0 0
原创粉丝点击