[基础知识]全面认识AndroidManifest.xml文件(三)
2014-10-31 23:41
351 查看
<application/>
android:allowTaskReparenting:
是否允许Activities从启动的Task移到同一affinity启动的Task中
软件A AA1Activity AA2Activity 软件B BB1Activity
BB1Activity启动AA1Activity 此时状态为Task1,再启动AA2Activity,一样的affinity时打开状态为Task1,否则为Task2
<activity/>的allowTaskReparenting属性可以覆盖
android:allowBackup:
是否允许备份,如果为false,即便整个系统备份也不能保存其数据
android:backupAgent:
实现备份代理的类名,应为全限定类名,例如com.example.project.MyBackupAgent,如果以句点开头,自动以AndroidManifest.xml中包名属性为前缀
android:debuggable:
是否可以运行debug模式,开发时设为true,发行时应该改为false,默认为false
android:description:
描述软件的String资源
android:enabled:
系统是否能够实例化组件
android:hasCode:
应用是否包含代码,默认为true,如果为false,系统启动时不会加载程序代码
android:hardwareAccelerated:
是否开启硬件加速渲染功能,来提升2D效果,如果设为true,minSdkVersion和targetSdkVersion必须为14或更高
android:icon:
应用所有组件的图画资源
android:killAfterRestore:
默认为true,全系统恢复操作完成后会关闭应用进程,三方程序没有必要设置此项属性
android:largeHeap:
应用第一次启动时是否分配更大的内存,应用应该更关注于减少所占用的内存
android:label:
应用所有组件的标签
android:logo:
默认没有logo,所有activities的logo
android:manageSpaceActivity
全限定名称的activity子类,可以管理应用所占的内存,必须以<activity/>声明
android:name:
全限定名称的application子类,此选项可选,多数时候用不到,系统会使用Base Application的实例
android:permission:
应用所需权限,组件可以覆盖此属性
android:persistent:
应用是否时刻保持运行,默认为false,只有一些系统级应用需要
android:process:
为应用指定进程名称,组件可以自定义,默认为<manifest/>中的包名
android:restoreAnyVersion:
如果为true,即便版本号不匹配,也会恢复数据,默认为false
android:requiredAccountType:
默认为null,无需账户就能运行,如果需要,必须符合account authenticator 类型,通过AuthenticatorDescription定义。如果需要用受限个人资料访问,必须在ndroid:restrictedAccountType中指定同样的属性。可能泄露个人资料,最好声明为null
android:supportsRtl:
应用是否支持right-to-left布局,默认为false,使用需要targetSdkVersion为17或更高
android:taskAffinity:
android:allowTaskReparenting需要用到的属性,默认为<manifest/>的包名
android:testOnly:
应用是否是为了测试,它可能向外暴露数据,引发安全漏洞,如果为true,应用只能通过adb安装
android:theme:
通过样式资源指定主题
android:uiOptions:
UI附加属性:none默认值,没有额外属性,splitActionBarWhenNarrow在水平空间受限的时候,会分成上下两部分Actionbar
android:vmSafeMode:
默认为false,true为禁用JIT编译器,只在VM环境下执行
<activity/>
声明一个Activity的子类,实现了应用的可视化界面部分,所有Activity必须在Androidmanifest.xml中声明,否则将不会被启动
android:allowEmbedded
指明该activity可以被其他activity的嵌入子元素启动。比如,activities用于穿戴设备自定义通知的必须声明此属性为true,这样就可以显示在属于其他进程的上下文流中,默认false
android:allowTaskReparenting
同上述<application/>中的定义,只是<activity/>中这个属性会覆盖<application/>中的,如未定义,则使用<application/>的android:allowTaskReparenting的值
android:alwaysRetainTaskState
默认为false,系统会在某些情况下重置为初始状态,true则系统会维持此activity的状态,比如在浏览器中,保证用户打开的标签不会丢失
android:autoMoveFromRecents
如果为true,则自动从最近打开的activities和task列表中移除,false不移除
android:clearTaskOnLanuch
如果为true,从主屏中重启时,除开处理根节点的Activity,其他的Activity都会被删除。默认为false,例如Activity P中启动Activity Q,这时用home离开,再回到P,看到的应该是Q,如果属性为true,则看到的是P,从P上启动的都被删除了。
android:configChanges
应当避免使用此属性,作为最后手段使用,如果使用此属性,则Activity不会在运行配置变化时,自动重启加载新配置,而是保持运行,并且调用onConfigurationChanged()
可以声明的属性有mcc移动网络国家号码|mnc移动网络网号|locale区域设置|touchscreen触摸屏改变,用不到|keyboard键盘模式改变,例如接入外部键盘|keyboardHidden用户键盘可访问性改变|navigation导航模式改变,用不到|screenLayout屏幕布局发生改变|fontScale全局字体缩放改变|uiMode用户模式改变,例如开启夜间模式|orientation朝向改变时,API 13或以上还应声明screenSize|screenSize可用屏幕尺寸,跟纵横比有关,所以朝向改变时也要声明此属性|smallestScreenSize物理屏幕尺寸改变,例如接入外部屏幕|layoutDirection,例如LTR变为RTL
android:documentLaunchMode
指定Activity每次启动时,新实例添加进task的方式。这个属性允许用户可以在最近打开的列表中呈现多种形式
intoExisting:重用现有的task,效果跟设置FLAG_ACTIVITY_NEW_DOUCUMENT但不设置FLAG_ACTIVITY_MULTIPLE_TASK一样
always:不管什么情况都创建一个新的task,效果跟同时设置上述两个属性
none:默认值,不创建新的task,除非设置了FLAG_ACTIVITY_NEW_TASK,显示single task
never:如果FLAG_ACTIVITY_NEW_DOUCUMENT与FLAG_ACTIVITY_MULTIPLE_TASK其中之一设置了,效果跟none一样
使用none或never属性需要定义launchMode=”standard”,如果未定义,则使用documentLaunchMode=”none”
android:enabled
默认为true可以实例化,false不可以,<application/>与<activity/>必须同时为true或default才可以实例化
android:excludeFromRecents
默认false这个activity初始化的task不排除在最近打开的列表中,true排除
android:exported
能否被其他应用组件启动,true如果可以就能启动,false只能同一应用启动或同user ID的应用启动
默认值则取决于activity是否包含intent filters,不包含则默认false,外部应用也无法知道类名,包含则true,可以被外部启动
android:finishOnTaskLaunch
activity再次启动时,是否应该结束当前的task,默认false不结束,如果为true则结束
如果此属性与allowTaskReparenting都为true,这个属性优先级更高,activity的affinity属性将被忽略
android:hardwareAccelerated
硬件加速渲染时,Canvas、Paint、Xfermode、ColorFilter、Shader和Camera中大多数操作都会被加速,使动画、滚动更平滑,改善整体效果
启动硬件加速需要更多系统资源与内存,非所有OpenGL 2D操作都会被加速,注意测试
android:icon
android:label
android:launchMode
指明Activity的启动模式,4种,默认为standard
针对多数Activity推荐使用standard和singleTop:
standard支持多实例,每次启动都会创建一个新的Activity实例来响应Intent请求
singleTop有条件支持,如果栈顶已有此Activity的实例,该实例响应Intent请求(onNewIntent()回调方法中调用),如果在栈顶但不是目标task或是目标task但不在栈顶,会创建新实例并压进栈中
特殊启动模式,通常不推荐:
singleTask不支持多实例,允许其他(standard或singleTop模式的)Activity作为它任务一部分
singleInstance不支持多实例,不允许其他Activity称为它的任务一部分
android:maxRecents
从这个Activity启动的task最多可以添加进最近历史的数目,默认16,可选1-50,25为低内存设备,0不可以,必须为整数
android:multiprocess
默认false,通常activity的实例会添加进定义它的应用进程中,这样所有activity实例都运行在同一进程中,如果为true,则可以运行在不同进程中,基本用不到
android:name
android:noHistory
默认false,用户离开该Activity且它在屏幕上不可见时,不从堆栈中删除,true则删除,没有历史轨迹,用户无法返回
android:parentActivityName
定义当用户按Up按钮时,将启动哪个Activity,API Level16引进,为支持API levels 4 -16,可以使用<meta-data/>标签指定”android.support.PARENT_ACTIVITY”
android:permission
startActivity()或startActivityForResult()必须的权限,如未设置,则使用<application/>的,如果也未定义,则无权限保护
android:process
通常应用所有组件都运行在包名所在的进程中,但每个组件可以定义该属性,把应用分离到多个进程中
如果该属性以”:”开始,则需要时创建一个私有的新进程,如果以小写字母开头,则运行在它命名的全局进程中,不同应用程序组件可以共享一个进程
android:screenOrientation
默认unspecified
user用户当前首选behind activity栈中紧靠它的activity的方向 landscape横向(屏幕宽比高长)portrait纵向(屏幕)reverseLandscape颠倒横向reversePortrait颠倒纵向
sensorLandscape横向(传感器决定是否颠倒)sensorPortrait纵向(传感器决定是否颠倒)sensor传感器决定,但有些设备不会在4个方向上都旋转fullSensor在4个方向都旋转
nosensor忽略传感器,系统使用unspecified设置相同的策略fullUser如果用户关闭传感器,跟user一样,否则跟fullSensor一样可以4方向旋转locked锁定为跟当前一样
android:stateNotNeeded
默认false,重启Activity时需要它之前的状态,true则无需之前状态,不调用onSaveInstanceState(),主屏Activity设置此属性为true,即便崩溃也能在缺省状态重启
android:taskAffinity
设置亲缘关系,默认一个应用所有Activity为同组。可以将Activity分到不同组,或不同应用中Activity放到同一任务中,未设置看<application/>的taskAffinitiy属性,都未设置,则为包名
android:theme
android:uiOptions
android:windowSoftInputMode
设置Activity主窗口与软键盘如何交互,影响以下两件事情
*当获得焦点时,软键盘是否显示
*当activity主窗口调整时,是调整activity窗口大小来适用软键盘,或当窗口一部分被软键盘覆盖时,内容区域平移以便可以显示焦点
此属性值必须为state|adjust
stateUnspecified默认设置,系统选择,或依赖主题设置
stateUnchanged当Activity到前台时,软键盘都保持最后的状态
stateHidden用户选择这个Activity而非返回到这个Activity,软键盘隐藏
stateAlwaysHidden获得输入焦点时,软键盘隐藏
stateVisible在合适的时机显示(用户浏览此activity主窗口时)
stateAlwaysVisible用户选择而非返回时,软键盘显示
adjustUnspecified默认设置,系统根据内容区域能够滚动自动选择,可滚动时,窗口自动调整以便可以在一个小区域内显示所有内容
adjustResize为适应软键盘,主窗口自动调整
adjustPan主窗口不调整,内容区域平移,很少适用,用户需要关闭软键盘以便与键盘遮住区域交互
<activity-alias/>
给targetActivity属性指定一个别名,紧跟需要别名的Activity
别名作为一个独立个体来代表目标Activity,拥有自己的Intent filter,可以指定android.intent.action.MAIN和android.intent.category.LAUNCHER标记
android:enabled
与<application/>的属性必须都为true,有一为false,别名不起作用
android:exported
android:icon
android:label
android:name
全限定类名,但可以随意,不关联实际类
android:permission
startActivity()或startActivityForResult()调用者无权限,将不会发送它的intent对象。会取代目标Activity设置的任何权限
android:targetActivity
通过别名激活的Activity的name属性
<service/>
android:enabled
android:exported
android:icon
android:label
android:name
android:permission
android:process
上述属性解释同<activity/>,android:permission中调用方法不一样,为startService()bindService() stopService()
<receiver/>
属性解释相同
<provider/>
android:authorities
URI权限列表,多个URI以分号分隔,URI必须遵循Java-style,比如com.example.provider.cartoonprovider
android:enabled
android:exported
minSdkVersion或者targetSdkVersio为16及以下,默认为true,任何应用都可通过URI获取它,17以上默认为false,只有同一user ID才可以获取
android:grantUriPermission
用于设定那些没有访问权限的访问者是否可以访问的临时权限,为true则临时权限可以读取、修改任何数据,false则只能<gran-uri-permission>子元素的数据子集
通常激活Intent对象的FLAG_GRANT_READ_URI_PERMISSION和FLAG_GRANT_WRITE_URI_PERMISSION标记来授予
android:icon
android:initOrder
相比同进程的其他内容提供器,实例化顺序,为一个整数,大的先初始化
android:label
android:multiprocess
默认false,给所有访问者都是一个实例,如果true,系统能够为每个客户端进程创建一个实例,避免进程间通信开销
android:name
android:process
android:readPermission
客户端查询需要的权限
android:syncable
是否与服务器数据同步,true为需要同步,false不需要
android:writePermission
修改数据所需权限
<provider/>可以包含<grant-uri-permission/>、<meta-data/>、<path-permission/>
<grant-uri-permission/>
提供授权数据子集
android:path
android:pathPattern
android:pathPrefix
path比较完整路径
pathPrefix只比较路径初始部分
pathPattern比较完整路径,但可以包含通配符* 例如a*匹配a、aa、aaa、….或点星号.*例如.*html匹配abchtml、chhtml、html…..
<path-permission/>
定义provider中具体数据子集路径及必要权限
android:path
定义完整URI路径,只能访问给这个路径所标识的具体数据
android:pathPrefix
可以访问所有URI初始部分相同的数据子集
android:pathPattern
支持通配符的URI路径
android:permission
读写其中数据所需权限,但readPermission和writePermission比这个优先级高
android:readPermission
android:writePermission
<meta-data/>
四大组件都可包含此属性
name-value对给父组件提供额外信息
value属性可以使用resource代替,最好使用resource
android:name
比如符合Java-style且唯一
android:resource
使用Bundle.getInt()得到资源ID
android:name
字符串 getString()
整数 getInt()
布尔值 getBoolean()
颜色值 getInt()
浮点值 getFloat()
<intent-filter/>
四大组件都可包含此属性,必须包含<action/>属性
android:icon
android:label
android:priority
当一个Intent对象可以被多个Activity响应时,系统选择优先级高的,对于Broadcast Receiver只有同步消息优先调用高优先级的,异步消息忽略此设置
<intent-filter/>中可以包含<action/>、<category/>、<data/>
<action/>
给Intent filter添加一个操作,可以包含一个或多个,ACTION_string定义了一些标准操作,自定义的最好以包名为前缀,
比如<action android:name=”com.example.project.TRANSMOGRIFY”/>
<catego
a77f
ry/>
给filter添加一个分类,标准分类用CATEGORY_name常量定义,自定义以包名为前缀,以保证唯一
<data/>
指定filter需要的数据规范,规范可以是mimeType、URI或mimeType和URI的组合
scheme://host:port/pathor pathPrefix or pathPattern
android:sheme
该属性结尾没有冒号,如果设置了mimeType,未设置sheme,系统假定为content:和file:
如果未指定scheme属性,其他URI属性都被忽略;未指定host属性,port与path属性都被忽略
android:host
Android框架中,主机名匹配大小写敏感,始终用小写字母指定
android:port
android:mimeType
大小写敏感,小写字母指定
android:path
android:pathPrefix
android:pathPattern
与Intent对象中的路径进行匹配
path比较完整路径
pathPrefix只比较路径初始部分
pathPattern比较完整路径,但可以包含通配符* 例如a*匹配a、aa、aaa、….或点星号.*例如.*html匹配abchtml、chhtml、html…..
<uses-library/>
指定应用所需的共享类库
android:name
指定类库名称
android:required
默认true,没有这个类库,不允许安装,false该类库存在则使用,不存在也允许安装,可以设计成没有该类库也能工作,比如通过反射机制判断该类是否存在
<application android:allowTaskReparenting=["true" | "false"] android:allowBackup=["true" | "false"] android:backupAgent="string" android:debuggable=["true" | "false"] android:description="stringresource" android:enabled=["true" | "false"] android:hasCode=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawableresource" android:killAfterRestore=["true" | "false"] android:largeHeap=["true" | "false"] android:label="stringresource" android:logo="drawableresource" android:manageSpaceActivity="string" android:name="string" android:permission="string" android:persistent=["true" | "false"] android:process="string" android:restoreAnyVersion=["true" | "false"] android:requiredAccountType="string" android:restrictedAccountType="string" android:supportsRtl=["true" | "false"] android:taskAffinity="string" android:testOnly=["true" | "false"] android:theme="resource ortheme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:vmSafeMode=["true" | "false"] > . . . </application>
android:allowTaskReparenting:
是否允许Activities从启动的Task移到同一affinity启动的Task中
软件A AA1Activity AA2Activity 软件B BB1Activity
BB1Activity启动AA1Activity 此时状态为Task1,再启动AA2Activity,一样的affinity时打开状态为Task1,否则为Task2
<activity/>的allowTaskReparenting属性可以覆盖
android:allowBackup:
是否允许备份,如果为false,即便整个系统备份也不能保存其数据
android:backupAgent:
实现备份代理的类名,应为全限定类名,例如com.example.project.MyBackupAgent,如果以句点开头,自动以AndroidManifest.xml中包名属性为前缀
android:debuggable:
是否可以运行debug模式,开发时设为true,发行时应该改为false,默认为false
android:description:
描述软件的String资源
android:enabled:
系统是否能够实例化组件
android:hasCode:
应用是否包含代码,默认为true,如果为false,系统启动时不会加载程序代码
android:hardwareAccelerated:
是否开启硬件加速渲染功能,来提升2D效果,如果设为true,minSdkVersion和targetSdkVersion必须为14或更高
android:icon:
应用所有组件的图画资源
android:killAfterRestore:
默认为true,全系统恢复操作完成后会关闭应用进程,三方程序没有必要设置此项属性
android:largeHeap:
应用第一次启动时是否分配更大的内存,应用应该更关注于减少所占用的内存
android:label:
应用所有组件的标签
android:logo:
默认没有logo,所有activities的logo
android:manageSpaceActivity
全限定名称的activity子类,可以管理应用所占的内存,必须以<activity/>声明
android:name:
全限定名称的application子类,此选项可选,多数时候用不到,系统会使用Base Application的实例
android:permission:
应用所需权限,组件可以覆盖此属性
android:persistent:
应用是否时刻保持运行,默认为false,只有一些系统级应用需要
android:process:
为应用指定进程名称,组件可以自定义,默认为<manifest/>中的包名
android:restoreAnyVersion:
如果为true,即便版本号不匹配,也会恢复数据,默认为false
android:requiredAccountType:
默认为null,无需账户就能运行,如果需要,必须符合account authenticator 类型,通过AuthenticatorDescription定义。如果需要用受限个人资料访问,必须在ndroid:restrictedAccountType中指定同样的属性。可能泄露个人资料,最好声明为null
android:supportsRtl:
应用是否支持right-to-left布局,默认为false,使用需要targetSdkVersion为17或更高
android:taskAffinity:
android:allowTaskReparenting需要用到的属性,默认为<manifest/>的包名
android:testOnly:
应用是否是为了测试,它可能向外暴露数据,引发安全漏洞,如果为true,应用只能通过adb安装
android:theme:
通过样式资源指定主题
android:uiOptions:
UI附加属性:none默认值,没有额外属性,splitActionBarWhenNarrow在水平空间受限的时候,会分成上下两部分Actionbar
android:vmSafeMode:
默认为false,true为禁用JIT编译器,只在VM环境下执行
<activity/>
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:configChanges=["mcc", "mnc", "locale", "touchscreen", "keyboard", "keyboardHidden", "navigation", "screenLayout", "fontScale", "uiMode", "orientation", "screenSize", "smallestScreenSize"] android:documentLaunchMode=["intoExisting", "always", "none", "never"] android:enabled=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawableresource" android:label="stringresource" android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"] android:maxRecents="integer" android:multiprocess=["true" | "false"] android:name="string" android:noHistory=["true" | "false"] android:parentActivityName="string" android:permission="string" android:process="string" android:relinquishTaskIdentity=["true" | "false"] android:screenOrientation=["unspecified" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape" | "sensorPortrait" | "userLandscape" | "userPortrait" | "sensor" | "fullSensor" | "nosensor" | "user" | "fullUser" | "locked"] android:stateNotNeeded=["true" | "false"] android:taskAffinity="string" android:theme="resource ortheme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] > . . . </activity>
声明一个Activity的子类,实现了应用的可视化界面部分,所有Activity必须在Androidmanifest.xml中声明,否则将不会被启动
android:allowEmbedded
指明该activity可以被其他activity的嵌入子元素启动。比如,activities用于穿戴设备自定义通知的必须声明此属性为true,这样就可以显示在属于其他进程的上下文流中,默认false
android:allowTaskReparenting
同上述<application/>中的定义,只是<activity/>中这个属性会覆盖<application/>中的,如未定义,则使用<application/>的android:allowTaskReparenting的值
android:alwaysRetainTaskState
默认为false,系统会在某些情况下重置为初始状态,true则系统会维持此activity的状态,比如在浏览器中,保证用户打开的标签不会丢失
android:autoMoveFromRecents
如果为true,则自动从最近打开的activities和task列表中移除,false不移除
android:clearTaskOnLanuch
如果为true,从主屏中重启时,除开处理根节点的Activity,其他的Activity都会被删除。默认为false,例如Activity P中启动Activity Q,这时用home离开,再回到P,看到的应该是Q,如果属性为true,则看到的是P,从P上启动的都被删除了。
android:configChanges
应当避免使用此属性,作为最后手段使用,如果使用此属性,则Activity不会在运行配置变化时,自动重启加载新配置,而是保持运行,并且调用onConfigurationChanged()
可以声明的属性有mcc移动网络国家号码|mnc移动网络网号|locale区域设置|touchscreen触摸屏改变,用不到|keyboard键盘模式改变,例如接入外部键盘|keyboardHidden用户键盘可访问性改变|navigation导航模式改变,用不到|screenLayout屏幕布局发生改变|fontScale全局字体缩放改变|uiMode用户模式改变,例如开启夜间模式|orientation朝向改变时,API 13或以上还应声明screenSize|screenSize可用屏幕尺寸,跟纵横比有关,所以朝向改变时也要声明此属性|smallestScreenSize物理屏幕尺寸改变,例如接入外部屏幕|layoutDirection,例如LTR变为RTL
android:documentLaunchMode
指定Activity每次启动时,新实例添加进task的方式。这个属性允许用户可以在最近打开的列表中呈现多种形式
intoExisting:重用现有的task,效果跟设置FLAG_ACTIVITY_NEW_DOUCUMENT但不设置FLAG_ACTIVITY_MULTIPLE_TASK一样
always:不管什么情况都创建一个新的task,效果跟同时设置上述两个属性
none:默认值,不创建新的task,除非设置了FLAG_ACTIVITY_NEW_TASK,显示single task
never:如果FLAG_ACTIVITY_NEW_DOUCUMENT与FLAG_ACTIVITY_MULTIPLE_TASK其中之一设置了,效果跟none一样
使用none或never属性需要定义launchMode=”standard”,如果未定义,则使用documentLaunchMode=”none”
android:enabled
默认为true可以实例化,false不可以,<application/>与<activity/>必须同时为true或default才可以实例化
android:excludeFromRecents
默认false这个activity初始化的task不排除在最近打开的列表中,true排除
android:exported
能否被其他应用组件启动,true如果可以就能启动,false只能同一应用启动或同user ID的应用启动
默认值则取决于activity是否包含intent filters,不包含则默认false,外部应用也无法知道类名,包含则true,可以被外部启动
android:finishOnTaskLaunch
activity再次启动时,是否应该结束当前的task,默认false不结束,如果为true则结束
如果此属性与allowTaskReparenting都为true,这个属性优先级更高,activity的affinity属性将被忽略
android:hardwareAccelerated
硬件加速渲染时,Canvas、Paint、Xfermode、ColorFilter、Shader和Camera中大多数操作都会被加速,使动画、滚动更平滑,改善整体效果
启动硬件加速需要更多系统资源与内存,非所有OpenGL 2D操作都会被加速,注意测试
android:icon
android:label
android:launchMode
指明Activity的启动模式,4种,默认为standard
针对多数Activity推荐使用standard和singleTop:
standard支持多实例,每次启动都会创建一个新的Activity实例来响应Intent请求
singleTop有条件支持,如果栈顶已有此Activity的实例,该实例响应Intent请求(onNewIntent()回调方法中调用),如果在栈顶但不是目标task或是目标task但不在栈顶,会创建新实例并压进栈中
特殊启动模式,通常不推荐:
singleTask不支持多实例,允许其他(standard或singleTop模式的)Activity作为它任务一部分
singleInstance不支持多实例,不允许其他Activity称为它的任务一部分
android:maxRecents
从这个Activity启动的task最多可以添加进最近历史的数目,默认16,可选1-50,25为低内存设备,0不可以,必须为整数
android:multiprocess
默认false,通常activity的实例会添加进定义它的应用进程中,这样所有activity实例都运行在同一进程中,如果为true,则可以运行在不同进程中,基本用不到
android:name
android:noHistory
默认false,用户离开该Activity且它在屏幕上不可见时,不从堆栈中删除,true则删除,没有历史轨迹,用户无法返回
android:parentActivityName
定义当用户按Up按钮时,将启动哪个Activity,API Level16引进,为支持API levels 4 -16,可以使用<meta-data/>标签指定”android.support.PARENT_ACTIVITY”
android:permission
startActivity()或startActivityForResult()必须的权限,如未设置,则使用<application/>的,如果也未定义,则无权限保护
android:process
通常应用所有组件都运行在包名所在的进程中,但每个组件可以定义该属性,把应用分离到多个进程中
如果该属性以”:”开始,则需要时创建一个私有的新进程,如果以小写字母开头,则运行在它命名的全局进程中,不同应用程序组件可以共享一个进程
android:screenOrientation
默认unspecified
user用户当前首选behind activity栈中紧靠它的activity的方向 landscape横向(屏幕宽比高长)portrait纵向(屏幕)reverseLandscape颠倒横向reversePortrait颠倒纵向
sensorLandscape横向(传感器决定是否颠倒)sensorPortrait纵向(传感器决定是否颠倒)sensor传感器决定,但有些设备不会在4个方向上都旋转fullSensor在4个方向都旋转
nosensor忽略传感器,系统使用unspecified设置相同的策略fullUser如果用户关闭传感器,跟user一样,否则跟fullSensor一样可以4方向旋转locked锁定为跟当前一样
android:stateNotNeeded
默认false,重启Activity时需要它之前的状态,true则无需之前状态,不调用onSaveInstanceState(),主屏Activity设置此属性为true,即便崩溃也能在缺省状态重启
android:taskAffinity
设置亲缘关系,默认一个应用所有Activity为同组。可以将Activity分到不同组,或不同应用中Activity放到同一任务中,未设置看<application/>的taskAffinitiy属性,都未设置,则为包名
android:theme
android:uiOptions
android:windowSoftInputMode
设置Activity主窗口与软键盘如何交互,影响以下两件事情
*当获得焦点时,软键盘是否显示
*当activity主窗口调整时,是调整activity窗口大小来适用软键盘,或当窗口一部分被软键盘覆盖时,内容区域平移以便可以显示焦点
此属性值必须为state|adjust
stateUnspecified默认设置,系统选择,或依赖主题设置
stateUnchanged当Activity到前台时,软键盘都保持最后的状态
stateHidden用户选择这个Activity而非返回到这个Activity,软键盘隐藏
stateAlwaysHidden获得输入焦点时,软键盘隐藏
stateVisible在合适的时机显示(用户浏览此activity主窗口时)
stateAlwaysVisible用户选择而非返回时,软键盘显示
adjustUnspecified默认设置,系统根据内容区域能够滚动自动选择,可滚动时,窗口自动调整以便可以在一个小区域内显示所有内容
adjustResize为适应软键盘,主窗口自动调整
adjustPan主窗口不调整,内容区域平移,很少适用,用户需要关闭软键盘以便与键盘遮住区域交互
<activity-alias/>
<activity-alias android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawableresource" android:label="stringresource" android:name="string" android:permission="string" android:targetActivity="string" > . . . </activity-alias>
给targetActivity属性指定一个别名,紧跟需要别名的Activity
别名作为一个独立个体来代表目标Activity,拥有自己的Intent filter,可以指定android.intent.action.MAIN和android.intent.category.LAUNCHER标记
android:enabled
与<application/>的属性必须都为true,有一为false,别名不起作用
android:exported
android:icon
android:label
android:name
全限定类名,但可以随意,不关联实际类
android:permission
startActivity()或startActivityForResult()调用者无权限,将不会发送它的intent对象。会取代目标Activity设置的任何权限
android:targetActivity
通过别名激活的Activity的name属性
<service/>
<service android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </service>
android:enabled
android:exported
android:icon
android:label
android:name
android:permission
android:process
上述属性解释同<activity/>,android:permission中调用方法不一样,为startService()bindService() stopService()
<receiver/>
<receiver android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </receiver>
属性解释相同
<provider/>
<provider android:authorities="list" android:enabled=["true" | "false"] android:exported=["true" | "false"] android:grantUriPermissions=["true" | "false"] android:icon="drawable resource" android:initOrder="integer" android:label="string resource" android:multiprocess=["true" | "false"] android:name="string" android:permission="string" android:process="string" android:readPermission="string" android:syncable=["true" | "false"] android:writePermission="string" > . . . </provider>
android:authorities
URI权限列表,多个URI以分号分隔,URI必须遵循Java-style,比如com.example.provider.cartoonprovider
android:enabled
android:exported
minSdkVersion或者targetSdkVersio为16及以下,默认为true,任何应用都可通过URI获取它,17以上默认为false,只有同一user ID才可以获取
android:grantUriPermission
用于设定那些没有访问权限的访问者是否可以访问的临时权限,为true则临时权限可以读取、修改任何数据,false则只能<gran-uri-permission>子元素的数据子集
通常激活Intent对象的FLAG_GRANT_READ_URI_PERMISSION和FLAG_GRANT_WRITE_URI_PERMISSION标记来授予
android:icon
android:initOrder
相比同进程的其他内容提供器,实例化顺序,为一个整数,大的先初始化
android:label
android:multiprocess
默认false,给所有访问者都是一个实例,如果true,系统能够为每个客户端进程创建一个实例,避免进程间通信开销
android:name
android:process
android:readPermission
客户端查询需要的权限
android:syncable
是否与服务器数据同步,true为需要同步,false不需要
android:writePermission
修改数据所需权限
<provider/>可以包含<grant-uri-permission/>、<meta-data/>、<path-permission/>
<grant-uri-permission/>
<grant-uri-permission android:path="string" android:pathPattern="string" android:pathPrefix="string" />
提供授权数据子集
android:path
android:pathPattern
android:pathPrefix
path比较完整路径
pathPrefix只比较路径初始部分
pathPattern比较完整路径,但可以包含通配符* 例如a*匹配a、aa、aaa、….或点星号.*例如.*html匹配abchtml、chhtml、html…..
<path-permission/>
<path-permission android:path="string" android:pathPrefix="string" android:pathPattern="string" android:permission="string" android:readPermission="string" android:writePermission="string" />
定义provider中具体数据子集路径及必要权限
android:path
定义完整URI路径,只能访问给这个路径所标识的具体数据
android:pathPrefix
可以访问所有URI初始部分相同的数据子集
android:pathPattern
支持通配符的URI路径
android:permission
读写其中数据所需权限,但readPermission和writePermission比这个优先级高
android:readPermission
android:writePermission
<meta-data/>
四大组件都可包含此属性
<meta-data android:name="string" android:resource="resource specification" android:value="string" />
name-value对给父组件提供额外信息
value属性可以使用resource代替,最好使用resource
android:name
比如符合Java-style且唯一
android:resource
使用Bundle.getInt()得到资源ID
android:name
字符串 getString()
整数 getInt()
布尔值 getBoolean()
颜色值 getInt()
浮点值 getFloat()
<intent-filter/>
<intent-filter android:icon="drawable resource" android:label="string resource" android:priority="integer" > <action /> <category /> <data /> </intent-filter>
四大组件都可包含此属性,必须包含<action/>属性
android:icon
android:label
android:priority
当一个Intent对象可以被多个Activity响应时,系统选择优先级高的,对于Broadcast Receiver只有同步消息优先调用高优先级的,异步消息忽略此设置
<intent-filter/>中可以包含<action/>、<category/>、<data/>
<action/>
<action android:name="string" />
给Intent filter添加一个操作,可以包含一个或多个,ACTION_string定义了一些标准操作,自定义的最好以包名为前缀,
比如<action android:name=”com.example.project.TRANSMOGRIFY”/>
<catego
a77f
ry/>
<category android:name="string" />
</pre>
给filter添加一个分类,标准分类用CATEGORY_name常量定义,自定义以包名为前缀,以保证唯一
<data/>
<data android:scheme="string" android:host="string" android:port="string" android:path="string" android:pathPattern="string" android:pathPrefix="string" android:mimeType="string" />
指定filter需要的数据规范,规范可以是mimeType、URI或mimeType和URI的组合
scheme://host:port/pathor pathPrefix or pathPattern
android:sheme
该属性结尾没有冒号,如果设置了mimeType,未设置sheme,系统假定为content:和file:
如果未指定scheme属性,其他URI属性都被忽略;未指定host属性,port与path属性都被忽略
android:host
Android框架中,主机名匹配大小写敏感,始终用小写字母指定
android:port
android:mimeType
大小写敏感,小写字母指定
android:path
android:pathPrefix
android:pathPattern
与Intent对象中的路径进行匹配
path比较完整路径
pathPrefix只比较路径初始部分
pathPattern比较完整路径,但可以包含通配符* 例如a*匹配a、aa、aaa、….或点星号.*例如.*html匹配abchtml、chhtml、html…..
<uses-library/>
<uses-library android:name="string" android:required=["true" | "false"] />
指定应用所需的共享类库
android:name
指定类库名称
android:required
默认true,没有这个类库,不允许安装,false该类库存在则使用,不存在也允许安装,可以设计成没有该类库也能工作,比如通过反射机制判断该类是否存在
相关文章推荐
- [基础知识]全面认识AndroidManifest.xml文件(二)
- [基础知识]全面认识AndroidManifest.xml文件(三)
- [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
- C/C++基础知识点全面汇总(计算机2级考试,程序员考试 基础考点)
- [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
- JAVA基础-其全面详解Java基础知识(五)
- 防病毒基础知识:认识杀毒软件
- 全面认识桥接、交换和路由等相关知识以及网线和电话线
- [C#基础知识系列]专题十:全面解析可空类型
- [C#基础知识系列]专题十:全面解析可空类型 推荐
- XHTML教程,简单认识XHTML基础知识
- JAVA基础-其全面详解Java基础知识(一)
- AS3 Socket基础知识很全面
- HTML 基础标签实例(全面概况HTML的知识要点,这些一定要掌握)
- [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型 推荐
- JAVA基础-其全面详解Java基础知识(一)
- JAVA基础-其全面详解Java基础知识(三)
- JAVA基础-其全面详解Java基础知识(六)
- [C# 基础知识系列]专题十五:全面解析扩展方法