您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦,
本文會介紹Android中的核心組件Activity,重點介紹其生命周期
Android系列文章都在Android專欄中,歡迎小伙伴關注,
文章目錄
- 往期回顧
- Activity組件是什么
- Activity的生命周期
- 總結
- Java知識圖譜
- 寫在最后
往期回顧
??【Android精進之路-01】定計劃,重行動來學Android吧??
??【Android精進之路-02】安裝Android Studio,認識Android SDK,一步步學習??
??【Android精進之路-03】創建第一個Android應用程式竟然如此簡單??
Activity組件是什么
Activity組件是Android的用戶介面程式,它充當了Android應用程式與用戶的互動入口,可以將它比喻成Android管理員:需要在螢屏顯示什么,處理用戶的不同操作都需要由Activity來協調管理,比如用戶需要打電話,拍照等操作都可以通過Activity提供的互動介面來實作,
每個Activity都提供了用戶界面視窗(即螢屏),一般情況下,該界面視窗會填滿整個螢屏,但是也可以比螢屏小或者浮在其他視窗之上,
一個Android應用程式通常包含多個螢屏,即意味著有多個Activity,但是只能有一個Activity作為應用程式的主Activity,這個主Activity就相當于Java應用程式中的main函式,是Android應用程式啟動后用戶看到的第一個螢屏,
Android 應用程式中的多個 Activity 可以直接相互呼叫以完成不同作業, 例如:
一個電子郵件的應用程式中主Activity提供了顯示電子郵件收件箱的螢屏,可以從主Activity啟動其他Activity用于執行寫郵件和打開郵件這類任務,
Activity的生命周期
一個Activity從被創建—>啟動–>暫停–>銷毀是一個完整的生命周期,當新的Activity被啟動的時候,之前的Activity就會停止,但是不會立馬被銷毀,而是被壓入到"后退堆疊(Back Stack)“的堆疊頂,這里的后退堆疊遵循"后進先出"的原則,當新啟動的Activity被使用完畢,用戶單擊"Back” 按鈕時,當前的Activity會被銷毀,而原先的Activity會被從"后退堆疊"中彈出并被激活,
Activity本質上有三種狀態:
- 運行狀態:Activity運行于螢屏的最上層并且獲得了用戶焦點
- 暫停狀態:Activity依然存在,但是沒有獲得用戶焦點,當前的Activity沒有被運行態的Activity遮擋住,用戶是可以看到其用戶界面的,
- 停止狀態:當前的Activity完全被處于運行態的Activity遮擋住,其用戶界面完全不被用戶看見,如果Activity離開可見階段,長時間失去焦點,就很可能會被系統銷毀以釋放資源,當然,即使該Activity被銷毀掉,用戶對該Activity所做的更改也會被保存在Bundle物件中,當用戶需要重新顯示該Activity時,Android系統會根據之前保存的狀態資訊將該Activity重建,
當Activity狀態發生改變時,都會通過狀態回呼函式來通知Android系統,開發人員可以通過這些回呼函式對Activity進行進一步的控制,這些狀態回呼函式由android.app.Activity 類提供,所有的Activity都必須要繼承android.app.Activity類或者它的子類,Activity的生命周期如圖1所示:

圖1是Android官方開發檔案上提供的圖,這里我翻譯了一下,提供了一個漢化版的圖供有需要的同學查看,

圖1和圖2 詳細的展示了Activity的生命周期,其主要有如下幾個流程:
- 當Activity啟動時:會呼叫 onCreate(),onStart(),onResume() 三個方法,使Activity處于運行狀態,即在螢屏顯示并獲得用戶焦點,
- 當用戶切換到其他Activity時:該Activity會進入暫停狀態,會呼叫onPause()方法,當用戶回傳該Activity時會重新呼叫onResume()方法激活該Activity,
- 當用戶關閉該應用,切換到其他應用程式是會呼叫onStop(),onDestory() 方法,銷毀該Activity,
- 當該Activity長時間不顯示的話則呼叫 onStop()方法進入停止狀態,用戶重新瀏覽該Activity時會呼叫onRestart(),onStart(),onResume() 三個方法,Activity重新進入運行狀態,
下面就用代碼演示一下:這里創建了一個名為MainActivity的簡單Activity,在每個回呼方法中都列印了XXX執行了,通過演示讓大家對Activity的生命周期有一個更清晰的印象,
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate執行了");
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart執行了");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume執行了");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause執行了");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy執行了");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop執行了");
}
}
專案啟動之后的演示效果如下:
Android的Activity生命周期的演示
這里介紹一下每個回呼函式:
| 名稱 | 呼叫時間 |
|---|---|
| onCreate(Bundle savedInstanceState) | 創建Activity時呼叫,該方法通過引數savedInstanceState保存Activity的物件的狀態 |
| onStart() | Activity變為在螢屏上對用戶可見時呼叫 |
| onResume() | Activity開始與用戶互動時呼叫(無論是啟動還是重啟一個活動,該方法總是被呼叫) |
| onPause() | 當用戶切換到其他Activity時呼叫,該Activity會暫停,讓出CPU的呼叫 |
| onStop() | 當該Activity長時間不顯示時呼叫 |
| onRestart() | 重啟啟動已經停止的Activity時呼叫 |
| onDestroy() | Activity被完全從系統記憶體中移除時呼叫,該方法被呼叫可能是因為直接呼叫了finish()方法或者系統決定停止該活動并釋放資源 |
總結
本文詳細介紹了Activity的生命周期,需要明確的是Activity是Android應用程式與用戶互動的入口,是用戶與Android應用程式互動的中樞,它有完整的生命周期,
Java知識圖譜
因為學習安卓需要良好的Java基礎,這里推薦一下CSDN最新出的Java知識圖譜,屬實不錯! 《Java知識圖譜》,尺寸 870mm x 560mm,展開后有一張辦公桌大小,也可以折疊成一本書的尺寸,有興趣的小伙伴可以了解一下------掃描下圖中的二維碼即可購買,

我本人也已經用上了,感覺非常好用,圖譜桌上放,知識心中留,
我是碼農飛哥,再次感謝您讀完本文,
寫在最后
歡迎小伙伴可以點「下方卡片」👇👇👇關注博主,一起學習,一起進步,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/302541.html
標籤:其他
