`
Rainbow702
  • 浏览: 1076911 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类

AndroidManifest.xml配置文件选项详解

阅读更多

AndroidManifest.xml下的一些属性定义和用法:

----------------------------------------------------------------------------------------------------------------------------------

android:allowTaskReparenting        

 

         用法<application android:allowTaskReparenting="true/false"></application>

是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务。

用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里。

        如果这个特性没有被设定,设定到<application>元素上的allowTaskReparenting特性的值会应用到Activity上。默认值为“false”。

       一般来说,当Activity启动后,它就与启动它的Task关联,并且在那里耗尽它的整个生命周期。当当前的Task不再显示时,你可以使用这个特性来强制Activity移动到有着affinity的Task中。典型用法是:把一个应用程序的Activity移到另一个应用程序的主Task中。

       例如,如果e-mail中包含一个web页的链接,点击它就会启动一个Activity来显示这个页面。这个Activity是由Browser应用程序定义的,但是,现在它作为e-mail Task的一部分。如果它重新宿主到Browser Task里,当Browser下一次进入到前台时,它就能被看见,并且,当e-mail Task再次进入前台时,就看不到它了。

       Actvity的affinity是由taskAffinity特性定义的。Task的affinity是通过读取根Activity的affinity 决定。因此,根据定义,根Activity总是位于相同affinity的Task里。由于启动模式为“singleTask”和 “singleInstance”的Activity只能位于Task的底部,因此,重新宿主只能限于“standard”和“singleTop”模式。

----------------------------------------------------------------------------------------------------------------------------------

android:alwaysRetainTaskState

 

       用法<activity android:alwaysRetainTaskState="true/false"></activity>

        用来标记Activity所在的Task的状态是否总是由系统来保持——“true”,表示总是;“false”,表示在某种情形下允许系统恢复Task 到它的初始化状态。默认值是“false”。这个特性只针对Task的根Activity有意义;对其它Activity来说,忽略之。

        一般来说,特定的情形如当用户从主画面重新选择这个Task时,系统会对这个Task进行清理(从stack中删除位于根Activity之上的所有Activivity)。典型的情况,当用户有一段时间没有访问这个Task时也会这么做,例如30分钟。

       然而,当这个特性设为“true”时,用户总是能回到这个Task的最新状态,无论他们是如何启动的。这非常有用,例如,像Browser应用程序,这里有很多的状态(例如多个打开的Tab),用户不想丢失这些状态。

----------------------------------------------------------------------------------------------------------------------------------

android:clearTaskOnLanunch

 

         用法<activity android:clearTaskOnLanunch=”true/false”></activity>

         用来标记是否从Task中清除所有的Activity,除了根Activity外(每当从主画面重新启动时)——“true”,表示总是清除至它的根 Activity,“false”表示不。默认值是“false”。这个特性只对启动一个新的Task的Activity(根Activity)有意义; 对Task中其它的Activity忽略。

         当这个值为“true”,每次用户重新启动这个Task时,都会进入到它的根Activity中,不管这个Task最后在做些什么,也不管用户是使用 BACK还是HOME离开的。当这个值为“false”时,可能会在一些情形下(参考alwaysRetainTaskState特性)清除Task的 Activity,但不总是。

         假设,某人从主画面启动了Activity P,并从那里迁移至Activity Q。接下来用户按下HOME,然后返回Activity P。一般,用户可能见到的是Activity Q,因为它是P的Task中最后工作的内容。然而,如果P设定这个特性为“true”,当用户按下HOME并使这个Task再次进入前台时,其上的所有的 Activity(在这里是Q)都将被清除。因此,当返回到这个Task时,用户只能看到P。

         如果这个特性和allowTaskReparenting都设定为“true”,那些能重新宿主的Activity会移动到共享affinity的Task中;剩下的Activity都将被抛弃,如上所述。

-----------------------------------------------------------------------------------------------------------------------------------

android:configChanges

 

         当配置list发生修改时, 是否调用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".

         举例:在按下power键时,直接在应用程序里onPause处理就好。当app是竖屏时,这样处理没问题。但是当app是横屏时,按下power键,app会强制回到竖屏,并且会重新调用activity的onCreate。很多时候这不是预期结果,所以就会用到android:configChanges。

         在配置文件里设置android:configChanges=”keyboardHidden|orientation”,这样在屏幕方向改变的时候就不会重新调用activity的onCreate()方法,而是调用onConfigurationChanged(),然后在activity里面重在下。

@Override

public void onConfigurationChanged(Configuration newConfig){

         super.onConfigurationChanged(newConfig);

         if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

                   //横向

         }else{

                   //竖向

         }

}

-----------------------------------------------------------------------------------------------------------------------------------

android:enabled

 

         activity 是否可以被实例化

         用法:<activity android:enabled="true"></activity>

-----------------------------------------------------------------------------------------------------------------------------------

android:excludeFromRecents

 

         是否可被显示在最近打开的activity列表里

         用法:<activity android:excludeFromRecents="true"></activity>

----------------------------------------------------------------------------------------------------------------------------------

android:exported

 

         是否允许activity被其它程序调用

----------------------------------------------------------------------------------------------------------------------------------

android:finishOnTaskLaunch

 

         用来标记当用户再次启动它的Task(在主画面选择这个Task)时已经存在的Activity实例是否要关闭(结束)——“true”,表示应该关闭,“false”表示不关闭。默认值是“false”。

         如果这个特性和allowTaskReparenting都设定为“true”,这个特性胜出。Activity的affinity忽略。这个 Activity不会重新宿主,但是会销毁。

----------------------------------------------------------------------------------------------------------------------------------

android.icon

        

         用法:<application android:icon="@drawable/xx_icon"></application>,加在应用程序图标

----------------------------------------------------------------------------------------------------------------------------------

android:label

 

         定义了每个title栏的名称,但是优先级低于activity中的setTitle()

---------------------------------------------------------------------------------------------------------------------------------

android:launchMode

 

         用于指示Activity如何启动。这里有四种模式,与Intent对象中的Activity Flags(FLAG_ACTIVITY_*变量)共同作用,来决定Activity如何启动来处理Intent。它们是:

          "standard"

          "singleTop"

          "singleTask"

          "singleInstance"

          默认模式是“standard”。

         “standard”和“singleTop”为第一组,“singleTask”和“singleInstance”为第二组。

         第一组可以被实例化很多次。这些实例可以属于任何task并且可以位于activity stack的任何位置。典型的情况是,它们会进入调用startActivity()的Task(除非Intent对象包含 FLAG_ACTIVITY_NEW_TASK标志,在这种情况下会选择一个不同的Task——参考taskAffinity特性)。

--------------------------------------------------------------------------------------------------------------------------------

 

android:multiprocess

允许多进程

--------------------------------------------------------------------------------------------------------------------------------

android:name

 

activity的类名, 必须指定

 

-------------------------------------------------------------------------------------------------------------------------------

android:onHistory

是否需要移除这个activity当用户切换到其他屏幕时。 这个属性是 API level 3 中引入的

-------------------------------------------------------------------------------------------------------------------------------

 

android:permission

-------------------------------------------------------------------------------------------------------------------------------

android:process

一个activity运行时所在的进程名,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。<application>中的元素process属性能够为所有组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你将你的程序放在多进程中运行。 如果这个属性被分配的名字以:开头,当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。如果这个进程名以小写字母开头,这个activity将会运行在全局的进程中,被它的许可所提供。

--------------------------------------------------------------------------------------------------------------------------------

 

android:screenOrientation

 

activity显示的模式, "unspecified" 默认值 "landscape" 风景画模式,宽度比高度大一些 "portrait" 肖像模式, 高度比宽度大。 "user" 用户的设置 "behind" "sensor" "nosensor"

 

---------------------------------------------------------------------------------------------------------------------------------

 

android:stateNotNeeded

 

是否 activity被销毁和成功重启并不保存状态

 

----------------------------------------------------------------------------------------------------------------------------------

 

android:taskAffinity

 

activity的亲属关系, 默认情况同一个应用程序下的activity有相同的关系

 

--------------------------------------------------------------------------------------------------------------------------------

 

android:theme

 

activity的样式主题, 如果没有设置,则activity的主题样式从属于应用程序, 参见<application>元素的theme属性

---------------------------------------------------------------------------------------------------------------------------------

 

android:windowSoftInputMode

 

activity主窗口与软键盘的交互模式, 自从API level 3 被引入

 

原文地址:http://www.cnblogs.com/tt_mc/archive/2010/10/27/1862915.html

分享到:
评论

相关推荐

    android Manifest.xml详解

    `Manifest.xml` 是 Android 应用程序的核心配置文件之一,它定义了应用程序的基本结构和行为,包括应用的组件(如 Activity、Service 和 BroadcastReceiver 等)、权限声明、硬件需求等。在 `Manifest.xml` 中,每个...

    用于测试颜色的工程实例

    `AndroidManifest.xml`是每个Android应用程序的核心配置文件,它包含了应用的基本信息,如应用名称、图标、所需权限、活动声明等。在测试`colors.xml`的工程中,可能包含一个或多个活动(Activity),这些活动可能会...

    Android开发

    `AndroidManifest.xml`文件是Android应用程序的核心配置文件,它定义了应用的各个组成部分(如Activity、Service、BroadcastReceiver等)以及所需的权限等信息。主要作用包括: 1. **声明组件:** 每个组件都需要在...

    DELPHI XE7 安卓条码扫描图文详解

    在 `AndroidManifest.template.xml` 文件中添加 ZXing 的 Activity 配置信息,以便能够在 Delphi 应用程序中启动 ZXing 的相机功能。 5. **解决资源冲突** 在集成 ZXing 时可能会遇到资源冲突的问题,特别是在 `...

    android 项目开发详解代码

    一个标准的Android项目通常包括以下几个关键部分:`src/main/java`(包含Java或Kotlin源代码)、`res`(存放资源文件如布局、图片、字符串等)、`AndroidManifest.xml`(应用配置文件)以及`build.gradle`(构建脚本...

    opencv androidstudio开发

    修改包名和配置文件** - 在Android Studio中打开`ImageManipulationsActivity.java`和`AndroidManifest.xml`文件。 - 将文件中的包名修改为你在第7步记录下来的包名(例如`com.xiaoma.opencvtest`)。 - 在`...

    Android Studio应用开发实战详解随书源码

    `AndroidManifest.xml`是应用程序的重要配置文件,它声明了应用的基本信息,包括应用的名称、图标,以及所需的权限。通过查看源码中的`AndroidManifest.xml`,你可以了解书中示例应用是如何获取并使用系统权限的。 ...

    详解Android 7.0 Settings 加载选项

    1. 设置选项的加载:由XML文件(`dashboard_categories.xml`)转向`AndroidManifest.xml`中的`intent-filter`和`Action`。 2. 动态构建界面:通过`PackageManager`查询匹配的Activity,获取显示信息。 3. 用户界面...

    安卓apk开发GPT资源

    - **AndroidManifest.xml**:应用的配置文件,声明应用的组件(如活动、服务等)、权限需求、版本信息等。 - **Classes.dex**:包含Java字节码,由Dalvik虚拟机执行。多个`.class`文件会被编译成一个.dex文件。 ...

    Android文件目录及文件访问权限等详解Demo

    `GpsTest.iml`是IntelliJ IDEA或Android Studio项目的模块配置文件。 在实际开发中,我们需要了解如何使用这些文件来构建、配置和运行应用。例如,`build.gradle`中的`dependencies`块用于添加库依赖,`apply ...

    Android应用开发试题[文](20211012173847).docx

    【Android应用开发试题详解】 1. 手机操作系统:题目提到的选项中,Windows Vista并不是手机操作系统,而是桌面操作系统。Android、Windows Mobile和Apple iPhone iOS均为手机操作系统。 2. Android的VM虚拟机:...

    《大话Android应用开发实战》学习笔记

    - **AndroidManifest.xml**:Android应用程序的配置文件。 **6. res 目录的默认二级目录结构** - **drawable**:不同分辨率下的图像文件,例如: - drawable-hdpi:高分辨率图像文件,大小为72x72像素。 - ...

    Android学习指南中文版(安卓中文翻译)

    每个Android项目都需要一个名为`AndroidManifest.xml`的文件,该文件描述了应用程序的基本信息及其包含的所有组件。这个文件还定义了权限、使用的库以及其他重要的配置信息。 **1.6 Intent过滤器** Intent过滤器是...

    JoneCool-Android-MyDiary-master_android_androidstudio_Androidstu

    项目包含的文件夹和文件都是Android Studio工程的标准结构,包括`app`模块、`build.gradle`配置文件、`gradle-wrapper.properties`以及`.gitignore`等。 1. **Android Studio集成开发环境**:Android Studio是...

    蓝牙开发详解

    要开始蓝牙开发,开发者需首先在`AndroidManifest.xml`文件中声明必要的权限,如下所示: ```xml &lt;uses-permission android:name="android.permission.BLUETOOTH"/&gt; &lt;uses-permission android:name="android....

Global site tag (gtag.js) - Google Analytics