## 一、四大基本組件簡介:
Android四大基本組件:Activity、Service、Content Provider、Broadcast Receiver
Activity:活動視圖
一個負責與用戶交互的顯示界面的組件。
Service:服務:一個沒有界面、運行在后臺的服務。
Content Provider:內容提供者,一個應用程序可以使用Content Provider來共享自己的數據,另一個應用想要使用該應用提供的數據時,可以通過ContentResolver來訪問。
Broadcast Receiver:廣播接收者:廣播消息接收器,監聽的事件源是Android應用中的其他組件。
## 二、概括
Android是使用任務(Task)來管理活動的,一個任務就是一組放在棧里的活動的集合,這個棧也稱為返回棧,每當啟動一個新的活動,它就會入棧,并處于棧頂的位置,當一個活動finish時會銷毀活動,處于棧頂的活動會出棧。系統顯示的總是棧頂的活動。

## 三、活動的四個狀態
1)運行狀態:當一個活動位于返回棧的棧頂時,這時活動就處于運行狀態,**最不會被系統回收的就是運行狀態的活動**。
2)暫停狀態:當一個活動不再處于棧頂的位置,但仍然可見,彈出一個對話框或者一個不能占滿屏幕的活動都會導致前一個活動處于暫停狀態,**系統也不會輕易回收這樣的活動,除非是內存極低的情況(回收可見的活動都會造成極不好的用戶體驗)**
3)停止狀態:當一個活動不處于棧頂位置,且完全不可見的時候,就進入停止狀態,**當內存較低時系統會回收這樣的活動**
4)銷毀狀態:當一個活動從棧中移除后就編程銷毀狀態,**系統會回收這樣的活動**
## 四、活動的七大生命周期

1)onCreate() :當Activity第一次被創建時調用,完成活動的初始化操作。
2)onStart() :當用戶可以看到這個Activity時調用
3)onResume() :當獲得了用戶的焦點時,就是用戶點擊了屏幕
4)onPause() :當系統準備啟動或回復另一個活動時調用。在這個方法中將一些小號CPU的資源釋放,保存一些重要數據。
5)onStop() :當活動完全不可見是調用,當新啟動的活動時對話框式的,還處于可見時,該方法是不會被調用
6)onDestroy():活動被銷毀時調用
7)onRestart():當活動有停止狀態變為運行狀態時調用。
測試:
打開一個對話框式的活動:

打印:

當跳轉到另一個活動時:

## 五、四種啟動模式
1)standard:默認的模式,對于使用standard模式的活動,系統不管這個活動是否已經在返回棧中存在,每次啟動都會創建該活動的一個新的實例。

測試:

當前Mainactivity的Id是40f76d48
點擊第一個按鈕:Id變為40f8bdc0,說明新創建了一個活動

2)singleTop:當活動已經處在棧頂時,再啟動這個活動時直接使用它而不會再次創建這個活動的實例,可以很好的解決重復創建棧頂活動的問題

點擊啟動singleTop模式Activity時,跳到該界面,Id:40f979e8

再點擊該界面的按鈕,Id沒變,說明沒有創建新的實例。
3)singleTask:singleTop模式可以很好的解決重復創建棧頂活動的問題,但是當該活動沒有處于棧頂時,還有可能創建多個該實例,這時就可以用singleTask模式。當活動模式指定為singleTask模式時,每次啟動該活動時,系統會在返回棧中查看是否存在該活動實例,如果存在則直接使用,不存才創建。

測試:
點擊啟動singleTaskActivity,Id是:40fcd3a0

再點擊這個界面的按鈕,跳到主界面,注意這是這個singleTaskActivity不處在棧頂,但還在棧中。

再重復第一步操作,依然跳到這個界面,Id沒有變化。

4)singleInstance:指定為singleInstance模式的活動會啟用一個新的任務棧來管理這個活動。用這種模式的活動主要是為了供其他程序共享該活動,如瀏覽器的使用。

測試:
創建一個新的應用,包含一個用singleInstance模式的activity,運行,Id是40f78bc8

然后在主界面點擊啟動SingleInstance Activity,結果是從這個程序直接跳到該上面那個應用。
## 六、總結
掌握好活動的生命周期能清楚的知道activity當前在什么狀態,這樣我們就知道在什么狀態該做什么。活動的啟動模式各有特點,沒有最好的,只有最合適的,需要根據實際情況選擇合適的模式。
[源碼](http://download.csdn.net/detail/u011102153/9059255)