一.什么是Activity?
简单点说,Activity就是就是给用户展示界面,能与用户进行交互的东西。Activity是Android应用的重要组件之一(另外三个是Service,BroadcastReceiver,ContentProvider)。Android应用的多个Activity组成Activity栈,当前活动的Activity位于栈顶。
二.创建.配置Activity
1.创建Activity
创建一个Activity只要继承Activity类或Activity类的子类即可。如:
package com.example.activity; import com.example.component.R; import android.app.Activity; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//设置该Activity要显示的View,就是要展示给用户的界面 }
2.配置Activity
Activity创建好后要在AndroidMenifest.xml中的activity标签中进行配置,
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.component" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:persistent="true" android:theme="@style/AppTheme" > <activity android:name="com.example.activity.MainActivity" android:exported="false" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:launchMode="singleTask" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.activity.OtherActivity" android:label="新的Activity" android:launchMode="singleTask" > </activity> </application> </manifest>
Activity通常指定以下几个属性:
name:该Activity实现类的类名。
icon:该Activity对应的图标。
label:该Activity对应的标签。
exported:Activity是否允许被其他应用调用。
launchMode:指定该Activity的加载模式:standard,singleTop,singleTask,singleInstance。默认采用standard。
1.standard:每次创建Activity都会在Task栈顶创建一个新的Activity,不会创建新的Task栈。
2.singleTop:每次创建Activity时,先检查Task栈顶的那个Activity是不是要启动的那个,如果是就使用该Activity,不创建新的Activity,否则就创建新的Activity。
3.singleTask:每次创建Activity时,先检查Task栈是否存在该Activity,不存在就创建新的Activity。存在就判断该Activity是否位于栈顶,不在栈顶就把他上面的 Activity移出Task栈,使其进入栈顶,在栈顶的话就直接使用。例如:要从home页进去的几个页面,一下子回到home页,而且按返回会退出客户端,这是可以把home页的Activity的加载模式设为singleTask。
4.singleInstance(不推荐使用):如果要启动的Activity不存在,会先创建一个新的Task,在创建要启动的Activity,并把它加入新的Task栈的栈顶。存在的话,无论该Activity在那个应用,那个Task栈中,系统都会把该Activity转到前台。当要再次启动该Activity时,如果上次启动的那个实例还没有退出,系统就会把还没退出的那个实例转到前台,而不创建新的Activity,这样Activity就可能没有处于初始状态,Activity里的变量的值不可知。
Activity还要指定一个或多个intent-filter(意图过滤器)去过滤哪些Intent能激活该Activity。
<intent-filter> <action android:name="android.intent.action.MAIN" /> 指定该Activity为程序的入口,一个程序通常会包含多个Activity, 但只有一个Activity会作为程序的入口 <category android:name="android.intent.category.LAUNCHER" /> 在程序列表中显示 </intent-filter>
三.Activity的生命周期
四.启动和关闭Activity
Activity之间的跳转主要通过Intent控制。
1.Activity启动其他Activity的方法:
startActivity(Intent intent)
startActivityForResult(Intent intent,int requestCode)
2.关闭Activity的方法:
finish(): 结束当前Activity
finishActivity(int requestCode): 结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity