Docker 的優(yōu)點
815
2025-03-31
您好,我是碼農(nóng)飛哥,感謝您閱讀本文,歡迎一鍵三連哦。
本文會介紹Android中的核心組件Activity,重點介紹其生命周期
Android系列文章都在Android專欄中,歡迎小伙伴關(guān)注。
@[TOC]
往期回顧
??【Android精進之路-01】定計劃,重行動來學Android吧??
??【Android精進之路-02】安裝android studio,認識Android SDK,一步步學習??
??【Android精進之路-03】創(chuàng)建第一個Android應(yīng)用程序竟然如此簡單??
Activity組件是什么
Activity組件是Android的用戶接口程序,它充當了Android應(yīng)用程序與用戶的交互入口。可以將它比喻成Android管理員:需要在屏幕顯示什么,處理用戶的不同操作都需要由Activity來協(xié)調(diào)管理。比如用戶需要打電話,拍照等操作都可以通過Activity提供的交互接口來實現(xiàn)。
每個Activity都提供了用戶界面窗口(即屏幕)。一般情況下,該界面窗口會填滿整個屏幕,但是也可以比屏幕小或者浮在其他窗口之上。
一個Android應(yīng)用程序通常包含多個屏幕,即意味著有多個Activity,但是只能有一個Activity作為應(yīng)用程序的主Activity。這個主Activity就相當于Java應(yīng)用程序中的main函數(shù),是Android應(yīng)用程序啟動后用戶看到的第一個屏幕。
Android 應(yīng)用程序中的多個 Activity 可以直接相互調(diào)用以完成不同工作。 例如:
一個電子郵件的應(yīng)用程序中主Activity提供了顯示電子郵件收件箱的屏幕,可以從主Activity啟動其他Activity用于執(zhí)行寫郵件和打開郵件這類任務(wù)。
Activity的生命周期
一個Activity從被創(chuàng)建—>啟動–>暫停–>銷毀是一個完整的生命周期。當新的Activity被啟動的時候,之前的Activity就會停止,但是不會立馬被銷毀,而是被壓入到"后退棧(Back Stack)“的棧頂。這里的后退棧遵循"后進先出"的原則,當新啟動的Activity被使用完畢,用戶單擊"Back” 按鈕時,當前的Activity會被銷毀,而原先的Activity會被從"后退棧"中彈出并被激活。
Activity本質(zhì)上有三種狀態(tài):
運行狀態(tài):Activity運行于屏幕的最上層并且獲得了用戶焦點
暫停狀態(tài):Activity依然存在,但是沒有獲得用戶焦點。當前的Activity沒有被運行態(tài)的Activity遮擋住,用戶是可以看到其用戶界面的。
停止狀態(tài):當前的Activity完全被處于運行態(tài)的Activity遮擋住,其用戶界面完全不被用戶看見。如果Activity離開可見階段,長時間失去焦點,就很可能會被系統(tǒng)銷毀以釋放資源。當然,即使該Activity被銷毀掉,用戶對該Activity所做的更改也會被保存在Bundle對象中,當用戶需要重新顯示該Activity時,Android系統(tǒng)會根據(jù)之前保存的狀態(tài)信息將該Activity重建。
當Activity狀態(tài)發(fā)生改變時,都會通過狀態(tài)回調(diào)函數(shù)來通知Android系統(tǒng),開發(fā)人員可以通過這些回調(diào)函數(shù)對Activity進行進一步的控制。這些狀態(tài)回調(diào)函數(shù)由android.app.Activity 類提供。所有的Activity都必須要繼承android.app.Activity類或者它的子類。Activity的生命周期如圖1所示:
圖1是Android官方開發(fā)文檔上提供的圖,這里我翻譯了一下,提供了一個漢化版的圖供有需要的同學查看。
圖1和圖2 詳細的展示了Activity的生命周期。其主要有如下幾個流程:
當Activity啟動時:會調(diào)用 onCreate(),onStart(),onResume() 三個方法,使Activity處于運行狀態(tài),即在屏幕顯示并獲得用戶焦點。
當用戶切換到其他Activity時:該Activity會進入暫停狀態(tài),會調(diào)用onPause()方法,當用戶返回該Activity時會重新調(diào)用onResume()方法激活該Activity。
當用戶關(guān)閉該應(yīng)用,切換到其他應(yīng)用程序是會調(diào)用onStop(),onDestory() 方法,銷毀該Activity。
當該Activity長時間不顯示的話則調(diào)用 onStop()方法進入停止狀態(tài),用戶重新瀏覽該Activity時會調(diào)用onRestart(),onStart(),onResume() 三個方法,Activity重新進入運行狀態(tài)。
下面就用代碼演示一下:這里創(chuàng)建了一個名為MainActivity的簡單Activity。在每個回調(diào)方法中都打印了XXX執(zhí)行了,通過演示讓大家對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執(zhí)行了"); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart執(zhí)行了"); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume執(zhí)行了"); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause執(zhí)行了"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy執(zhí)行了"); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop執(zhí)行了"); } }
項目啟動之后的演示效果如下:
[video(video-ugN8SbXU-1632356560660)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=590741860)(image-https://ss.csdn.net/p?http://i2.hdslb.com/bfs/archive/71bf2f49d1a0b8ce0afa7da497e6401a4885020f.jpg)(title-Android的Activity生命周期的演示)]
這里介紹一下每個回調(diào)函數(shù):
總結(jié)
本文詳細介紹了Activity的生命周期,需要明確的是Activity是Android應(yīng)用程序與用戶交互的入口,是用戶與Android應(yīng)用程序交互的中樞。它有完整的生命周期。
Android
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。