AndroidManifest.xml文件详解(activity)(二)
android:configChanges
这个属性列出了那些需要Activity进行自我处理的配置变化。当在运行时配置变化发生的时候,默认情况下,这个Activity会被关掉并重启,但是用这个属性声明一个配置,就会阻止Activity被重启。相反,这个Activity会保持运行,并且它的onConfigurationChanged()方法会被调用。
注意:应该避免使用这个属性,并且只把它作为最后的手段来使用。有关如何正确处理配置改变期间的重启,请阅读“处理运行是变化”(http://blog.csdn.net/fireofstar/article/details/7456363)
下表中列出了这个属性的有效值,要设置多个值的时候,用“|”符号连接,例如:“locale|navigation|orientation”
值 |
说明 |
mcc |
IMSI移动国家编码改变时要进行自我处理---系统发现了一个新的SIM卡,并且更新了MCC。 |
mnc |
IMSI移动网络编码改变时要进行自我处理---系统发现了一个新的SIM卡,并且更新了MNC |
locale |
语言环境发生变化时要进行自我处理---用户选择了一种用于显示文本的新语言。 |
touchscreen |
触屏发生变化时要进行自我处理。(这种情况通常不会发生) |
keyboard |
键盘类型发生变化时,要进行自我处理。例如用户插入了一个外部键盘 |
keyboardHidden |
键盘的可用性发生变化时,要进行自我处理。例如用户启用了硬件键盘。 |
navigation |
导航类型(轨迹球/方向板)发生变化时,要进行自我处理。这种情况通常不会发生。 |
screenLayout |
屏幕布局发生变化时,要进行自我处理。这可能是由被激活的不同的显示方式所导致的变化。 |
fontScale |
字体的缩放因子发生变化时,要进行自我处理。如用户选择了一个新的全局字体尺寸。 |
uiMode |
用户界面发生变化时,要进行自我处理。在把设备放入桌面/轿车内或夜间模式变化时,会导致这种情况发生。它在API级别8中被引入。 |
orientation |
屏幕的方向发生变化时,要进行自我处理。用户旋转设备时会发生这种变化。 注意:如果应用程序的目标API级别是13或更高的版本,那么还应该声明screenSize配置,因为设备在横向和纵向之间切换时,对应的尺寸也会发生变化。 |
screenSize |
当前有效的屏幕尺寸发生变化时,要进行自我处理。这种变化意味着当前可用的相对长、宽比的尺寸发生了变化,因此当用户在横向和纵向之间切换时,就会产生屏幕可用尺寸的变化。但是,如果应用程序是在API级别12或更低的版本上编译的,那么Activity就要始终自己来处理这种变化(这个配置的变化不会重启Activity,即使是运行在Android3.2或更高版本的设备上)。 这个设置在API级别13中被引入。 |
smallestScreenSize |
物理尺寸发生变化时,要进行自我处理。这种变化不关注屏幕方向的变化,只在实际的物理屏幕尺寸发生变化时才会发生,如切换到另一个显示器上的时候。这个变化对应smallestWidth属性的配置来进行改变。如果应用程序是在API级别12或更低的版本上编译的,那么Activity就要始终自己来处理这种变化(这个配置的变化不会重启Activity,即使是运行在Android3.2或更高版本的设备上)。 这个设置在API级别13中被引入。 |
所有这些配置的改变都会影响到应用中所能看到的资源值。因此,当onConfigurationChanged()方法被调用时,通常需要重新获取所有的资源(包括布局资源、可绘制资源等等),以便能够正确的处理这些改变。
android:enabled
这个属性用于设置Activity是否能够被系统实例化。如果设置为true,则可以被实例化,如果设置为false,则不能被实例化。默认值是true。
<application>元素有它自己的enabled属性,它的这个属性设置会用于应用程序中的所有组件,包括Activity。<application>和<activity>元素的这个属性必须要设置为true(默认情况下都是true),以便系统能够实例化Activity。否则Activity不能被实例化。
android:excledeFromRecents
这属性用于设置由该Activity所启动的任务是否应该被排除在最近使用的应用程序列表之外。也就是说,当这个Activity是一个新任务的根节点时,这个属性决定了这个任务适应要显示在用户最近使用的应用程序列表中。如果设置为true,则这个任务会被排除在列表之外,如何设置为false,则应该包含在最近使用的应用列表中。默认值是false。
android:exported
这个属性用于设置该Activity能否由另一个应用程序的组件来启动,如果设置为true,则可以启动,否则不能启动。如果设置为false,那么该Activity只能被同一个应用程序中的组件或带有相同用户ID的应用程序来启动。
它的默认值要依赖与该Activity是否包含了Intent过滤器。如果没有任何过滤器,则意味着该Activity只能通过明确的类名来调用,这样就暗示者该Activity只能在应用程序内部使用(因为其他用户不会知道它的类名),因此在这种情况下,默认值是false。在另一方面,至少存在一个过滤器,则暗示着该Activity可被外部使用,因此默认值是true。
这个属性不是限制Activity暴露给其他应用程序的唯一方法。还可以使用权限来限制外部实体对该Activity的调用。
android:finishOnTaskLaunch
这个属性用于设置既存的Activity实例,在用户再次启动(在主屏上选择这个任务)它所属的任务时,是否应该被关闭。设置为true,则要关闭,否则不关闭,默认值是false。
如果这个属性和allowTaskReparenting属性都被设置为true,那么这个属性要优于其他属性,Activity的亲缘关系会被忽略。该Activity不会被转移父任务,而是被销毁。
android:hardwareAccelerated
这个属性用于设置该Activity是否应该启用硬件加速渲染。如果设置为true,则启用硬件加速,否则不启用。默认设置是false。
从Android3.0开始,硬件加速的OpenGL渲染器对应用程序可用,以便改善许多共同的2D图形操作的性能。当硬件加速渲染器被启用时,在Canva、Paint、Xfermode、ColorFilter、Shader和Camera中大多数操作都会被加速。这样会使动画、滚动更平滑,并改善整体的响应效果,即使应用程序没有明确要使用框架的OpenGL类库。因为启用硬件加速会增加系统的资源需求,所以应用程序会占用更多的内存。
要注意的是,不是所有的OpenGL 2D操作都会被加速。如果启用了硬件加速渲染,就要对应用程序进行充分测试,以确保所使用的渲染没有错误。
android:icon
这属性定义了代表Activity的一个图标。当Activity被要求显示到屏幕上时,这个图标会被显示给用户。例如,这个图标会显示在Launcher的窗口中,用于启动任务。这个图标经常会和label属性组合使用。
这个属性必须被设置为一个包含图片定义的可绘制资源。如果没有设置,就会使用给应用程序设置的图标来代替。
Activity的图标(或者是<application>元素设置的图标)也是所有的Activity的Intent过滤器的默认图标。
android:label
这个属性给Activity设置了一个可读的标签。当Activity要展现给用户的时候,这个标签会显示在屏幕上,它经常会跟Activity的图标一起来显示。
如果这个属性没有被设置,就会使用给应用程序设置的标签来代替。
Activity的标签(或者是<application>元素设置的标签)也是所有Activity的Intent过滤器的默认标签。
这个属性应该用一个字符串资源来设置。以便它能够在用户界面中用其他的语言来本地化。但是为了开发应用程序的便利,也可以用原始的字符串来设置。
AndroidManifest.xml文件详解(activity)(二)的更多相关文章
- [转]AndroidManifest.xml文件详解
转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...
- AndroidManifest.xml文件详解(uses-permission)
语法(SYNTAX): <uses-permissionandroid:name="string"/> 被包含于(CONTAINED IN): <manifest ...
- AndroidManifest.xml文件详解
本文为安全专家李洋的最新一篇专栏文章<AndroidManifest.xml文件详解>.AndroidManifest.xml是一个跟安全相关的配置文件,该配置文件是Android安全保障 ...
- AndroidManifest.xml文件详解(meta-data)
http://blog.csdn.net/think_soft/article/details/7567189 语法(SYNTAX): <meta-dataandroid:name=" ...
- AndroidManifest.xml文件详解(activity)(一)
<activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetai ...
- AndroidManifest.xml文件详解(activity)(五)
android:taskAffinity 这个属性用于跟Activity有亲缘关系的任务.带有相同亲缘关系的Activity,在概念上是属于相同任务的(从用户的角度看,它们是属于同一应用程序的).任务 ...
- AndroidManifest.xml文件详解(activity)(四)
android:multiprocess 这个属性用于设置Activity的实例能否被加载到与启动它的那个组件所在的进程中,如果设置为true,则可以,否则不可以.默认值是false. 通常,一个新的 ...
- AndroidManifest.xml文件详解(activity)(三)四种工作模式
android:launchMode 这个属性定义了应该如何启动Activity的一个指令.有四种工作模式会跟Intent对象中的Activity标记(FLAG_ACTIVITY_*常量)结合在一起用 ...
- 【Android 复习】:AndroidManifest.xml 文件详解
<?xml version="1.0" encoding="utf-8"?> <!-- package 包表示整个Android应用程序的主要 ...
随机推荐
- SugarCRM如何检查控制器权限?
SugarController定义了一个实例变量$hasAccess,布尔值,默认为true.该实例变量指示使用者是否有执行摸个action的权限: class SugarController{ /* ...
- hibernate的配置, 增删改查
路径:查找路径 实际上都是查找编译后的对应的路径,在bin文件夹中总 增删改必须开启事务才行 hibernate加载文件的两种方式 configure 1.引包 antlr-2.7.6.jar bac ...
- xcode9.2 objective-c install (mac 10.12.6)
1. xcode下载: https://download.developer.apple.com/Developer_Tools/Xcode_9.2/Xcode_9.2.xip 2. 点击默认安装即可 ...
- 基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- python ---用户输入
范例1:我们希望整数(整数),这就是为什么我们使用int()函数. x = int(raw_input("Enter x:")) y = int(raw_input("E ...
- Android:实现手势滑动的事件处理方法
首先得Activity必须实现OnGestureListener接口,该接口提供了关于手势操作的一些方法, onDown方法:onDown是,一旦触摸屏按下,就马上产生onDown事件 ...
- redis安装和配置(一)
Redis 的官方下载站是http://redis.io/download 怎么安装 Redis 数据库呢?下面将介绍Linux 版本的安装方法 步骤一: 下载Redis 下载安装包:wget htt ...
- Atitit.软件开发的几大规则,法则,与原则。。。attilax总结
Atitit.软件开发的几大规则,法则,与原则... 1. 设计模式六大原则 2 1.1. 设计模式六大原则(1):单一职责原则 2 1.2. 设计模式六大原则(2):里氏替换原则 2 1.3. 设计 ...
- Atitit。激活某个程序的api attilax总结
Atitit.激活某个程序的api attilax总结 1. 设置当前某窗口为当前窗口,有几个步骤要做:1.得到窗口句柄FindWindow2.切换键盘输入焦点AttachThreadInput3.显 ...
- PHP系统学习1
1.php变量 2.php引用变量 $name1=&$name2; 3.全局变量 4.魔术变量__LINE__,__FILE__,__FUNCTION__,__CLASS__,__METHOD ...