Activity可以說是Android應(yīng)用最常見的組件之一,同時(shí)Activity又是Android的四大組件之一,由此可見Activity對(duì)Android學(xué)習(xí)者來說是多么重要。
先看看谷歌官方的API文檔

可見Activity下面還是有很多的子類的。
- Activity
- AccountAuthenticatorActivity(實(shí)現(xiàn)賬戶管理界面的Activity)
- ActivityGroup(這個(gè)類在API 13中已經(jīng)被廢棄,推薦使用Fragment和FragmentManager代替)
- TabActivity(同樣,此類在API 13中已經(jīng)被棄用,現(xiàn)在推薦用Fragment代替)
- AliasActivity(別名Activity,后面會(huì)說明)
- ExpandableActivity(實(shí)現(xiàn)可展開列表的Activity)
- FragmentActivity(操作Fragment,要使用Fragment,就要繼承此Activity)
- ActionBarActivity
- ListActivity
- LuncherActivity(列表界面的Activity,點(diǎn)擊item,啟動(dòng)相應(yīng)的Activity)
- PreferenceActivity(實(shí)現(xiàn)程序參數(shù)設(shè)置、存儲(chǔ)界面的Activity)
- NativeActivity(通過使用這種Activity,可以無(wú)需Java也可以開發(fā)Android程序)
Activity的配置
要使用Activity,那就必須先在AndroidManifest.xml中配置Activity才行。其實(shí),現(xiàn)在的Android Studio的功能強(qiáng)大,在你創(chuàng)建Activity時(shí),Android Studio已經(jīng)自動(dòng)地幫我們完成一系列的事,例如,在AndroidManifest.xml中配置基本的屬性。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
配置Activity是在<application> </application>標(biāo)簽中配置的。其中有以下幾個(gè)屬性
- name(名字)
- icon(圖標(biāo))
- lable(標(biāo)題)
- exported(是否可被其他應(yīng)用調(diào)用)
- lunchMode(加載模式)
- inter-filter(用于指定該Activity可以響應(yīng)的Intent)
Activity生命周期
引用谷歌官方API文檔的圖

可以看到,Activity的啟動(dòng)涉及了onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()、onDestrory()七個(gè)方法
當(dāng)其他Activity來到前景時(shí),本Activity會(huì)進(jìn)入onPause();
當(dāng)Activity變?yōu)椴豢梢姇r(shí),Activity會(huì)變?yōu)閛nStop();
如果重新進(jìn)入該Activity,會(huì)進(jìn)入onRestart(),
當(dāng)Activity處于完成或者被銷毀的狀態(tài),就會(huì)進(jìn)入onDestroy()。
了解最基本的Activity生命周期,才會(huì)對(duì)Activity有深入一點(diǎn)的了解,同時(shí),這又是Android的基礎(chǔ),面試的時(shí)候如果被問到,支支吾吾答不上的話,真的會(huì)被面試官大大的扣分。把基礎(chǔ)打扎實(shí),才能學(xué)得更深入、更好。
Activity加載模式
- standrad
- single Top(不在棧頂就重新創(chuàng)建)
- single Task(沒有就在棧頂創(chuàng)建;存在有的話,把Activity以上的全部彈出棧,使本Activity處于棧頂部)
- singleInstance(不存在的話,將會(huì)在全新的棧Task中創(chuàng)建Activity實(shí)例;存在的話,即使不在同一個(gè)應(yīng)用程序,不在同一個(gè)Task,都會(huì)把這個(gè)Activity顯示出來)