标签归档:Android

AndroidManifest.xml文件详解(compatible-screen)

语法(SYNTAX):

<compatible-screens>
<screenandroid:screenSize=[“small” | “normal” | “large” | “xlarge”]
android:screenDensity=[“ldpi” | “mdpi” | “hdpi” | “xhdpi”] />

</compatible-screens>

包含于(CONTAINED IN):

<manifest>

说明(DESCRIPTION)):

这个元素用于指定那些屏幕配置跟应用程序是兼容的。在应用的清单中只允许有一个<compatible-screent>元素的实例,但是它能够包含多个<screen>元素。每个<screen>元素指定一个特定的跟应用程序兼容的尺寸—密度组合。

Android系统不会读取<compatible-screen>清单元素(无论是在安装的时候,还是在运行的时候)。这个元素的信息只能被外部服务使用(如Google read more

Android Intents和Intent过滤器(二)

Intent对象解析

Intent能够被分成两组:

1.   用组件的名称把Intent对象明确的指向目标组件(在Intent对象的组件名字段指定目标组件名)。因为一般情况下其他应用的开发者不会了解目标组件的名字,所以通常针对应用程序的内部消息使用明确命名的Intent对象,如一个Activity启动一个下属服务或启动一个姊妹Activity。

2.   没有命名目标(Intent对象的组件名字段是空的)的隐式的Intent对象。隐式的Intent对象经常被用于激活其他应用程序中的组件。

Android系统把一个明确命名的Intent对象发送给目标类的一个实例。除了组件名以外,不再用Intent对象内任何其他信息来判断哪个组件应该获得这个Intent对象。

对于隐式的Intent对象,需要不同的分类。在缺少目标组件的情况下,Android系统必须查找最适合的组件(一个能够执行请求动作的Activity或Service,或者是一组能够响应广播通知的Broadcast read more

AndroidManifest.xml文件详解(category)

语法(SYNTAX):

<categoryandroid:name=”string“/>

包含于(CONTAINED IN):

<intent-filter>

说明(DESCRIPTION):

给一个过滤器添加一个分类的名称。有关Intent过滤器的详细说明以及过滤器中分类规范的作用,请看Intent and Intent Filters(http://www.13com.net/site/?p=128)

属性(ATTRIBUTES):

android:name

定义分类的名称。标准的分类是在Intent类中用CATEGORY_name常量来定义的。在定义这个属性值的时候,要用“andoid.intent.category.”来代替GATEGORY_,从而实现定义与常量的关联。例如:Intent类中的常量CATEGORY_LAUNCHER,在过滤器分类中的定义是:android.intent.category.LAUNCHER。

read more

Android Intents和Intent过滤器(一)

Android应用程序有三个核心组件—Activity、Service、Broadcast Receiver,Broadcast receiver是通过叫做Intent的消息来激活的。Intent消息是同一个应用程序或不同应用程序运行后,组件间进行绑定的一种能力。Intent对象本身是一个持有要执行操作的抽象描述的无源数据结构,或者在广播的情况下,经常用它来描述一些已经发生或正在发生的事情。给每种类型组件发送Intent对象都有其独立的机制:

read more

AndroidManifest.xml文件详解(application)

语法(SYNATX):

<applicationandroid:allowTaskReparenting=["true" | "false"]
android:backupAgent="string"
android:debuggable=["true" | "false"]
android:description="string resource"
android:enabled=["true" | "false"]
android:hasCode=["true" | "false"]
android:hardwareAccelerated=["true" | "false"]
android:icon="drawable resource"
android:killAfterRestore=["true" | "false"]
android:label="string resource"
android:logo="drawable resource"
android:manageSpaceActivity="string"
android:name="string"
android:permission="string"
android:persistent=["true"
read more

AndroidManifest.xml文件详解(activity-alias)

语法(SYNTAX):

<activity-aliasandroid:enabled=["true" | "false"]
 android:exported=["true" | "false"]
 android:icon="drawable resource"
 android:label="string resource"
 android:name="string"
 android:permission="string"
 android:targetActivity="string">
 . . .
</activity-alias>

被包含于(CONTAINED IN):

<application>

能够包含的元素(CAN CONTAIN):

<intent-filter>

<meta-data>

说明(DESCRIPTION):

这个元素用于给targetActivity属性所指定Activity设定一个别名,目标Activity必须跟别名Activity在同一个应用程序中,并且这个Activity必须在别名之前被声明。

read more

AndroidManifest.xml文件详解(activity)(四)

android:multiprocess

这个属性用于设置Activity的实例能否被加载到与启动它的那个组件所在的进程中,如果设置为true,则可以,否则不可以。默认值是false。

通常,一个新的Activity实例会被加载到定义它的应用程序的进程中,以便应用程序的所有Activity都运行在同一个进程中。但是,如果这个属性被设置为true,那么这个Activity的实例就可以运行在多个进程中,允许系统在使用它们的进程中来创建实例(权限许可的情况下),这几乎是从来都不需要的事情。

android:name

read more

AndroidManifest.xml文件详解(activity)(三)

android:launchMode

这个属性定义了应该如何启动Activity的一个指令。有四种工作模式会跟Intent对象中的Activity标记(FLAG_ACTIVITY_*常量)结合在一起用来决定被调用Activity在处理Intent对象时应该发生的事情,这四种模式是:

standard

singleTop

singleTask

singleInstance

默认的模式是standard。

read more

AndroidManifest.xml文件详解(activity)(二)

android:configChanges

这个属性列出了那些需要Activity进行自我处理的配置变化。当在运行时配置变化发生的时候,默认情况下,这个Activity会被关掉并重启,但是用这个属性声明一个配置,就会阻止Activity被重启。相反,这个Activity会保持运行,并且它的onConfigurationChanged()方法会被调用。

注意:应该避免使用这个属性,并且只把它作为最后的手段来使用。有关如何正确处理配置改变期间的重启,请阅读“处理运行是变化”(http://www.13com.net/site/?p=109)

下表中列出了这个属性的有效值,要设置多个值的时候,用“|”符号连接,例如:“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中被引入。

read more

Android应用资源—处理运行时改变(Handing Runtime Changes)

某些设备配置能够在运行期间进行改变(如屏幕的方向、键盘可用性、语言等)。当这样的改变发生时,Android会重启正在运行的Activity(onDestroy()回调之后,紧跟着调用onCreate()回调方法)。设计这种重启行为有助于应用程序通过重启,重新载入跟新设备配置相匹配的可选资源。

要正确的处理重启,重要的是要恢复Activity之前的生存周期状态,因此在Activity被销毁之前,Android会调用onSaveInstanceState()回调方法来保存应用程序相关的状态数据。这样在Activity的onCreate()或onRestoreInstanceState()被调用期间就可以恢复之前的状态了。

read more