Android备忘-AndroidManifest.xml解析

引言
Android的Manifest文件解析,该文件是工程配置的核心,这个博客解析的比较全面,记录了http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html,写下读后感。
 
读后感
第一层:<manifest />
versionName为发布市场时候的显示
installLocation为安装的位置配置auto由系统自适应;preferExternal为优先SD卡,如果SD满了,就装在手机上;internalOnly必须装在手机上。
---
第二层:<Application />
<application  android:allowClearUserData=["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" >
</application>
主要是icon,label,theme。
name属性是设置公共包名,为了在组件中复用。
---
第三层:<Activity />
<activity android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "orientation", "screenLayout",
                                 "fontScale", "uiMode"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"] 
          android:permission="string"
          android:process="string"
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
          android:stateNotNeeded=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >  
alwaysRetainTaskState:该boolean属性设置程序在后台休眠(30分钟以后)再次唤醒以后,是否保持原来的状态,该属性只对跟Activity起作用。也即栈底。例如跟Activity的表现形式很负责,用户想一直保留起状态,就有这个必要
allowTaskRepareting:当应用程序后台,是否允许改Activity移动到自己Task栈顶。例如LBS应用要访问google地图,如果google地图的地图展示Activity设置改属性为true,则当LBS应用后台时候,在LBS应用栈顶的google地图展示Activity就回到了google地图的Task中,也即再次点击LBS应用,栈顶的地图被移除,同时点击Google地图,进去以后便是改Activity
clearTaskOnLaunch:当应用程序后台以后,再次启动是否清除跟Activity以外的Activity,这个清除Activity不会清除跟Activity以及对应的状态。该属性只对跟Activity起作用。
finishOnTaskLaunch:当应用程序后台,再次启动,这个Activity会被销毁
onConfigurationChanged: 在屏幕旋转的时候,可以避免走oncreate方法,不过该方法有版本限制。
launchMode:singleTask表示整个Activity栈中如果有,就用这个实例。singleInstance表示Taks之间的调用公用一个
---
第四层:<intent-filter>
<intent-filter  android:icon="drawable resource"
               android:label="string resource"
               android:priority="integer" >
      <action />
      <category />
      <data />
</intent-filter>
actoin:intent行为,如View,Main等
category:如Launcher
data:可以制定scheme,port等
---
第五层:<meta-data>
可以为每个组件定义参数,通过xml配置跟方便。
---
第六层:<activity-alias>
创建快捷方式
---
第七层:<service>
不解释
---
第八层:<receiver>
不解释
---
第九层:<provider>
不解释
---
第十层:<supports-screens>
支持的屏幕分辨率,一般都是android:anyDensity="true"来支持所有的屏幕。
---
第十一层:<uses-configuration> <uses-feature>
可以设置安装应用必须得硬件和软件支持,避免应用在不支持的设备上被安装
---
第十二层:<uses-sdk>
不解释
---
第十三层:<instrumentation>
探测和分析应用新能测试
---
第十四层:<permission>
<permission-tree/>在manifest中仅可以申明,可以通过PackageManagerService.addPermission/removePermission来动态进行权限设置
<permission />是自定义权限,可以在Activity的android:permission中使用申明的权限,当然不能随意申明,需要系统认定
 
该文章仅仅是其个记录作用,可以忽略。
posted @ 2013-03-05 17:25  TavenWang  阅读(308)  评论(0)    收藏  举报