1. ApiDemos
manifest.xml 中
<manifest>(清单)属性package="com.example.android.apis"指明此程序的名称。
<application> 属性 android:name="ApiDemosApplication" 是一个全局存储器,供各个Activity来共享数据。ApiDemosAppication的onCreate中使用PreferenceManager的setDefaultValues()来加载一个XML文件[即PreferenceManager.setDefaultValues(this, R.xml.default_values, false);]。
<activity android:name="ApiDemos"> //程序片断。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
上述配置代码<activity>的说明:action 说明一个行为的名称 , MAIN 表示新片断是Task中的第一个Activitity。
android:name = "android.intent.action.MAIN" ,其实它就是 Intent.ACTION_MAIN的值。
另外,<activity> 的 android:name 中类名, 是相对于manifest的package属性的,若Activity在package的子包中,则activity的android:name也要带上其前面的部分包名。
Q&A:
1. action 与 category有什么用?
An intent filter declares the capabilities of its parent component — what an activity or service can do and what types of broadcasts a receiver can handle.
即 filter 定义一个 component ( filter 的父标签 ) 的能力: 它能做什么 或 者接收什么类型的广播。
action 对于Provider与Receiver而言指示发生了什么(如:电池电量低,耳机插入,系统引导完成), 对于Activity和Service则是描述一个行为的名称(如 MAIN, 表示新片断是Task的第一个Activity [ Start up as the initial activity of a task, with no data input and no returned output. ])。
2. Activity 与 Task ?
Task是一个工作栈。 一般情况下Activity A进入Activity B中时,它们在同一个栈中,在B中按下Back返回时,会返回到A。
要使用startActivityForResult(),则A,B必须在一个Task中。
Android 为每个从Home启动的程序开辟一个新的栈(Task)。
3. Home 键与 Back 键的区别?
换下Home时,程序是否退出? 按下Back时呢?
程序运行时:
按下Home键,则当前程序不会退出,打开原程序,会返回到原来的页面。
按下Back键,连续几次,则退回到桌面,原来程序结束。
但是:对于有些程序,希望每次进入时都由其第一个Activity进入时( 如打电话程序),可以在 Activity标签下加下 android:launchMode = "singleTask" 属性。